Python:模块

大数据学习路线图

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回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...可以引入模块的某些方法,但是调用模块的方法时不需要加上前面的模块名,当引入不同模块的相同方法名时,以最后引入的方法为准。