模块的导入
#方法一:import 模块名; 模块名.功能
import math
print(math.sqrt(9))
#方法二: from 模块名 import 功能1, 功能2...; 功能调用(不需要书写模块名.功能)
from math import sqrt
print(sqrt(9))
# 方法三:from 模块名 import *; 功能调用(不需要书写模块名.功能)
from math import *
print(sqrt(9))
定义别名
# 1. 模块别名
import time as tt
tt.sleep(2)
【time.sleep(2)--注意当定义别名之后只能使用别名,所有此行代码出错】
print('hello')
# 2. 功能别名
from time import sleep as sl
sl(2)
print('hello')
制作模块
注意:自己的文件名不能和已有模块名重复,如果重复导致模块无法使用
# 需求:一个函数 完成任意两个数字加法运算
def testA(a, b):
print(a + b)
# __name__是系统变量,是模块的标识符,值是:如果是自身模块值是__main__, 否则是当前的模块的名字
if __name__ == '__main__':
testA(1, 1)
使用自己定义的模块:
#1. 导入模块
import my_module1
# 2. 调用功能
my_module1.testA(2, 2)
模块的定位顺序
# 2. 当使用from xx import 功能 导入模块的功能的时候,如果功能名字重复,导入的时候后定义或后导入的这个同名功能
# 场景 time.sleep()
# def sleep():
# print('我是自定义的sleep')
#
#
from time import sleep
#
# 定义函数 sleep
def sleep():
print('我是自定义的sleep')
#
sleep(2)#注意此行会调用自己定义的同名函数,但是自己定义的函数没有参数,程序报错
拓展: 名字重复
#问题:import 模块名 是否担心 功能名字重复的问题 -- 不需要
import time
print(time)
time = 1#这个变量覆盖了导入的模块
print(time)
# 问题:为什么变量也能覆盖模块? -- 在Python语言中,数据是通过 引用 传递的。
__all__列表
module2.py
# 定义多个功能,把某个功能添加到__all__
__all__ = ['testA']
def testA():
print('testA')
def testB():
print('testB')
使用module2
from module2 import *
testA()
testB()#出错,因为testB函数没有添加到all列表,只有all列表里面的功能才能导入
提示下节内容:包