Python模块 & Python包
1. 模块的导入
模块就是一个Python文件,里面有类、函数、变量,我们可以直接拿过来用(导入模块去使用)!
2. 自定义模块并导入
导入不同模块的同名功能时,后导入的会把先导入的给覆盖掉!
注意:当前执行文件必须要和模块文件在同一个目录下模块才能被导入!
两个重要的变量:__main__和__all__(控制 "from 模块 import *" 中*的内容) __all__ = ['类1', '函数1', '函数2', ...],写在模块文件开头!
if __name__ == "__main__": 后面是用于测试模块功能的!
3. 自定义Python包
__init__.py是一个特殊的文件,存在这个文件说明这是一个Python包,不存在说明这只是一个普通的文件夹!
调用层级以import后面的为准!如下图!
如果是上面一种方式,使用时必须使用包名.模块名.函数()
如果是下面一种方式,使用时可以直接使用模块名.函数()
此外,也可以在__init__.py文件中添加__all__变量,控制*,即控制导入哪些模块!
4. 安装第三方包
安装太慢怎么办?
在Pycharm中也可以安装包!
5. 综合练习
def reverse_str(s): return s[::-1] def substr(s, x, y): return s[x:y+1] if __name__ == '__main__': my_str = 'ABCDEFG' print(reverse_str(my_str)) print(substr(my_str, 1, 5))
def print_file_info(file_name):
f = None
try:
f = open(file_name, 'r', encoding='UTF-8')
print(f.read())
except Exception as e:
print(f"程序出错了, 出错信息: {e}")
else:
print("太好了, 程序没有出错!")
finally:
if f:
f.close()
def append_to_file(file_name, data):
f = open(file_name, 'a', encoding='UTF-8')
f.write(data)
f.close()
if __name__ == '__main__':
path = 'C:/Users/12192/Desktop/bill.txt'
append_to_file(path, 'END')
print_file_info(path)
from my_utils import file_util as fu from my_utils import str_util as su my_str = "Hi!您好!" print(su.substr(my_str, 3, 5)) print(su.reverse_str(my_str)) path = "C:/Users/12192/Desktop/bill.txt" fu.append_to_file(path, 'END') fu.print_file_info(path)