python-模块
- 简介
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py
模块可以被别的程序引入,以使用该模块中的函数等功能(这是程序多次复用的基础)
这也是使用 python 标准库的方法
- 导入模块
使用import导入模块后,解释器会在目录中搜索该模块文件
此处的目录存储在sys.path这个列表里面
import sys
sys.path
# ['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
第一个空串表示当前所在的目录,解释器会首先搜索当前目录
sys.path.append("D:\\test")
使用如上方式可以为搜索的位置添加一个目录
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
from modname import name1[, name2[, ... nameN]]
不会把整个模块导入到当前的命名空间中,它只会将模块里的函数引入进来
- 模块特性
模块除了方法定义,还可以包括可执行的代码
可执行代码一般用来初始化这个模块,只有在第一次被导入时才会被执行(剩余的就是一些可以被调用的方法或者函数)
一个模块被另一个程序第一次引入时,其主程序将运行
如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性(表示这个程序是在被调用还是自身在执行)来使该程序块仅在该模块自身运行时执行
每个模块都有一个__name__(双下划线)属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入
if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')
# $ python using_name.py
程序自身在运行
# $ python
# import using_name
# 我来自另一模块
内置的函数dir()可以找到模块内定义的所有名称
dir(sys) # ['__displayhook__', '__doc__', '__excepthook__', '__loader__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe', '_home', '_mercurial', '_xoptions', 'abiflags', 'api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getobjects', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettotalrefcount', 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions']
# 不给定模块名,则会返回当前定义的所有参数

浙公网安备 33010602011771号