美文网首页
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