模块与包的作用
模块:在Python中,一个.py文件就称为一个模块(Module)
包:把许多模块按照功能放在不同的目录中来组织模块,这些组织存放模块文件的目录,称为包
>> 模块的导入语法(同一个包中的不同模块):
- 导入模块:import moduleName [as 别名] # 注意:启用了别名就只能用别名来调方法或属性(可简化模块名)
- 导入多个模块:import moduleName1,...,moduleNamen
- 从某个模块导入指定的函数:from moduleName import 函数1,变量1,...,函数n,变量n
- 导入模块的所有内容(不建议):from moduleName import * (等价于:import moduleName) # 可能存在潜在的污染命名字空间的危险
想导入某个模块使用import导入(大方面),想导入某个模块的某个方法、熟悉使用from(小方面)
[注:pycharm导包没有提示或有红色波浪线提示,参考设置地址:https://www.cnblogs.com/xiaohuamao/p/6903030.html]
使用示例
pack包中有一个module1.py
# 求和函数 def get_sum(num1, num2): return num1 + num2 # 求差函数 def get_sub(num1, num2): return num1 - num2
packe包中有另一个module2.py
import module1 print(module1.get_sum(1,2)) # 3 from module1 import get_sub print(get_sub(3,2)) # 1
>> 包的导入语法:
- 从某个包导入指定的模块:import packageName1.moduleName1,...,packageNamen.moduleNamen
- from从某个包导入指定的模块:from packageName1.packageNamen import moduleName
- 从某个包导入模块的属性或方法:from packageName1.packageNamen.modleName import moduleName.方法名/属性
- 建议包命名规则:全小写,可使用下划线
- Pycharm导包注意:包名要符合命令规范,否则会导致导入不了包
- 导包时的__init__.py文件:如果A包导入了B包中的模块,那么当在运行A包的模块时,会执行B包中"__init__.py"文件中的内容
使用示例
1.包的结构如下
2.模块other_get_price.py通过导入包调用不用包的apple_price.py模块、note_price.py模块
- apple_price.py代码如下
def ask_price(): """ 返回apple的价格 :return: string """ return "Apple price : 4500"
- note_price.py代码如下
def ask_price(): """ 返回note的价格字符串 :return: string """ return "Note price : 3500"
- other_get_price.py代码如下
# 方法1:通过导包到指定的模块 import apple.apple_price as ap print(ap.ask_price()) # Apple price : 4500 # 方法2:通过from导包到指定的模块(多层级的包导入) from apple import apple_price as bp from samsung.note import note_price as np print(bp.ask_price()) # Apple price : 4500 print(np.ask_price()) # Note price : 3500 # 方法3:通过导包&模块到指定的函数或属性 from apple.apple_price import ask_price print(ask_price()) # Apple price : 4500