Python学习基础笔记七十——模块和库1

模块和库:

一个python代码文件就实现了功能。功能比较单一。

在企业中,项目开发的文件,可能有成百上千个。

不同的代码文件,实现了不同的功能模块,就像一块块积木一样。这些功能文件整合起来,实现一个完整的软件。

在python中,一个代码文件,也就是一个.py文件,我们也叫它一个模块(module)。

a.py 文件,我们称之为模块a。

b.py文件,我们称之为模块b。

模块就是代码文件的意思。

模块之间的调用:

那么代码模块之间是怎么互相联系的呢?

案例:输入总费用和聚餐人数,计算人均费用的功能。单独实现一个模块文件aa.py

fee = input('请输入午餐费用: ')
members = input('请输入聚餐人员姓名,以英文逗号,分隔:')

memberlist = members.split(',')

headcount = len(memberlist)

avgfee = int(fee) / headcount

print(avgfee)

放到列表中,是为了得到人数。 

Python学习基础笔记七十——模块和库1_第1张图片

但是,我们需要将每次账单记录到文件中,这样才能定期进行结算。

我们可以创建另外一个模块文件save.py, 在里面定义一个函数,该函数实现记录消费信息到文件的功能。

def savetofile(memberlist, avgfee):
    with open('record.txt', 'a', encoding='utf8') as f:
        recorditem = [f'{member}:{avgfee}' for member in memberlist]
        f.write(' | '.join(recorditem) + '\n')

聚餐人数的列表和平均费用。

a是文件的追加模式。

通过列表推导式,产生    人员列表:平均费用  这样的列表项。

然后还使用了|分隔符。

就这段代码,也有很多内容值得我们学习的。

现在aa.py和save.py两个模块文件。

方法一:

在aa.py里面通过import关键字导入模块save。

import save

导入save模块。模块文件对象。

导入后,save模块就成为模块aa中的一个变量,对应一个模块对象。

模块也是一个对象。

save.savetofile(memberlist, avgfee)

使用save模块中里面的savetofile函数。

到save模块找savetofile的名字,这个名字对应的是一个函数。

Python学习基础笔记七十——模块和库1_第2张图片

方法二:

还可以在aa.py里面通过from import 关键字导入其他模块里的标识符(或者是变量名或者是函数名等。)

from save import savetofile

导入之后,这些其他模块的变量名和函数名就称为模块aa 里面的变量名、函数名了。

这样,我们就可以直接使用它们了。

完整代码:

from save import savetofile

fee = input('请输入午餐费用: ')
members = input('请输入聚餐人员姓名,以英文逗号,分隔:')

memberlist = members.split(',')

headcount = len(memberlist)

avgfee = int(fee) / headcount

print(avgfee)

savetofile(memberlist, avgfee)

一些技巧:

1)如果在一些模块文件中需要导入多个其他模块文件,可以分开写导入语句。

import aa
import bb
import cc

也可以一起导入:

import aa, bb, cc

2)如果我们要从1个模块中导入多个标识符:

from aa import func1, var1, func2, var2

3)如果到导入的1个模块中有很多个标识符:

from aa import *

通配符,把aa模块中所有可以导入的对象全部都导入了。

4)如果从两个模块中导入函数,恰好两个函数是同名的,那么我们可以使用别名。

from save import savetofile
from save2 import savetofile as savetofile2

当一个b模块从a模块导入了名字 var1 后,注意,b模块和a模块 是 各自有一个 名为 var1 的变量 , 而不是两个模块共享一个 名为 var1 的变量。

如果要在多个模块中共享同一个数据对象,并且这个数据对象的值将来可能会改变。

即使共享的只是一个数字或者字符串变量, 也应该放在一个值可以变动的对象类型中。 比如:列表, 或者后面要学习的 字典 和 自定义类型。

你可能感兴趣的:(Python,python)