1. 模块
- 每一个以.py结尾的python程序都可以作为一个模块。
- 导入模块采用import 模块名,且每个导入各占一行。模块可供外界使用的包括全局变量、函数、类。同时一般导入模块的指令放在代码开始。
- 使用as定义模块别名,后续可以通过别名调用模块内内容:import 模块名 as 模块别名。
- from … import:从模块导入工具,在后续使用工具时不需要使用模块名.来调用。但是需要注意,如果两个模块中导入的是相同名字的工具,则后导入的会覆盖前导入的工具。为了防止覆盖,可给其中一个利用as起一个别名。
- 如果想从某个模块中导入全部工具,并且后续不想使用模块.来调用,则可以使用:from … import * 代码。但是这样难以避免覆盖工具的问题,如果有多个模块则不推荐使用。
- 模块的搜索顺序:现在本文件所在的目录内寻找,如果没有则在系统目录中寻找,所以需要注意命名py文件不要和模块名重名。
- python中的每一个模块都有一个内置的属性,_file_,可以查看模块所在的完整路径。
import random print(random.__file__)
- 如果一个文件被当做模块被导入,模块文件内没有缩减的代码在导入时会全部被执行一遍。
- _name_ 属性:在模块内部,可以通过判断该属性的值来判断是直接执行的模块还是通过其他文件调用的改模块。如果__name__ = “__name”,表示是直接执行的该模块。
2. 包
- 包是一个包含多个模块的特殊目录,目录下有一个特殊的文件“_init_.py”。在使用是通过import 包名就可以导入多个模块。包名的命名方式和变量相同,小写字母和下划线。
- 使用方法:
- 新建 directory,然后在其下新建文件“_init_.py”
- 新建 python package 即可
- 要想在外界使用包中的内容,需要在文件“_init_.py”中指定对外界提供的模块列表。其中.表示当前目录。
from . import receive from . import send
3. 文件
- 文件类型:文本文件和二进制文件。其中二进制文件表示不能被文本编辑器打开的文件。
- 操作文件的步骤:打开文件,读或写文件,关闭文件。
- 操作文件的函数/方法(一个函数三个方法):
其中,open的参数是文件名且区分大小写,如果文件存在就返回文件对象,如果文件不存在则抛出异常,read函数将文件的全部内容读出并返回,close方法必须要执行,否则浪费资源影响后续的操作。需注意:方法执行后会将指针移向文件最后。所以无法通过read连续读取文件内容,使用open,指针在文件开头,使用read,指针移到文件末尾。 - 在文件实操时遇到问题,就是无法读取中文txt文件。
- 打开文件的方式(open)
- 默认以只读的方法打开。在使用时一般只是用前三个,后三个会使得指针频繁移动。并且需要注意:如果为了更容易识别中文,一般在open中增加一个使用encoding=utf-8参数
- 按行读取文件内容(readline)
一行一行读取,读取完一行,指针移到下一行。 - 复制文件内容实例:
(小文件)
(大文件)file_c = open("测试") file_v = open("测试-备份", "a") text_c = file_c.read() file_v.write(text_c) file_c.close() file_v.close()
file_c = open("测试") file_v = open("测试-备份", "a") while True: text_c = file_c.readline() if not text_c: break file_v.write(text_c) file_c.close() file_v.close()
4. eval()函数
- 可以接受一个字符串并将其当成有效的表达式来进行计算返回计算结果。(可以看做是去除了字符串的双引号)
- _import_(“os”).system(“终端命令”),可以进行文件的删除增加等等操作。