python模块 3.29

本文详细介绍了Python中的模块和包的概念及其使用方法,包括如何使用import和from导入模块,reload函数的用法,以及如何组织模块到包中。此外还讨论了Python的搜索路径和如何自定义搜索路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同其它面向对象语言一样,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代码的目录就是称为。因此这类导入就称为包导入。


五.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__‘













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值