一、模块的概念介绍
一个包含python代码的文件就是一个模块。
使用模块的作用:
1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方便维护 与管理
2.模块可以增加代码的重用率
二、创建模块
模块本身就是一个文件,所有py代码都可以在文件中直接书写。不过我们开发共用模块时,最好在模块中书写以下内容。
变量 模块中的属性值
函数 单独的功能
类 相似功能组合
模块测试代码 临时使用,被导入时不会执行
注意:
(1).模块名称遵循标识符。
(2).模块只有第一次被导入的时候执行,多次导入不会执行。
例:model01.py是一个简单的模块,这个模块的功能就是打招呼。
print(‘haha’)
name=‘zs’
def say_hello():
print(‘hello’)
print(‘你好,世界’)
print(name)
三、模块导入方式
使用模块的步骤:
1、导入模块
2、使用模块
-模块名.变量或者函数
注意:
1、第一次导入模块的时候,模块会从上往下执行一遍
2、模块可以导入多次,就不会再执行模块中的内容,不会再执行。
具体导入方式:
1、import 模块名
2、import 模块名 as 别名
3、import 模块名1,模块名2,… 一行导入多个模块。
4、from … import …
5、from … import … as 别名
6、from … import 功能1,功能2,…
7、from … import * 导入所有
1、import 模块名
例如导入模块 model01.py
model01.py内容为:
print('haha')
name='zs'
def say_hello():
print('hello')
print('你好,世界')
print(name)
导入过程:
# 导入模块
import model01
model01.say_hello()
# 又导入一次
name2=model01.name
print(name2)
运行结果:
haha
你好,世界
zs
hello
zs
2、import 模块名 as 别名
同样导入model01模块
import model01 as m
m.name
ret=m.say_hello()
print(ret)
运行结果:
haha
你好,世界
zs
hello
None
3、import 模块名1,模块名2,… 一行导入多个模块。
创建新的模块model02.py,其程序如下
def test():
print('hello,你好')
num=10
age=10
name='zs'
model01.py程序为:
print('haha')
name='zs'
def say_hello():
print('hello')
print('你好,世界')
print(name)
调用程序为:
import model01
import model02
model01.say_hello()
model02.test()
#也可以写成:
import model02,model01
model02.test()
model01.say_hello()
运行结果为:
haha
你好,世界
zs
hello
hello,你好
hello,你好
hello
4、 from … import …局部导入方式
当使用模块中的部分功能的时候,就可以使用局部导入方式。
from 模块 import 某个函数或者类。
作用:直接导入模块中的某个函数或者某个类或变量
from 模块名称 import 变量名(函数名或者变量名)
导入test函数
注意:导入test函数,只能使用test函数,不能使用其他内容
调用函数test()遵循就近原则
例如调用model02时:
model02.py,其程序如下
def test():
print('hello,你好')
num=10
age=10
name='zs'
导入model02.py的程序为
from model02 import test
def test():
print('demon07-test')
test() # 调用自己的,不会调用model02
运行结果是:
demon07-test
5、from … import … as 别名
# 起一个别名调用函数
from model02 import test as m
m() #通过别名调用函数
运行结果是:
hello,你好
6、from … import 功能1,功能2,…
from model02 import test,num
print(num)
test()
运行结果是:
demon07-test
7、from … import * 导入所有
from …import * 把原模块中中所有的不是以下划线(_)开头的名字都导入到当前位置,大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差。
model02.py,其程序如下
def test():
print('hello,你好')
num=10
_age=10
name='zs'
调用程序:
def test():
print('demon07-test')
from model02 import * # *表示所有的
test() #覆盖掉了本模块中的test(),执行被导入的模块中的test()函数
print(num)
# print(_age) #不能调用模块中的_变量
运行结果:
hello,你好
10
(1) all 属性
all = [变量1,变量2 …] 设置导入模块的功能。
model02.py,其程序如下
def test():
print('hello,你好')
num=10
_age=10
name='zs'
all=[‘num’,’_age’,‘name’]
#这样在另外一个文件中用from my_module import *就这能导入列表中规定的两个名字
from model02 import *
# print(height) #因为‘height’没有在'_all_'属性中,因此不能被使用
print(num)
test()
运行结果:
10
hello,你好