模块

218 阅读3分钟

模块

1. 什么是模块

每一个单独的py文件,本质上都是一个模块。 封装模块的目的也是为了把程序代码和数据存放起来以便再次利用 模块简答来说就是一个Py文件,里面有类,函数和变量

1.2 使用模块的方法

1.2.1 import语句

用法:import + 模块名 例子:import time;import csv 如何调用模块中的函数,变量 用法:模块名.函数;模块名.变量

test.py中的内容如下:
a = '我是模块中的变量a'

def hi():
    a = '我是函数里的变量a'
    print('函数“hi”已经运行!')

class Go2:
    a = '我是类2中的变量a'
    def do2(self):
        print('函数“do2”已经运行!')
main.py中的内容如下:
import test

print(test.a)

test.hi()

A = test.Go2()
print(A.a)
A.do2()

运行结果:
#->  我是模块中的变量a
#->  函数“hi”已经运行!
#->  我是类2中的变量a
#->  函数“do2”已经运行!

1.2.2 from … import … 语句

用法: 从模块中导入一个指定的部分到当前模块(函数、变量、类名) 例子:from test import *,默认将test模块中的所有函数、变量进行全部导入

上例中的test文件不变,main中内容如下:
from test import a,hi,Go2

print(a)  # 打印变量“a”

hi()  # 调用函数“hi”

A = Go2()  # 实例化“Go2”类
print(A.a)  # 打印实例属性“a”
A.do2()  # 调用实例方法“do2”

#->  我是模块中的变量a
#->  函数“hi”已经运行!
#->  我是类2中的变量a
#->  函数“do2”已经运行!

对于from … import …语句要注意的是,没有被写在import后面的内容,将不会被导入。

1.2.3 if name == 'main

用法:当运行的文件是程序的入口时,则会执行if name=='main'下的语句,相反,当运行的文件作为模块是被其他程序导入时,代码if name=='main'下的代码则不会执行

第一种情况:

story.py里面的文件内容:
sentence = '从前有坐山,'

def mountain():
    print('山里有座庙,')

class Temple:
    sentence = '庙里有个老和尚,'
    def reading(self):
        print('在讲一个长长的故事。')

main.py里面的内容:
import story

if __name__ == '__main__':
    print(story.sentence)
    story.mountain()
    A = story.Temple()
    print(A.sentence)
    A.reading()
    print()

#->  输出结果:
#->  从前有坐山,
#->  山里有座庙,
#->  庙里有个老和尚,
#->  在讲一个长长的故事。

当xx.py文件被直接运行时,代码块(if下的代码块)将被运行,上面例子中“if name == 'main'” 直接被运行,所以打印了if下面的语句

第二种情况:

B.py里面的文件内容:
a = '我是模块中的变量a'

def hi():
    a = '我是函数里的变量a'
    print('函数“hi”已经运行!')

class Go1:  # 如果没有继承的类,class语句中可以省略括号,但定义函数的def语句括号不能省
    a = '我是类1中的变量a'
    @classmethod
    def do1(cls):
        print('函数“do1”已经运行!')

class Go2:
    a = '我是类2中的变量a'
    def do2(self):
        print('函数“do2”已经运行!')

if __name__ == '__main__':
    print('是主模块的时候才会执行以下语句:')
    print(a)
    hi()
    b = Go2()
    print(Go2.a)
    b.do2()

A.py里面的内容
import B

输出结果:
#->  无

当包含“if name == 'main'”的文件被当作模块被导入时,不会执行if下面的语句。

2.0 CSV模块

官方中文教程:yiyibooks.cn/xx/python_3…

读取文件:

import csv

with open("test.csv",newline = '')  as f:
    reader = csv.reader(f)
    #使用csv的reader()方法,创建一个reader对象
    for row in reader:
    #遍历reader对象的每一行
        print(row)

print("读取完毕!")

写入文件:

import csv
with open('test.csv','a', newline='',encoding='utf-8') as f:
    writer  = csv.writer(f)
    writer.writerow(['4', '猫砂', '25', '1022', '886'])
    writer.writerow(['5', '猫罐头', '18', '2234', '3121'])
#['4', '猫砂', '25', '1022', '886']
#['5', '猫罐头', '18', '2234', '3121']