python3 模块的导入和使用
""" 一个py文件就是一个模块 import 模块 from 模块 import 变量名 (不安全,不推荐) from 模块 import 函数名 (不安全,不推荐) from 模块 import 类名 (不安全,不推荐) 如果导入你自己的py模块的时候,Pycharm中模块名有大红线? 选中模块所在目录—>右击鼠标—>Mark directory as—>Sources Root """
import导入模块过程:
1、判断该模块是否被导入过,导入过,直接用,没导入过,新开辟一个内存,为该模块创建独立的名称空间
2、在新名称空间中,执行模块中的代码
3、创建模块名字,在当前模块可以使用模块名.模块中的变量、函数名、类名等
# a.py num = 10 def func(): print("我是a.py文件中的func") class Person: def __init__(self, name): self.name = name print("我是a.py文件")
# b.py import a num = 20 def func(): print("我是func") print(a.num) a.func() per_obj = a.Person("lily")
执行b.py的结果:
我是a.py文件 10 我是a.py文件中的func
判断该模块是否被导入过,导入过,直接用,没导入过,新开辟一个内存,为该模块创建独立的名称空间
# a.py num = 10 def func(): print(f"我是a.py文件中的func,num={num}") print("我是a.py文件")
# c.py import a a.num = 30 a.func()
# b.py import a import c a.func() a.num = 20 a.func()
执行b.py的结果:
我是a.py文件 我是a.py文件中的func,num=30 我是a.py文件中的func,num=30 我是a.py文件中的func,num=20
下图是分析导图
结论:
尽量不要修改模块中的成员的值。
不建议修改导入模块中的变量,以下是不建议的导入方式和操作
# a.py num = 10 def func(): print(f"我是a.py文件中的func,num={num}") print("我是a.py文件")
# b.py from a import num, func print(num) num = 20 func() print(num)
执行b.py的结果:
我是a.py文件 10 我是a.py文件中的func,num=10 20
if __name__ == '__main__': # 程序的入口
当做执行文件执行的时候,程序会执行这里
当做模块被导入的时候,程序不会执行这里
# a.py num = 10 def func(): print(f"我是a.py文件中的func,num={num}") if __name__ == '__main__': # 程序的入口 print("我是a.py文件")
# b.py import a
执行b.py的结果:空,不会打印出东西来。
细说__name__
当作为执行文件执行的时候,__name__==__main__
当作模块被导入的时候,__name__==模块名
# a.py num = 10 def func(): print(f"我是a.py文件中的func,num={num}") if __name__ == '__main__': # 程序的入口 print("我是a.py文件") print(__name__)
执行a.py的结果:
我是a.py文件 __main__
# b.py import a
执行b.py的结果:
a
__file__当前文件的绝对路径
# b.py import os print(__file__) # __file__当前文件的绝对路径 print(os.path.dirname(__file__)) # 获取文件的文件夹路径 print(os.path.dirname(os.path.dirname(__file__))) # 获取文件的上层文件夹路径
执行b.py的结果:
G:/python28/code/day06/整理笔记/python模块的使用/b.py G:/python28/code/day06/整理笔记/python模块的使用 G:/python28/code/day06/整理笔记
导入模块的顺序:
1.内置模块
2.第三方模块
3.自定义模块
安装第三方模块,推荐使用清华地址
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
切记:
自定义模块不要和系统模块和第三方模块重名。