目录
模块的导入
import 模块名字
from 模块名称 import 函数/类/方法等
import math
print(id(math))#2035163768416
print(type(math))#<class 'module'> 模块
print(math)#<module 'math' (built-in)> 内置模块
print(math.pi)#3.141592653589793
print(dir(math))#['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
print(math.floor(9.9999))#9
print(math.ceil(9.001))#10
from math import pi
print(pi)
以主程序方式运行
在每个模块的定义中都包括一个记录模块名称的变量__name__,程序可以检查__name__变量,以确实他们在哪个模块中执行。
如果一个模块不是导入在其他程序中执行,则它可能在解释器的顶层模块中执行。顶级模块的__name__的值为__main__
calc2.py
def add(a, b):
return a + b
if __name__ == '__main__':
print(add(10,20))
demo.py
import calc2
print(calc2.add(10,20))
运行demo模块时,程序导入了calc模块,且calc模块只是被导入,并不是在顶层模块中执行,所以__name__的值不等于__main__,所以不会执行print(add(10, 20))的语句
Python中的包
包是一个分层的目录结构,它将一组功能相近的模块组织在一个目录下
包和目录的区别:包含__init__.py文件的目录称为包
包的导入:
import 包名.模块名
主程序:
import package.demo
package.demo.Messi()#Vamos Argentina
#as 后为该包内模块的别名
import package.demo as a
a.Messi()#Vamos Argentina
package中的demo模块
def Messi():
print('Vamos Argentina')