""" 一个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")
执行结果:
我是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()
执行的结果:
我是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)
执行结果:
我是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
执行结果:空,不会打印出东西来。
""" 细说__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文件 __main__
# b.py import a
执行结果:
a