模块的引入
Python中要用关键字import
来引入某个模块,比如要引用模块math
,就要在文件的开头用import math
来引入。在调用math模块中的函数时,引用格式为:
模块名.函数名
调用函数必须加上模块名。
有些时候我们只需要用到模块中的某个函数,这时不需要导入整个模块,只需要导入该函数即可,语句格式如下:
from 模块名 import 函数名1,函数名2....
通过这种方式导入函数的时候,调用函数时就只能给出函数名,而不能给出模块名了。
自己定义模块
每个Python文件都可以看作一个模块,模块的名字就是Python文件的名字。所以我们完全可以自己写一个Python文件,就作为自己定义的模块。
内置模块
Python
中常见的内置模块如下:
os
模块:(文件和目录)用于提供系统级别的操作。
sys
模块:用于提供对解释器相关的操作。
json
模块:处理JSON字符串。
logging
: 用于便捷记录日志且线程安全的模块。
time&datetime
模块:时间相关的操作,时间有三种表示方式。
hashlib
模块:用于加密相关操作,代替了md5模块,主要是提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5
算法。
random
模块:提供随机数。
内置模块中的内置函数
dir()函数
dir()函数是一个排好序的字符串列表,包含的内容是一个模块里定义过的名字,包含在一个模块里定义的所有模块,变量和函数。例如:
# 导入内置math模块
import math
#调用math模块中的dir()函数
content = dir(math)
#输出math模块中所有模块、函数和变量的名字
print(content)
输出结果:
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs','factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin','sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
程序输出了math模块中所有模块、函数和变量的名字。特殊字符串变量__name__是指向模块的名字,变量__file__是指向该模块的导入文件名。
globals()和locals()函数
globals()
和locals()
函数可被用来返回全局和局部命名空间里的名字。如果在函数内部调用的是globals()
函数,那么返回的是所有在该函数里能够访问的全局名字。如果在函数内部调用的locals()
函数,返回的是能够在该函数里访问的局部命名。globals()
函数和locals()
函数的返回类型都是字典。所以名字们能用keys()
函数摘取。
reload()函数
当一个模块被导入到一个脚本中后,程序只会将模块顶层部分的代码执行一次。因此,如果我们想再次执行模块顶层部分的代码,可以用reload()
函数。该函数便会重新将之前导入过的模块导入。格式如下:
reload(module_name)
在这里,module_name要直接放模块名,而不能是一个字符串形式。例如我们想重载hello模块:
reload(hello)