Python 模块,import导入模块,from...import ,模块指定别名(as)。reload重新加载模块(热加载)

 

我的模块.py(自定义的模块):

# 全局变量
title = "模块1"


# 函数
def say_hello():
    print("我是 %s" % title)


# 类
class Dog(object):
    pass


# 类
class Cat(object):
    pass

demo.py(from...import 导入模块):

import 我的模块 as 模块别名   # 导入模块中的所有工具,同时为模块指定别名。 别名推荐使用大驼峰命名法
from 我的模块 import Dog     # from...import 导入模块中的部分工具(全局变量/函数/类)
# from 我的模块 import *       # 导入模块中的所有工具(不推荐,函数同名不好排查). 后导入的工具会覆盖先导入的同名工具
from 我的模块 import Cat as Cat2  # 为导入的工具指定别名,防止与其他模块中的工具重名


模块别名.say_hello()  # 模块名.工具 的方式使用模块中的工具

dog = Dog()    # from...import的方式导入的工具,不需要通过模块名可以直接使用
cat = Cat2()   # Cat2是为导入的工具指定的别名

demo.py(重新加载模块,热加载,reload):

import test
from imp import reload

print(test.age)

# 重新加载模块(该模块必须已经在之前加载成功)
reload(test)  # 在不关闭python解释器的情况下重新加载之前的模块。

print(test.age)

demo.py(跨模块开发的注意事项):

import test1
from test2 import age2
from test2 import list_1

test1.age += 1   # 通过点.的方式修改源模块中的变量值,源模块中的变量会真正修改
print(test1.age)

age2 += 1  # 这种方式只是修改当前模块中的引用,并没有修改源模块中变量的值
print(age2)

list_1.append(5)  # 通过list原生方法,可以修改源模块中list的值。
print(list_1)

demo.py(动态导入,__import__()函数动态导入模块):

module_name = "模块名"    # 可以动态设置模块名
func_name = "模块中的资源名"  # 可以动态指定模块中的资源。

my_module = __import__(module_name)  # my_module指向了导入的模块
my_func = getattr(my_module, func_name)  # 此时my_func就指向了指定模块中的指定资源。

 

Python 模块,import导入模块,from...import ,模块指定别名(as)。reload重新加载模块(热加载)_第1张图片


Python 模块,import导入模块,from...import ,模块指定别名(as)。reload重新加载模块(热加载)_第2张图片

Python 模块,import导入模块,from...import ,模块指定别名(as)。reload重新加载模块(热加载)_第3张图片

 

 

你可能感兴趣的:(Python+)