模块和包(几个py文件的调用)

来源:互联网 发布:电脑照片合成软件 编辑:程序博客网 时间:2024/06/08 16:13

模块:

概述: 问题: 目前来说代码量较少,代码写在一个文件中提现不出问题,随着代码量的增加,
就会越来越难以维护

解决: 为了解决难以维护的问题, 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 ')
阅读全文
0 0