模块
通过模块(module)能够有逻辑地组织Python代码块,把相关代码分配到一个模块里能让代码更好用,更易懂,简单地说,模块就是一个保存了Python代码的文件,在模块里能定义函数、类、和变量。
在Python中,模块和C语言中的头文件以及Java中的包类似,例如在Python中调用sqrt()函数,必须要用import关键字引入math这个模块。
- 导入某个模块
在Python中用关键字import来导入某个模块,方式如下:
import 模块名
例如要引入模块math,就可以在文件最开始的地方用import math来导入
在调用模块的函数时必须这样调用:
模块名.函数名
例如:
import math
print("50的平方根:",math.sqrt(50))
为什么必须要加上模块名这样调用呢,因为可能 存在这样的一种情况,在多个模块中含有相同的函数,此时如果只是通过函数名来调用,解释器就无法知道到底到调用哪个函数,所以如果像上述导入模块名,调用函数必须加上模块名
有时候只需要用到模块中的某个函数,此时只要引入该函数即可,通过from语句实现
from 模块名 import 函数名1,函数名2...
通过这种方式引入,在带哦用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次会覆盖前一次引入。
也就是说,假如模块A中有函数func(),在模块B中也有函数func(),如果引入A中的func()在先,B中的func()在后,那么在调用func()函数的时候会执行模块B中的func()函数,
如果向一次性导入math中的所有东西,还可以通过以下语句实现:
from math import *
这是一种简单的导入模块中所有项目的方式,然而不建议过多地使用这种方式。
2.定义自己的模块
在python中,每个文件都可以作为一个模块,模块的名字就是文件的名字。
比如有这样的一个的文件fibo.py,在fibo.py中定义了3个函数add(),fib(),fib2():
"""
题目:斐波那契数列
版本:1.0
作者:假书生@
日期:2020年1月25日
"""
# 斐波那契数列模块
def fib(n):
a,b = 0,1
while b < n :
print(b,end=" ")
a,b = b ,a + b
print()
def fib2(n):
result = []
a,b = 0,1
while b < n :
result.append(b)
a,b = b ,a+b
return result
def add(a,b):
return a+b
那么在其他文件(例如test.py)中就可以如下使用:
#test.py
import fibo
加上模块名来调用函数:
fibo.fib(1000) #结果是1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
fibo.fib2(100) #结果是[1,1,2,3,5,8,13,21,34,55,89]
test.add(2,3) #结果是2
当然,也可以通过from fibo import add,fib,fib2来引入
直接通过函数名来调用函数:
fib(500) #结果是 1 1 2 3 5 8 13 21 34 55 89 144 233 377
如果想列举模块中定义的属性,代码如下:
import fibo
dir (fibo)
输出结果:
['__name__', 'fib', 'fib2', 'add']