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
  • 相关阅读:
    redis主从同步机制
    聊聊Redis持久化
    Redis集群架构中主节点选举机制
    命令注入
    《小狗钱钱》
    nginx---反向代理缓存
    nginx ---IP地址透传
    实现前端调度器nginx收到请求,调度到后端Apache、实现动静分离
    nginx---防止盗链
    nginx--当用户访问到公司网站的时输入了一个错误的URL,可以将用户重定向至官网首页
  • 原文地址:https://www.cnblogs.com/jason2018524/p/12969550.html
Copyright © 2011-2022 走看看