python导入包的几种方法,python中包的导入

  python导入包的几种方法,python中包的导入

  python中有三种导入包的方法:1。输入“导入包名”命令进行导入;2.输入命令“从包名导入模块名”进行导入;3.输入“从包名。模块名称导入成员名称"来导入。

  实际上,包本质上是模块,所以导入模块的语法也适用于导入包。无论是导入我们的自定义包,还是从其他地方下载的第三方包,导入方法可以总结如下:

  导入包名称[。模块名称[作为别名]]

  从包名导入模块名[作为别名]

  从包名。模块名称导入成员名称[作为别名]

  []括起来的部分是可选的,即可以直接使用或忽略。

  请注意,在导入包时,会出现一个包含__init__文件的__pycache__文件夹。将在包目录中生成cpython-36.pyc。

  1) import 包名[.模块名 [as 别名]]

  以my_package包为例,下面的代码可以用来导入module1模块并使用其成员:

  导入我的包.模块1

  my _ package . module 1 . display( http://c . biancheng . net/Java/)

  运行结果是:

  http://c.biancheng.net/java/可以看到,通过这种语法格式导入包中指定的模块后,在使用模块中的成员(变量、函数和类)时,需要加上“包名。模块名”作为前缀。当然,如果您使用as给包名一个别名。模块名",你可以直接使用这个别名作为前缀来使用这个模块中的方法,例如:

  importmy _ package.module1asmodule模块

  module . display( http://c . biancheng . net/python/)

  程序执行的结果是:

  http://c.biancheng.net/python/

  另外,当直接导入指定的包时,程序会自动执行__init__中的代码。py文件放在包对应的文件夹中。例如:

  导入我的包

  my _ package . module 1 . display( http://c . biancheng . net/Linux _ tutorial/)

  直接导入包名不会将包中的所有模块都导入到程序中,只会导入并执行__init__。包下的py文件。因此,在运行程序时,代码在__init__。将执行py文件,并抛出AttributeError异常(被访问的对象不存在):

  http://c.biancheng.net/python/

  回溯(mostrecentcalllast):

  文件“C: \用户\马蒙\桌面\演示. py”,第2行,在模块中

  my _ package . module 1 . display( http://c . biancheng . net/Linux _ tutorial/)

  AttributeError:module模块“my_package”没有属性“module1”

  我们知道,包的本质是一个模块。导入模块时,当前程序将包含一个与模块名称和模块类型同名的变量。对于导入的包也是如此:

  导入我的包

  打印(我的包)

  打印(我的_包。__doc__)

  打印(类型(我的包))

  >
运行结果为:

  

http://c.biancheng.net/python/

  <module'my_package'from'C:\\Users\\mengma\\Desktop\\my_package\\__init__.py'>

  http://c.biancheng.net/


创建第一个 Python 包

  

<class'module'>
2) from 包名 import 模块名 [as 别名]

  以导入my_package 包中的 module1 模块为例,使用此语法格式的实现代码如下:

  

frommy_packageimportmodule1

  module1.display("http://c.biancheng.net/golang/")


运行结果为:

  http://c.biancheng.net/python/
http://c.biancheng.net/golang/

  可以看到,使用此语法格式导入包中模块后,在使用其成员时不需要带包名前缀,但需要带模块名前缀。

当然,我们也可以使用 as 为导入的指定模块定义别名,例如:from my_package import module1 as modulemodule.display("http://c.biancheng.net/golang/")
此程序的输出结果和上面程序完全相同。

同样,既然包也是模块,那么这种语法格式自然也支持from 包名 import *这种写法,它和 import 包名 的作用一样,都只是将该包的 __init__.py 文件导入并执行。

  3)from 包名.模块名 import 成员名 [as 别名]

  此语法格式用于向程序中导入“包.模块”中的指定成员(变量、函数或类)。通过该方式导入的变量(函数、类),在使用时可以直接使用变量名(函数名、类名)调用,例如:

  

frommy_package.module1importdisplay

  display("http://c.biancheng.net/shell/")


运行结果为:

  

http://c.biancheng.net/python/

  http://c.biancheng.net/shell/


当然,也可以使用 as 为导入的成员起一个别名,例如:

  

frommy_package.module1importdisplayasdis

  dis("http://c.biancheng.net/shell/")


该程序的运行结果和上面相同。

另外,在使用此种语法格式加载指定包的指定模块时,可以使用 * 代替成员名,表示加载该模块下的所有成员。例如:

  

frommy_package.module1import*

  display("http://c.biancheng.net/python")

推荐课程:零基础入门学习Python(小甲鱼)

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: