zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    深入理解Java虚拟机-走进Java
    springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类
    ActiveMQ数据接收类型问题
    kafka报文一直打印的问题
    Java基本语法
    flask跨域问题
    flask接口传参
    iTextSharp导出PDF模板(报告)
    ASP.NET中<%=%>、<%%>、<%@%>、<%#%>的用法与区别
    python AES+SHA1PRNG
  • 原文地址:https://www.cnblogs.com/jason2018524/p/12969550.html
Copyright © 2011-2022 走看看