from python.exception.测试模块1 import say_hello as Moudel_say_hello from python.exception.测试模块2 import say_hello
say_hello() # 调用的是模块2的say_hello() Moudel_say_hello() # 调用的是模块1的say_hello()
领取Python学习资料可以加小编的微信:tz2020jd
from import *的导入方式,这样和直接import 模块名看似是一样的,但是这种方式和from import一样,调用的时候不需要指定 模块名.,还是很方便的,但是开发中不推荐使用,因为有可能多个模块之间有相同的函数,这样也会导致覆盖的问题;给文件起名千万不要和系统的文件模块名字相同,因为搜索模块的顺序是先从当前目录下搜索模块,最后才是python解释器中的模块;import random # 同一个目录下不要有 random.py这个文件 ,不然就会先导入同目录下的,而不会导入python库中的 print(random.__file__)
num = random.randint(0, 10)
print(num)
__name__属性以及导入模块和测试的问题
例如在python/exception包下面有两个文件测试模块3.py和py10___name__属性的使用.py两个文件: py10___name__属性的使用.py代码如下:
def say_hello(): print("你好!")
def main(): say_hello() # 测试
if __name__ == "__main__": # 如果不加上这个,导入这个模块的时候就会从上到下依次执行代码 print(__name__) print("小明开发的模块!") main() 测试模块3.py文件:
import python.exception.测试模块3
print("*" * 5) 运行结果不会输出py10___name__属性的使用.py中的测试代码。
包的概念: ①包是含有多个模块的特殊目录;②包下有一个__init__.py文件; 在开发中,希望导入一个包,这个包中有多个模块,这时要使用包中的某个模块,需要在__init__.py中使用from . import 模块名的方式"注册"这个模块,别人才能使用这个模块;
例如: python/py_message包下面有三个文件: __init__.py、send_message.py、receive_message.py三个文件,外界想使用后面两个文件: 则三个文件的代码如下 : ①__init__.py文件:
from . import send_message from . import receive_message
②send_message.py文件:
def send(text): print("正在发送 %s" % text)
③receive_message.py文件:
def receive(): return "这是来自 100XX的短信!";
测试文件(和上面三个文件不在同一个包下):
import python.py_message # 导入的不是一个模块,而是一个包
python.py_message.send_message.send("hello") txt = python.py_message.receive_message.receive() print(txt)
制作发布压缩包三个步骤: ①创建setup.py文件,关于这个文件格式看官方文档;②构建模块,在终端执行python3 setup.py build;③生成发布压缩包,在终端执行python3 setup.py sdist;
安装模块: 可以将包中的模块安装到python系统中,只需要两步: ①解压 tar -zxvf 压缩包名.tar.gz;②安装sudo python3 setup.py install;
卸载模块: 直接在安装的目录删除即可(python安装的目录的模块下);
安装第三方的包: sudo pip3 installl ...;
领取Python学习资料可以加小编的微信:tz2020jd