zoukankan      html  css  js  c++  java
  • python-模块定义、导入、优化

    在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块。
    说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块

    变量(全局变量 局部变量 实例属性 类属性) -> 函数(实例方法 类方法 静态方法)
    -> 类 -> 模块 -> 包 -> 工程(项目)

    1、定义:
    模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块命:test )
    包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个_init_.py文件)
    2、导入方法:

    import module_name
    import module1_name,module2_name
    from module_alex import *(导入模块的所有变量和方法),不提倡使用,相当于把模块的代码都复制过来
    from module_alex import m1,m2,m3(导入模块中的方法)
    from module_alex import logger as logger_alex

    格式: import 模块名
    使用的格式:
    模块名.全局变量名
    模块名.函数名
    模块名.类名

    hm_sum.py

    # 如果一个模块中使用了__all__
    # 只用在__all__的列表中的字符串才可以在其他模块中使用
    # 条件 其他模块必须是通过from 模块名 import * 方式导入的模块
    __all__ = ["name"]
    
    # 全局变量
    name = "加法运算"
    # 函数
    def add2num(a, b):
        return a + b
    #
    class Person(object):
    
        def eat(self):
            print("人会吃饭")
    
    # git 或者是 svn   -> 远程仓库
    # 在自己定义一个模块中 进行自测 (程序员做的事情)
    
    # 定义一个函数 -> 自测函数
    def main():
        print(name)
        ret = add2num(10, 20)
        print(ret)
        p = Person()
        p.eat()
    
    print(__name__)  # __main__
    
    if __name__ == '__main__':
        main()

    hm_test.py

    # 测试人员自己创建的模块
    #如果一个模块被另一个模块导入后 就把这个模块里面可以执行的代码都执行一遍
    import hm_sum
    
    def main():
        print(hm_sum.name)
        ret = hm_sum.add2num(10, 30)
        print(ret)
        p = hm_sum.Person()
        p.eat()
    
    if __name__ == '__main__':
        main()

    __name__在本身其模块里调用是__main__,在其它模块里调用是模块名

    格式: from 模块名 import 全局变量  函数  类

    from hm_sum import name, add2num, Person
    # 使用from-import 在使用的时候 不需要在写模块名
    # 注意和本模块的名字冲突
    print(name)
    # def add2num(a, b):  
    #     return a - b
    print(add2num(10, 20))
    p = Person()
    p.eat()

    import 模块名 as 别名

    import hm_sum as hmhm_sum
    print(hmhm_sum.name)
    from hm_sum import name as my_name
    name = 20
    print(name)
    print(my_name)

    导入包中的模块
    import 包名.模块名 as 别名

    3、import本质(路径搜索和搜索路径)
    导入模块的本质就是把python文件解释一遍,import test (test='test.py all code')
    import module_name
    module_name = all_code,把所有代码复制给module_name这个变量
    调用时,模块名.变量 模块名.方法
    from module_name import m1
    只把这个模块中的m1放到当前位置,调用时直接使用
    导入包的本质就是执行该包下的_init_.py文件,import 包名
    import module_name----->module_name.py---->module_name.py的路径---->sys.path
    4、导入优化
    from module_test import test
    5、模块的分类:
    a:标准库
    b:开源模块
    c: 自定义模块

  • 相关阅读:
    检测单链表是否含有环
    巧用正则和document.location.search获取URL参数的值
    网站前端性能优化
    Ubuntu 10.10 wubi安装错误处理
    SQL中随机数函数rand()简介
    C#实现智能提示(提示补全)功能
    重装系统使之svn再次复活
    MongoDB安装
    mongodb查询
    解决iframe中跨域session丢失的问题
  • 原文地址:https://www.cnblogs.com/peiya/p/11995766.html
Copyright © 2011-2022 走看看