python中一个py文件就是一个模块
从封装的角度看:
函数是对功能的封装
模块可以通过多个函数对不同的功能进行封装,还可以通过全局变量对数据进行封装
0.模块的分类: 系统模块(内置模块)、第三方库(别人写的)、自定义模块
1.模块的导入
a.import 模块名 / import 模块名 as 新的模块名 --- 可以通过'模块名.'的方式去使用这个模块中所有的全局变量
b.from 模块名 import 全局变量1 as 新名1,全局变量2 as 新名2,... --- 带入指定模块中指定的全局变量,导入后直接使用全局变量
注意: 重命名后,原名不能使用
===========导入方式1===========
# import keyword
# import random
# import math
# import test
#
# print(test.test1_a * 3)
# test.test1_a = 200
# print(test.test1_a)
#
# test.test1_func1()
============导入方式2==========
# from random import randint
# print(randint(10, 30))
#
# from test import test1_func1, test1_a
# test1_func1()
#
# print(test1_a)
============导入模块并重命名==========
# import test as TS
# print(TS.test1_a)
# TS.test1_func1()
# b = 'python'
# from test import b as t_b, test1_a as t_a
#
# print(b, t_b, t_a)
3.导入模块的原理:当代码执行到import或者from - import的时候,会自动将对应的模块中的代码全部执行一遍
同一个模块导入多次不会执行多次(放心的导入!)
# print('++++++++++++++')
# import test
# import test
# from test import test1_a
# import test2
#
# print(test1_a, test.test1_func1())
# print('++++++++++++++')
print('mudule:', __name__)
from test2 import yt_sum
print(yt_sum(1, 1))
import PIL
import requests
4.阻止导入: 将需要阻止被别的模块导入的代码放到以下if语句中
"""
if name == 'main':
需要阻止导入的代码段
原理: 每个模块都有一个属于自己的name属性,用来保存当前模块的模块名。默认情况下name的值就模块对应的py文件
的文件名。当我们直接运行某个模块的时候,对应的模块的name会自动变成'main',其他模块是默认值。
"""