同其它面向对象语言一样,python语言也也有许多方法集合的库文件,而且python中的使用更灵活。Python模块(Module),是一个 Python 文件,以 .py结尾,包含了 Python 对象定义和Python语句。

模块可以由2个语句和一个重要的内置函数进行处理:

(1)import:使客户端(导入者)以一个整体获取一个模块。

(2)from:容许客户端从一个模块文件中获取特定的变量名。

(3)reload():不中止Python程序的情况下,提供了一个重新载入模块文件代码的方法。

一.import

(1) 执行三个步骤:1)、找到模块文件(官方的模块文件或者是第三方的模块、自己写的模块)  2)、编译成位码(需要时).pyc   3)、执行模块的代码来创建其所定义的对象。
在之后导入相同的模块时候,会跳过这三个步骤,而只提取内存中已加载模块对象。

(2) Python搜索模块的路径

 1.程序主目录(自定义模块最好放在同级目录上)
 2.PTYHONPATH目录
 3.标准连接库目录
 4.任何.pth文件的内容

 这四个组合起来就变成了sys.path

(3)如果我们要添加自己的搜索目录,有四种方法

1.一是直接修改sys.path,添加要搜索的目录

import sys

sys.path.append('c:\\mypythonlib')

2.将自己做的py文件放到site_packages目录下

下面命令显示了site-packages 目录:

from distutils.sysconfig import get_python_lib

print get_python_lib()

3.   使用pth文件,在site-packages 文件中创建.pth文件,将模块的路径写进去,一行一个路径,以下是一个示例,pth文件也可以使用注释:

E:\Pythonworkplace

E:\Pythonworkplace\mysite

4.    第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

二.from

 1.from会把变量名赋值到另一个作用域,所以它就可以让我们直接在脚本中使用复制后的变量名,而不是通过模块

 2. from module import name, age #复制多个变量名时要用逗号隔开

     >>> name, age

    或者

    >>> from module import name as myname, age as myage

三. from *  会取得模块顶层所有赋了值的变量名的拷贝

 从技术角度来说,fromimport语句都会使用相同的导入操作,from *形式只是多加了个步骤,把模块所有变量名复制到了进  行导入的作用域内。

 从根本上来说,这就是把一个模块的命名空间融入另一个模块之中,实际效果就是让我们少输入一些。

 语法结构: from module import *

 __all__属性由列表构成,它规定了模块的所有可见方法,会使属性列表之外的成员全部私有化
 只有在执行语句 from module import * 时,__all__属性才会起作用。此时所有枚举的成员被import,而其他成员被私有化

四.包(多个模块的集合)

为了组织好模块,会将多个模块分为包。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件
最简单的包结构只需要一个空的 __init__.py 文件即可

除模块名以外,导入也可以指定目录路径Python代码的目录就是称为。因此这类导入就称为包导入。

python模块 3.29

五.reload函数:reload可以修改模块的一些部分,而无需停止整个部分,利用reload可以立即看到组件的修改效果

 reloadimport from不同
1.reloadPython的内置函数,不是语句
2.reload的是已经存在的模块,而不是变量名
3.reloadPython3中位于模块之中,使用之前必须先导入自己:

  #python3

  from imp import reload

  #python 2
  import sys
  reload(sys)

4.reload重载,使得程序能够提供高度动态的接口,用户可以在系统运作时通过编写python程序定制产品,而不用重新编译整个产品。使Python代码增加了一种动态本质。

六. Python提供了__future__模块,把下一个新版本的特性导入到当前版本

七.__name__ : 每个模块都有个名为__name__的内置属性

 如果文件是以顶层程序文件执行,在启动时,__name__就会被设置为字符串“__main__

 如果文件被导入到主程序,__name__就会改设成客户端所了解模块名。 结果就是模块可以检测自己的__name__,来确定它是执行还是在导入

 在文件末尾加一个__name__测试,即使用if __name__ == '__main__‘













相关文章:

  • 2021-08-14
  • 2022-01-20
  • 2021-05-16
  • 2021-08-26
  • 2021-06-29
  • 2021-07-09
  • 2022-02-09
  • 2022-03-02
猜你喜欢
  • 2021-10-17
  • 2021-10-09
  • 2022-12-23
  • 2021-10-08
  • 2021-09-01
  • 2021-05-15
  • 2022-12-23
相关资源
相似解决方案