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


    模块和库:

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

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

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

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

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

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

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

    模块之间的调用:

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

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

    1. fee = input('请输入午餐费用: ')
    2. members = input('请输入聚餐人员姓名,以英文逗号,分隔:')
    3. memberlist = members.split(',')
    4. headcount = len(memberlist)
    5. avgfee = int(fee) / headcount
    6. print(avgfee)

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

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

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

    1. def savetofile(memberlist, avgfee):
    2. with open('record.txt', 'a', encoding='utf8') as f:
    3. recorditem = [f'{member}:{avgfee}' for member in memberlist]
    4. 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的名字,这个名字对应的是一个函数。

    方法二:

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

    from save import savetofile

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

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

    完整代码:

    1. from save import savetofile
    2. fee = input('请输入午餐费用: ')
    3. members = input('请输入聚餐人员姓名,以英文逗号,分隔:')
    4. memberlist = members.split(',')
    5. headcount = len(memberlist)
    6. avgfee = int(fee) / headcount
    7. print(avgfee)
    8. savetofile(memberlist, avgfee)

    一些技巧:

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

    1. import aa
    2. import bb
    3. import cc

    也可以一起导入:

    import aa, bb, cc

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

    from aa import func1, var1, func2, var2

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

    from aa import *

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

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

    1. from save import savetofile
    2. from save2 import savetofile as savetofile2

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

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

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

  • 相关阅读:
    xilinx-kernel-source-5.10内核版本编译报错-mlittle-endian
    Acetylthi/Aminooxy-OVA(Ovalbumin) 乙酰硫代/氨甲基修饰卵清蛋白
    【Django | 开发】面试招聘信息网站(增加csv,excel导出&日志管理功能)
    【开发环境】安装 Hadoop 运行环境 ( 下载 Hadoop | 解压 Hadoop | 设置 Hadoop 环境变量 | 配置 Hadoop 环境脚本 | 安装 winutils )
    VUEX版数字求和案例,附带vuex工作执行顺序图
    Java竞赛快速输入输出,防止读取数据过慢导致超时
    MySQL表的约束
    黑客技术(自学方法)——网络安全
    Java高级面试题整理(附答案)
    OpenMMlab导出swin-transformer模型并用onnxruntime和tensorrt推理
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/133838749