一、什么是module
就好比一个大的公司需要做一个项目,那肯定是要把这个项目分成多个小项目,再给自己的多个部门去做,之后在整合起来形成一个项目。而不是由一个项目从始至终地完成这个项目的所有任务,python当中的module功能也如此,
比方说我在一个 py 文件里面,我写了一个函数,那么我就可以把这个函数放在另一个文件里面,然后我在这个 py 文件里面去调用这个文件的这个函数。实现多个文件之间的协同,这就是模块化(module)处理
二、如何实现module间的联系
举一个寻找列表中的最大数为例子,现在有两个文件:
一个文件(初步学习.py)用于输入我们的数字列表,这里使用split方法:
# 获取用户输入
input_str = input("请输入以逗号分隔的元素,用于创建列表: ")
# 按逗号分割输入的字符串
input_list = input_str.split(',')
但是有一个问题,我们输入的时候都是输入的字符串类型的数据,需要我们做一个转换 这里我们再次创建一个新的文件用于存放我们的转换函数:
这个转换也可以记一下,感觉挺有意思的。
于是我们还需要一个寻找最大数的函数存放在另一个文件里面:
def find_max(num_list):
max = (num_list[0])
for number in (num_list):
if number > max:
max = number
return max
这样我们就完成了基本操作,现在我们需要在一开始的文件里面引入这几个函数:
1-1、import 文件名
具体的代码如下:
import 寻找最大数
import convert
# 获取用户输入
input_str = input("请输入以逗号分隔的元素,用于创建列表: ")
# 按逗号分割输入的字符串
input_list = input_str.split(',')
num_list = convert.converts(input_list)
print(寻找最大数.find_max(num_list))
import的意思是使用 import关键字后面跟上模块名(就是文件名),就可以将整个模块导入到当前的命名空间中。之后若要使用模块中的对象,需通过 模块名。对象名的形式调用。
当然你也可以这样操作:在导入模块时,你可以使用as关键字为模块或导入的对象指定一个别名,这样能让代码更简洁易读。例如:
import 寻找最大数 as a
import convert as b
# 获取用户输入
input_str = input("请输入以逗号分隔的元素,用于创建列表: ")
# 按逗号分割输入的字符串
input_list = input_str.split(',')
num_list = b.converts(input_list)
print(a.find_max(num_list))
1-2、from 模块名 import 函数名
具体代码如下:
from 寻找最大数 import find_max
from convert import converts
# 获取用户输入
input_str = input("请输入以逗号分隔的元素,用于创建列表: ")
# 按逗号分割输入的字符串
input_list = input_str.split(',')
num_list = converts(input_list)
print(find_max(num_list))
这样操作可以直接调用我们其他模块(文件)的函数,比较具有针对性
1-3、from 模块名 import *
这种写法与第一种有相似地方,因为这样写就可以直接调用所有被调用的模块里面的函数了。相比于第一种更简洁,相比于第二种更广泛
不过,这种方式可能会导致命名冲突,如果多个模块(module)里面有相同命名的函数,就会导致无法辨别。