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: 自定义模块

原文地址:https://www.cnblogs.com/peiya/p/11995766.html