模块就是一系列功能的集合体, 而函数是某一功能的集合体, 因此模块可以看成是一堆函数的集合体
impoort time
time.方法
使用time模块中的方法优点: 通过time.方法
使用方法, 因此不存在变量名和方法名冲突
缺点: 每次使用方法都要加上time.
前缀
from time import sleep
一次导入多个方法:
from time import time, sleep
一次导入全部方法:
from time import *
time.
前缀现在有两个.py文件
# m1.py
from m2 import y
x = 10
print('m1:', x+y)
# m2.py
from m1 import x
y = 20
print('m2:', x+y)
我们现在执行m1.py文件, 结果: ImportError: cannot import name ‘y‘
from m2 import y
代码, 创建m2模块空间并会执行m2.py代码from m1 import x
代码, 创建m1模块空间并执行m1.py代码from m2 import y
代码print(‘m1:‘, x+y)
报错我们可以通过定义函数来解决这个问题, 因为定义函数只检测语法不执行代码
# m1.py
def func():
from m2 import y
x = 10
func()
print('m1:', x+y)
# m2.py
def func():
from m1 import x
y = 20
print('m2:',x+y)
模块的搜索路径顺序
内存中已经导入的模块
自定义模块(环境变量)
执行文件 : 用来被执行使用
模块文件 : 用来被导入使用
现在我们定义一个module.py模块文件
def func():
print('from func')
func()
我们再定义一个script.py执行文件
from module import func
我们现在运行script.py文件, 只是想导入func方法, 结果: from func
解决上述问题, 我们可以将module.py改造为:
def func():
print('from func')
if __name__ == '__main__':
func()
当module.py文件为模块文件时候, __name__
= 文件名, 当module.py为执行文件时, __name__ == ‘__main__‘
原文:https://www.cnblogs.com/bigb/p/11592406.html