zoukankan      html  css  js  c++  java
  • python中模块和包的概念

    1.模块

    一个.py文件就是一个模块。这个文件的名字是:模块名.py。由此可见在python中,文件名和模块名的差别只是有没有后缀。有后缀是文件名,没有后缀是模块名。

    每个文件(每个模块)都是一个独立的名称空间,也就是说可以在两个(多个)文件中出现同名的函数。

    import,from.....import...两种导入的区别:

    1.import

      按模块区分拥有独立的命名空间,要是想使用模块中的函数需要使用      模块名.函数名       的方式来使用。

      可以使用import.....as....为导入的模块起一个别名,在使用这个模块中的函数时,可以使用     别名.函数名。

    2.from.....import...

      将模块的内容导入到当前的命名空间中,直接使用名字就行。

      如果,被导入的模块和当前的文件中有同名的函数,那么后者将会覆盖前者。

      什么意思呢?

        这个时候就要看from.....import...  (from后面跟的是模块名,import后面跟的是具体的函数名,或是模块中具体的变量名等)出现的位置了,如果出现在当前模块函数之前,那么当前模块的函数会覆盖导入的函数,如果出现在当前函数定义之后,那么导入的函数会覆盖当前模块中的函数。

        from.....import......可以接受as为导入的函数或是变量起别名,同样可以导入多个函数、变量等。

        from......import * 不建议使用这个方式导入模块,可能覆盖之前同名的函数等(这种方式不会导入以_开头的变量或函数)。

    3.共同点

      python中不支持重新加载或卸载之前的导入的模块,因此如果修改被导入的模块,需重新启动python程序或者是使用重新加载语句来实现   import importlib; importlib.reload(modulename)  。

      当一个模块被导入时,他的全局变量名__name__ 为模块名,当这个模块当做脚本执行时,全局变量名__name__为 __main__。

      模块的查找顺序:内存中已经加载的模块->内置模块->sys.path路径中包含的模块。(所以我们自己开发模块时,注意不要和已有的模块名重复)

    2.包

    包的本质就是一个包含__init__.py文件的目录。是一种通过使用‘.模块名’来组织python模块名称空间的方式,也就是说在在导入包时遇到带 点 的,这就是关于包的导入语法。

    导入包,本质上是导入了包中的__init__.py文件。

    包的导入形式也有,import 和 from.....import......两种形式。

    3.提示

       import * 会导入除了以 _ 开头的所有变量,但是如果定义了 __all__,那么会导入 __all__ 中列出的东西。

       __all__是模块中的全局变量,列表

  • 相关阅读:
    反序列化二叉树-队列
    二叉树中和为某一值的路径
    深拷贝复杂链表
    机器人运动范围
    vue 安装及使用
    json 函数
    js 获取当前时间
    JS编码方式
    搭建自己的Webpack项目
    webpack 安装 打包
  • 原文地址:https://www.cnblogs.com/bandaobudaoweng/p/10800864.html
Copyright © 2011-2022 走看看