1.创建、引用自己的模块
相同文件目录下:
引用,调用:import(一个python文件就是一个模块,在交互模式下,os.getcwd()的路径必须和这个模块文件的路径处于同一级,否则在import的时候会找不到),文件模式也可以调用。
pythonpath环境,存的是各种目录名称,如果python文件在pythonpath的某个文件夹下,那么import 的时候是可以自动找到的。
如果找不到,你需要用import sys。
sys.path.append("你的模块文件所在的绝对目录")
import 你自己写的包名/模块名
>>> import test
>>> print(test.x)
100
>>> print(test.add(1,2))
3
#python path:1 会在当前目录下进行查找import 的模块文件
#2去pythonpath下面的所有路径下,去找import 的模块文件
#3 去python的安装路径C:\Python36\Lib\site-packages的目录下去找
如果1/2/3都没有找到,则报没有这个模块
找不到的时候,你可以采取三个动作:
1 把模块文件和当前执行的python文件放到同一个文件夹下后,在执行
2 或者把模块文件的所在绝对路径添加到操作系统的pythonpath的环境变量中
3 或者
import sys
sys.path.append("你的模块文件所在的绝对目录")
import 你自己写的包名/模块名
2.包
包的查找方式和模块是一样的。
包和模块的区别:1.模块是个python文件。 2.包是个目录,目录里必须有__init__.py文件。3.包下面可以有子包和模块。
3.import XX 和from XX import *
把XX里面的全部变量、函数、类,引入到当前的命名空间当中
4.if __name__ == '__main__':
https://blog.csdn.net/longintchar/article/details/87120496
5.重新加载模块reload
reload()需要从imp中引入,表示重新导入已导入过的模块。
6.globals()和locals()函数
根据调用地方的不同,globals()和locals()函数可被用来返回全局和局部命名空间里的名字。 如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名。 如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字。 两个函数的返回类型都是字典。所以名字们能用keys()函数摘取。
>>> a=1000
>>> b=[1,2,3]
>>> def c():
... x=1
... y=2
... print(locals())
... print(globals())
...
>>> c()
{'x': 1, 'y': 2}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_fr
ozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__
': <module 'builtins' (built-in)>, 'a': 1000, 'b': [1, 2, 3], 'c': <function c at 0x0000
01C107782AF8>}