##模块:
概述: 问题: 目前来说代码量较少,代码写在一个文件中提现不出问题,随着代码量的增加,
就会越来越难以维护
解决: 为了解决难以维护的问题, python可以将很多具有相似的功能进行分组,
分别放到不同的文件中去, 方便的使用(调用),提高复用性,减少代码量
而且会将每一个文件的大致功能用文件名来命名提现,(方便调用)
很多语言都会有这样一个特点
python中一个py文件就是一个模块
优点:
1.提高到代码的维护性
2.提高了复用性
3.引用其他的模块(标准模块,自定义模块,第三方模块)
4.避免了函数名和变量名冲突
自定义模块
引入一个模块, 不用加 .py后缀
模块名需要遵从 标识符的命名规则
模块从重复引用时,不会报语法错误, 只会引用一次
引入模块
1, from 模块名 import 函数名
引入需要的函数
访问函数时只需要写函数名
add()
如果有参数的话,括号里要传入参数
2, from 模块名 import *
引入全部的函数
访问函数时只需要写函数名
add()
3, import 模块名
引入全部的函数
访问模块的函数时需要加上模块名
模块名.函数名 admin.add()
小结:跟导入内置函数用法一样,函数名加括号add(),调用整个函数
包
问题: 如果不同的开发人员编写的模块同名怎么办?
特点:引入了包以后, 只要顶层的包不与其他文件发生冲突,那么模块都不会与其他人发生冲突
注意:目录只有包含了一个叫作"init.py"的文件才被认作是一个包,主要是为了避免一些
滥竽充数的名字, 基本上目前这个文件中什么也不用写
引入包
在同级目录下引入包
import 包名.模块名 import a.test
调用
包名.模块名.函数 a.test.sayGood()
如果有参数的话,括号里要传入参数
如果是好几级包的话,每个包名按顺序排开,中间用点相连
import b.c.test
b.c.test.sayGood()
3, name 属性
模块是一个可执行的.py文件, 一个模块被另一个程序引入,我不想让模块中的某些代码执行,
可以用__name__属性来使程序仅调用程序模块中的一部分
私有函数__name__
用此函数说明这是私有的,调用整个函数时,调用不到它,
if __name__ == '__main__':
print('chu is a good man')
# else:
# print('chu is a nice man ')