模块
模块定义:模块就是一个保存python代码的文件
import :导入一个整体的模块
from :从一个模块中获取一个特定的内容
reload:在不终止python程序的情况下,重新导入模块文件内容的方法。
备注:
一般导入模块的语句都是写在文件的顶部,一个模块只需导入一次就好。
交互模式下,os.getcwd()的路径 必须和这个模块文件的路径处于同一级,否则在import的时候会找不到
程序找包的过程: #1 会在当前目录下进行查找import 的模块文件 #2 去pythonpath下面的所有路径下,去找import 的模块文件 #3 最后 python的安装路径C:\Python36\Lib\site-packages的目录下去找 如果1/2/3/4都没有找到,则报没有这个模块 解决方案: 1 把模块文件和当前执行的python文件放到同一个文件夹下后,在执行 2 把模块文件的所在绝对路径添加到操作系统的环境变量中 3 或者 import sys sys.path.append("你的模块文件所在的绝对目录") import 你自己写的包名/模块名 # 注意这个要写在后面才能导入成功 4.把模块放在 ..Python36\Lib\site-packages 这个文件夹下面就可以直接 import 模块名 # 这个是用于包和模块的引用才用到,不要和 执行文件 py -3.6 D:\\test.py 搞混了,执行文件还是要写路径的 # 一般是用于文件里面引入另一个文件 包和模块的区别: 1 模块是个python文件 2 包是个目录,目录里面必须有__init__.py文件 3 包下面可以有子包和模块 # 包的查找方式和模块是一样的。 在__init__.py文件中写入的内容 __all__ = [‘a‘] # 允许导入的模块
def foo(): print("calling foo()...") aStr = "bar" anInt = 23 print("foo()‘s globals:", globals().keys()) print("foo()‘s locals:", locals().keys()) print("__main__‘s globals:", globals().keys()) print("__main__‘s locals:", locals().keys()) foo() 结果: __main__‘s globals: dict_keys([‘__name__‘, ‘__doc__‘, ‘__package__‘, ‘__loader__‘, ‘__spec__‘, ‘__annotations__‘, ‘__builtins__‘, ‘__file__‘, ‘__cached__‘, ‘foo‘]) __main__‘s locals: dict_keys([‘__name__‘, ‘__doc__‘, ‘__package__‘, ‘__loader__‘, ‘__spec__‘, ‘__annotations__‘, ‘__builtins__‘, ‘__file__‘, ‘__cached__‘, ‘foo‘]) calling foo()... foo()‘s globals: dict_keys([‘__name__‘, ‘__doc__‘, ‘__package__‘, ‘__loader__‘, ‘__spec__‘, ‘__annotations__‘, ‘__builtins__‘, ‘__file__‘, ‘__cached__‘, ‘foo‘]) foo()‘s locals: dict_keys([‘aStr‘, ‘anInt‘])
包
if __name__ == "__main__": print(100) # 只有当执行文件的时候才会执行 if 下面的语句 py -3.6 a.py # 当作模块导入的时候不会执行 import a
原文:https://www.cnblogs.com/su-sir/p/12513385.html