赞
踩
本文收集整理关于python怎么导入模块的相关议题,使用内容导航快速到达。
内容导航:
Q1:如何导入python中的模块
定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。
比如说,下面的代码输入到一个文件中,就可以看作是一个模块:
def printme(var):print varif __name__ == __main__:printme(1)
假设说输入到a.py中,那么import a就可以把这个模块导入。
然后可执行a.printme(3),屏幕即可打印出3:
>>> a.printme(3)3>>>
一个模块顶层定义的变量,会自动变成模块的属性。例如:
data=http://127.0.0.1/yijitao/[1,2,3]def printme(var):print varif __name__ ==__main__:printme(1)
data变量就是模块的一个属性。其实printme也是一个属性,只不过是一个函数罢了。
引入模块示例如下:(假定此时data=http://127.0.0.1/yijitao/[1,2,3]未定义)
>>> import a>>> a.data Traceback (most recent call last): File "", line 1, in a.dataAttributeError: module object has no attribute data>>> reload(a)>>> a.data Traceback (most recent call last): File "", line 1, in a.dataAttributeError: module object has no attribute data>>>
从上述提示可以看出data属性未定义,此时再在a.py文件中定义data=http://127.0.0.1/yijitao/[1,2,3],重新加载a模块,并输出data属性:
>>> reload(a)>>> a.data[1, 2, 3]>>>
这里的reload函数可以重新加载一个模块。如果在模块代码中更改了,那么需要重新加载。
上面a.data,就是访问模块中的属性。
上面的例子是导入一个文件作为一个模块。
其实python的模块导入还有更丰富的内容。
除了模块名之外,python也可以导入指定目录路径。python代码的目录就称为包。因此,这类导入就称为包导入。事实上,包导入是把计算机上的目录变成python的一个命名空间。而属性就是目录中包含的子目录或者是模块文件。
看下面例子:
在我的桌面上有一个aa文件夹,里面有bb文件夹,bb里面有a.py这个文件。
那么在aa和bb文件夹中分别放置一个__init__.py,之后,在命令行中import aa.bb.a,就可以导入模块a了。
Q2:python 怎么导入smbus模块
什么操作系统?
Ubuntu的话试试这个:sudoapt-getupdate
sudoapt-getupgrade
sudoapt-getdist-upgrade
sudoapt-getinstallbuild-essentialpython-devpython-setuptoolspython-pippython-smbus
sudoapt-getinstalllibncursesw5-devlibgdbm-devlibc6-dev
sudoapt-getinstallzlib1g-devlibsqlite3-devtk-dev
sudoapt-getinstalllibssl-devopenssl
sudoapt-getinstalllibffi-dev
或sudoaptinstall-ypython3-smbus
Q3:python怎么导入模块gevent
Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。
gevent是第三方库,通过greenlet实现协程,其基本思想是:
当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。
Q4:python 模块可以相互导入吗
模块A中import B,而在模块B中import A。这时会怎么样呢?这个在Python列表中由RobertChen给出了详细解释,抄录如下:[A.py]
from B import D
class C:pass
[B.py]
from A import C
class D:pass
为什么执行A的时候不能加载D呢?
如果将A.py改为:import B就可以了。
这是怎么回事呢?
RobertChen:这跟Python内部import的机制是有关的,具体到from B import D,Python内部会分成几个步骤:
在sys.modules中查找符号"B"
果符号B存在,则获得符号B对应的module对象。
从的__dict__中获得符号"D"对应的对象,如果"D"不存在,则抛出异常
如果符号B不存在,则创建一个新的module对象,注意,这时,module对象的__dict__为空。
执行B.py中的表达式,填充的__dict__ 。
从的__dict__中获得"D"对应的对象,如果"D"不存在,则抛出异常。
所以,这个例子的执行顺序如下:
1、执行A.py中的from B import D
由于是执行的python A.py,所以在sys.modules中并没有存在,首先为B.py创建一个module对象(),注意,这时创建的这个module对象是空的,里边啥也没有,在Python内部创建了这个module对象之后,就会解析执行B.py,其目的是填充这个dict。
2、执行B.py中的from A import C
在执行B.py的过程中,会碰到这一句,首先检查sys.modules这个module缓存中是否已经存在了,由于这时缓存还没有缓存,所以类似的,Python内部会为A.py创建一个module对象(),然后,同样地,执行A.py中的语句。
3、再次执行A.py中的from B import D
这时,由于在第1步时,创建的对象已经缓存在了sys.modules中,所以直接就得到了,但是,注意,从整个过程来看,我们知道,这时还是一个空的对象,里面啥也没有,所以从这个module中获得符号"D"的操作就会抛出异常。如果这里只是importB,由于"B"这个符号在sys.modules中已经存在,所以是不会抛出异常的。
上面的解释已经由Zoom.Quiet收录在啄木鸟了,里面有图,可以参考一下:
Q5:python怎么导入自己写的模块
把自写模块和当前的python文件放在同一个文件夹,然后通过如下语句导入:
from . import module_name
Q6:在python中导入模块中的对象有哪几种方式
1、导入整个模块:
一般格式为:
import 模块1[模块2[,...]]
模块名就是程序文件的前缀,不含.py,可一次导入多个模块,导入模块后,调用模块中的函数或类时,需要以模块名为前缀,这样代码读起来更容易理解.
例:
>>>import math
>>>math.sin(0.5)
0.4794255
2、与form联用导入整个模块:
一般格式为:
form 模块名 import*
这种方式导入模块后,调用模块中的函数或类,仅使用函数名或类名,代码简洁,但可读性差,不容易理解
例:
>>>form math import*
>>>cos(0.5)
0.8775825
3、与form联用导入一个或多个对象:
一般格式为:
form 模块名 import 对象1[,对象2[,对象...]]
这种方式只导入模块中的一wWW.yIJITAO%.Com个或多个对象,调用模块中的对象时,仅使用对象名(#与方法二类似)
例:
>>>form math import sin,cos,exp
>>>sin(0.5)
0.4794255
>>>cos(0.5)
0.8775825
>>>exp(1)
2.7182818
扩展资料
Python中常用模块
math:模块定义了标准的数学方法,如sin、cos
random:模块提供了各种方法来产生随机数
datetime:模块中有日期时间处理方法
time:模块中有时间、时钟、计时相关的方法
tkinter:模块提供了图形界面开发的方法
www.YijItAO.co@m
Q7:如何在Python中导入Android模块
应该先下载一个android模块,再导供袱垛惶艹耗讹同番括入。我的也是:ImportError: No module named android
找不到模块,你环境变量设置的有问题吧。如果没有在默认的python lib目录下,你应该要手工加进去的。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。