美文网首页
Python 总结之 import本质

Python 总结之 import本质

作者: Elvis_zhou | 来源:发表于2018-05-06 20:53 被阅读0次

    了解import之前,我们得先了解什么是模块。

    模块和包

    模块:本质就是以.py结尾的python文件 (文件名:test.py,对应的模块名:test),是用来从逻辑上组织python代码(变量,函数,类,逻辑:模块的本质是为了实现一个功能)。

    包:本质就是一个目录(必须有__init__.py文件),是用来打包多个模块(.py文件),如果想要导入一个包就是解释(执行)这个包下的__init__.py文件。

    导入模块

    导入模块主要有两种方式:

    1. import model_name

    2. from model_name import *

    导入方法:

    导入指定方法:from module_name import abc

    导入模块中的多个方法: from module_name import abc123,abc456

    导入模块中的方法:import module_name.abc

    导入模块中的变量:import module_name.name

    导入多个模块:import module1_name, module2_name

    import 本质

    我们在test.py中import bitcoin这个模块,其本质意义就是将bitcoin模块中的代码解释一遍(运行一遍)然后赋值给一个变量,这个变量就是bitcoin

    from bitcoin import * 相当于将bitcoin模块中的方法给解释了一遍然后放入test.py文件中。

    注意点

    1. 模块路径:

    >>>import sys

    >>>print (sys.path)

    结果打印的是默认路径的列表,导入模块时,会按照列表顺序寻找模块。找不到会报错。

    因为路径是个列表,所以是可以添加路径的 sys.path.append(),当然导入的路径不是永久的。

    2.模块名重用

    注意在起名字的时候,不要与库中模块的名字重复,否则当你导入模块的时候可能会导入的.py文件是错误的。

    3.导入模块的优化

    使用import bitcoin时,text.py中的每一个函数都需要先去找bitcoin模块,然后再去找comp_bitcoin()这个方法,被调用一次就需要找一次,如果调用次数多的话,就需要大量的重复性工作,这样运行程序相对会比较慢。

    这里使用from方法来导入,相当于把这个comp_bitcoin()导入到text.py文件中了,这样在调用comp_bitcoin()这个函数的时候,直接就是从本程序中直接调用,相比上一种方式运行速度会快。

    4.动态模块导入时两种import的区别

    运行代码时会发现:当send.py修改have_girl的值时,两个导入方式的结果是不同的,原因是因为

    import  girl 这个可以当做是引用

    from girl import have_girl这个可以当做深拷贝

    关于引用,浅拷贝和深拷贝 之后会有详解。

    相关文章

      网友评论

          本文标题:Python 总结之 import本质

          本文链接:https://www.haomeiwen.com/subject/nezurftx.html