Python中模块与包的概念

模块与包的作用
  模块:在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
posted @ 2020-05-26 23:31  零下一度的微笑  阅读(288)  评论(0编辑  收藏  举报