zoukankan      html  css  js  c++  java
  • python模块

    一、模块

    在Python中,一个.py文件就称之为一个模块(Module)。

    为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

    举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。

    现在,假设我们的abcxyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如mycompany,按照如下目录存放:

    mycompany
    ├─ __init__.py
    ├─ abc.py
    └─ xyz.py
    

    引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz

    请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany

    类似的,可以有多级目录,组成多级层次的包结构。比如如下的目录结构:

    mycompany
     ├─ web
     │  ├─ __init__.py
     │  ├─ utils.py
     │  └─ www.py
     ├─ __init__.py
     ├─ abc.py
     └─ utils.py
    

    文件www.py的模块名就是mycompany.web.www,两个文件utils.py的模块名分别是mycompany.utilsmycompany.web.utils

    自己创建模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。

    mycompany.web也是一个模块,请指出该模块对应的.py文件。

    1.搜索路径

    当导入一个模块时,python解释器会对模块位置的搜索顺序是:

    • 当前目录
    • PYTHONPATH下
    • 默认路径

    可以通过sys.path查看所搜索路径。

    2.命名空间和作用域

    一个 Python 表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。

    python会认为任何函数内的变量都是局部的,如果在函数内想用全局变量,则需要在函数内用global声明。

    3.dir()

    dir()返回一个字符串列表,包含了模块中所有定义过的名字。例如dir(math)

    4.globals()和local()

    根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。

    如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。

    如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。

    两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。

  • 相关阅读:
    用asp生成PDF文件
    对长了的文章进行分页显示!
    用ASP读INI配置文件的函数
    JMail发送邮件代码
    SqlServer数据库的备份和恢复措施
    java—mediator中介模式
    javascript王者归来公有和私有:属性的封装
    断点续传多线程连接下载
    C语言实现对图像的二值化
    javascript王者归来类和对象
  • 原文地址:https://www.cnblogs.com/LMIx/p/13126675.html
Copyright © 2011-2022 走看看