Python3 模块
740字约2分钟
2024-08-10
模块是一个包含所有你定义的函数和变量的文件,其后缀名是 .py
。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python
标准库的方法
import 语句
想使用 Python
源文件,只需在另一个源文件里执行 import
语句,语法如下
import module1[, module2[,... moduleN]
使用 import
导入 time
模块使用 sleep
功能(函数)
import time
time.sleep(5)
一个模块只会被导入一次,不管你执行了多少次 import
。这样可以防止导入模块被一遍又一遍地执行
from … import 语句
Python
的 from
语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下
from modname import name1[, name2[, ... nameN]]
使用 from
导入 time
的 sleep
功能(函数)
from time import sleep
sleep(5)
这个声明不会把整个 time
模块导入到当前的命名空间中,它只会将 time
里的 sleep
函数引入进来
from … import * 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明
from modname import *
使用 *
导入 time
模块的全部功能
from time import *
sleep(5)
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用 __name__
属性来使该程序块仅在该模块自身运行时执行
def test(a, b):
print(a + b)
if __name__ == '__main__':
test(1, 2)
运行输出如下
3
说明: 每个模块都有一个 __name__
属性,当其值是 __main__
时,表明该模块自身在运行,否则是被引入
说明:__name__
与 __main__
底下是双下划线, _ _
是这样去掉中间的那个空格。
dir() 函数
内置的函数 dir()
可以找到模块内定义的所有名称。以一个字符串列表的形式返回:
>>> import fibo, sys
>>> dir(fibo)
['__name__', 'fib', 'fib2']
>>> 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']
如果没有给定参数,那么 dir()
函数会罗列出当前定义的所有名称:
>>> a = [1, 2, 3, 4, 5]
>>> import fibo
>>> fib = fibo.fib
>>> dir() # 得到一个当前模块中定义的属性列表
['__builtins__', '__name__', 'a', 'fib', 'fibo', 'sys']
>>> a = 5 # 建立一个新的变量 'a'
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'sys']
>>>
>>> del a # 删除变量名a
>>>
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
>>>