最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python怎么引包

    正文概述    2020-01-11   398

    python引包的三种方法:1、输入“import 包名”命令导入;2、输入“from 包名 import 模块名”命令导入;3、输入“from 包名.模块名 import 成员名”导入。

    python怎么引包

    包其实本质上是模块,因此导入模块的语法同样也适用于导入包。无论导入我们自定义的包,还是导入从他处下载的第三方包,导入方法可归结为以下 3 种:

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

    from 包名 import 模块名 [as 别名]

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

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

    注意,导入包的同时,会在包目录下生成一个含有 __init__.cpython-36.pyc 文件的 __pycache__ 文件夹。

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

    以 my_package 包为例,导入 module1 模块并使用该模块中成员可以使用如下代码:

    import my_package.module1
    my_package.module1.display("http://c.biancheng.net/java/")


    运行结果为:

    http://c.biancheng.net/java/

    可以看到,通过此语法格式导入包中的指定模块后,在使用该模块中的成员(变量、函数、类)时,需添加“包名.模块名”为前缀。当然,如果使用 as 给包名.模块名”起一个别名的话,就使用直接使用这个别名作为前缀使用该模块中的方法了,例如:

    import my_package.module1 as module
    module.display("http://c.biancheng.net/python/")


    程序执行结果为:

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


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

    import my_package
    my_package.module1.display("http://c.biancheng.net/linux_tutorial/")


    直接导入包名,并不会将包中所有模块全部导入到程序中,它的作用仅仅是导入并执行包下的 __init__.py 文件,因此,运行该程序,在执行 __init__.py 文件中代码的同时,还会抛出 AttributeError 异常(访问的对象不存在):

    http://c.biancheng.net/python/
    Traceback (most recent call last):
      File "C:\Users\mengma\Desktop\demo.py", line 2, in <module>
        my_package.module1.display("http://c.biancheng.net/linux_tutorial/")
    AttributeError: module 'my_package' has no attribute 'module1'


    我们知道,包的本质就是模块,导入模块时,当前程序中会包含一个和模块名同名且类型为 module 的变量,导入包也是如此:

    import my_package
    print(my_package)
    print(my_package.__doc__)
    print(type(my_package))


    运行结果为:

    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 模块为例,使用此语法格式的实现代码如下:

    from my_package import module1
    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 别名]

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

    from my_package.module1 import display
    display("http://c.biancheng.net/shell/")


    运行结果为:

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


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

    from my_package.module1 import display as dis
    dis("http://c.biancheng.net/shell/")


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

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

    from my_package.module1 import *
    display("http://c.biancheng.net/python")

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


    起源地下载网 » python怎么引包

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元