【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回Python教程首页]
模块
模块是一个包含函数和变量的文件,其后缀名是.py。
import 语句
模块可以被别的程序通过import
方式引入,从而可以使用该模块中的函数等功能,提升代码复用性。这也是使用 python 标准库的方法。例如:
在support.py文件中写入如下代码:
# Filename: support.py
def sayHello(name):
print("Hello",name)
在test.py文件中写入如下代码:
# Filename: test.py
#导入support模块
import support
#通过“模块名.方法名”的格式调用模块里的方法
support.sayHello("Mary")
在终端执行命令python3 test.py
,输出结果:
Hello Mary
也可以同时引入多个模块,语法格式:import mpdule1,module2,...,modulen
。无论引入的模块有多少个,调用模块的方法必须加上模块名,例如module.function
,例如:
在odd.py中写入如下代码:
# Filename: odd.py
def is_odd(n):
return n%2==1
在printnum.py中写下如下代码:
# Filename: printnum.py
def printme(n):
print("This number is odd:",n)
在test2.py中写下如下代码:
# Filename: test2.py
#导入odd和printnum模块
import odd,printnum
l = [1,2,3,4,5,6]
for num in l:
if odd.is_odd(num): #判断l中的每个元素是否为奇数
printnum.printme(num) #如果是奇数,则调用printnum模块输出
在终端执行命令python3 test2.py
,输出结果:
This number is odd: 1
This number is odd: 3
This number is odd: 5
注意:无论引入的模块有多少个,调用模块的方法时必须加上模块名。如果不加模块名,会出现下列报错信息:
Traceback (most recent call last):
File "test2.py", line 7, in <module>
if is_odd(num): #判断l中的每个元素是否为奇数
NameError: name 'is_odd' is not defined
from…import... 语句
from...import...
语句可以导入某一个模块的指定函数,与import语句不同在于,其调用模块的方法时不需要加模块名。如:
# Filename : support.py
def sayHello(name):
print("Hello",name)
def sayHi(name):
print("Hi",name)
语句from support import sayHello
可以只引入support
模块中的sayHello
函数;语句from support import *
可以引入support
模块的所有函数,作用与import support
一致。如:
# Filename:test3.py
from support import sayHello
sayHello("Mary") #引入的方法可以直接调用
sayHi("Tom") #调用未引入的方法会报错
输出结果:
Hello Mary
Traceback (most recent call last):
File "test3.py", line 3, in <module>
sayHi("Tom") #调用未引入的方法会报错
NameError: name 'sayHi' is not defined
也可以同时引入多个模块的多个方法,但因为方法前面不能添加模块名,所以当引入不同模块的相同方法名时,以最后引入的方法为准。如下:
# Filename:support2.py
def sayHello(name):
print("support2: Hello",name)
#Filename:test4.py
from support import sayHello,sayHi
from support2 import *
sayHello("Mary") #调用support2的sayHello方法,因为support2模块的sayHello方法是最后引入的
sayHi("Tom") #调用support的sayHi方法
sayHello("Mary") #调用support2的sayHello方法
输出结果:
support2: Hello Mary
Hi Tom
support2: Hello Mary
总结
利用import
语法可以引入模块,并通过module.function
语法调用模块的方法;利用from...import...
可以引入模块的某些方法,但是调用模块的方法时不需要加上前面的模块名,当引入不同模块的相同方法名时,以最后引入的方法为准。