一、模块
1.什么是模块
一个模块就是一个py文件,py文件的文件名就是模块名
2.在一个模块中使用另外一个模块的内容
1)哪些能用
所有在指定if语句外的全局变量
2)怎么使用:需要先导入模块
import 模块名 - 导入后可以使用全局变量,以'模块名.变量'来使用变量
from 模块名 import [变量1,变量2,变量3,...] []* - 导入后只能使用import后面指定的变量,但是可以直接使用变量,没有导入的变量不能使用。*可以使用全部变量,但是不推荐使用,容易引起冲突
# 实例1
import test
print(test.a) # 100
test.func1()
# 实例2
from test import a,b,c
print(a)
print(b)
# print(d) # 导入
# 实例3
from test import *
print(a)
print(b)
#print(d) # 导入
# 实例4:import 模块名 as 新模块名 - 给模块取别名
import test as test1
print(test1.a)
# 实例5:from 模块名 import 变量1 as 新模块名,变量2... - 给模块的变量取别名
from test import a as t_a,b
a = 50
print(a)
print(t_a)
二、导入模块原理
1.导入模块的原理
当使用import或者from-import导入模块的时候系统会自动将被导入的模块中所有的代码都执行一遍
2.重复导入
重复导入import的时候,系统会自动将被导入的模块中所有代码都执行一遍
3.选择性的执行被导入的内容
在被导入的模块中添加if语句,将不希望被其他模块执行的代码放到if语句中。
if name == 'main':
# 这个if语句中的代码在被别的模块导入的时候不会执行
原理:
每个模块都有一个属性:name,这个属性是用来保存当前模块的名字。name默认值就是模块名(模块对应的py文件的文件名)。当我们直接执行某个模块的时候,这个模块的name属性就会自动变成'main'
import test2
import test3
三、包的使用
1.什么是包
包就是一种特殊的文件夹(a.里面的文件都是py文件b.自带一个init.py的文件)
1)直接导入
# 实例1:通过包直接导入模块
from package1.shap import circle
def main():
r = 10
print(circle.area(10))
if __name__ == '__main__':
main()
# 实例2:通过包导入模块中的数据
from package1.shap.circle import area
def main():
r = 10
print(area(10))
if __name__ == '__main__':
main()
2)导入的定制
from package1.shap import c_area, r_area
print(c_area(10))
print(r_area(5,6))
test.py
a = 100
b = 12
c = 122
d = 34
def func1():
b = 20
print('函数1')
test1.py
a = 'test2'
print('test2开始执行!')
def fun2():
print('test2:函数2')
if __name__ == '__main__':
# 这个if语句中的代码在被别的模块导入的时候不会执行
print('if语句里面代码')
fun2()
print('test2结束执行!')
test2.py
print('if语句外面代码')
def main():
print('程序开始的代码')
if __name__ == '__main__':
# 这个if语句中的代码在被别的模块导入的时候不会执行
print('if语句里面代码')
main()