Python编程语言如何进行模块化修改

开发 后端
Python编程语言在当前的使用环境中有很多的信息需要我们掌握。其中就要说到结构模块化这个问题,希望大家有所收获。

Python编程语言在使用的时候有很多的知识需要我们学习。尤其是在结构模块化上的修改和组建中,需要我们掌握很多的知识。下面我们就来详细的学习下相关技术知识。

模块搜索路径:导入一个叫spam的模块时,解释器先在当前目录中搜索名为spam.py的文件,然后在环境变量PYTHONPATH指琮的目录列表中搜索,然后是环境变量PATH中的路径列表。如果PYTHONPATH没有设置,或者文件没有找到,接下来搜索安装目录,在UNIX中,通常是 .:/usr/local/lib/python编程语言。实际上,解释器由sys.path变量指定的路径目录搜索模块,该变量初始化时默认包含了输入脚本(或者当前目录),PATHPATH和安装目录。

包通常是使用用“圆点模块名”的结构化模块命名空间。例如,名为A.B的模块表示了名为“A”的包中名为“B”的子模块。正如同用模块来保存不同的模块架构可以避免全局变量之间的相互冲突,使用圆点模块名保存像NunPy或Python Imaging Library之类的不同类库架构可以避免模块之间的命名冲突。
导入模块时,Python编程语言通过sys.path中的目录列表来搜索存放包的子目录。

必须要有一个__init__.py 文件的存在,才能使Python编程语言视该目录为一个包;这是为了防止某些目录使用了“string”这样的通用名而无意中在随后的模块搜索路径中覆盖了正确的模块。最简单的情况下,__init__.py 可以只是一个空文件,不过它也可能包含了包的初始化代码,或者设置了 __all__ 变量.

 

包用户可以从包中导入合法的模块,例如:

  1. import Sound.Effects.echo  

这样就导入了Sound.Effects.echo子模块。它必需通过完整的名称来引用。

  1. Sound.Effects.echo.echofilter(input, output, 
    delay=0.7, atten=4)  

导入包时有一个可以选择的方式:

  1. from Sound.Effects import echo  

这样就加载了echo子模块,并且使得它在没有包前缀的情况下也可以使用,所以它可以如下方式调用:

  1. echo.echofilter(input, output, delay=0.7, atten=4)  

还有另一种变体用于直接导入函数或变量:

  1. from Sound.Effects.echo import echofilter  

这样就又一次加载了echo子模块,但这样就可以直接调用它的 echofilter() 函数:

  1. echofilter(input, output, delay=0.7, atten=4)  

需要注意的是使用 from package import item 方式导入包时,这个子项(item)既可以是包中的一个子模块(或一个子包),也可以是包中定义的其它命名,像函数、类或变量。import 语句首先核对是否包中有这个子项,如果没有,它假定这是一个模块,并尝试加载它。如果没有找到它,会引发一个 ImportError 异常。

相反,使用类似import item.subitem.subsubitem 这样的语法时,这些子项必须是包,最后的子项可以是包或模块,但不能是前面子项中定义的类、函数或变量。

 

 

Python编程语言又将功能相近的函数组成文件,称之为模块。 #t#

import 导入的搜索路径是按sys.path值搜索。通过append()增加路径。import语句可以将文件名导入当前文件,从而通过该名字调用该文件的函数。(只是导入的文件名).from....import顺序不变,用来初始化模块,只在模块第一次被导入时执行。__name__;modlename.itemname的方法修改模块中的全局变量。

字节编译版。命令行中指定脚本文件名不产生.pyc文件.sys.ps1和sys.ps2在交互下有意义。

dir()列出模块下定义的名字(不含内置的) __builtin__

Python编程语言将功能相近的文件放在同一个文件夹下,该文件夹称之为包

from包import模块可以省略前面的包名。import只是导入的包名而已。

__init__.py文件标志了所在文件夹是包。

责任编辑:张浩 来源: 博客园
相关推荐

2010-03-15 15:45:15

Python编程语言

2019-09-02 10:51:59

Python脚本语言程序员

2017-05-18 10:23:55

模块化开发RequireJsJavascript

2010-03-11 17:38:20

Python中文

2018-03-21 21:31:28

Java9编程Java

2010-03-01 16:32:36

Python语言

2012-11-08 09:45:44

JavaScriptrequireJS

2011-05-13 15:54:50

C模块化

2019-08-28 16:18:39

JavaScriptJS前端

2009-08-27 15:33:58

C# Cookie编程

2010-01-20 09:14:49

C语言模块化

2016-12-14 14:50:26

CSS预处理语言模块化实践

2011-05-13 15:46:49

C模块化

2010-01-21 09:27:30

模块化的优点NetBeans

2023-12-25 22:24:36

C++模块Module

2019-01-30 14:04:57

Fedora存储库

2010-01-20 10:49:29

Visual C++界

2010-02-22 16:05:40

Python配置

2024-07-08 08:38:37

Python游戏开发

2010-02-01 10:21:36

Python编码转换
点赞
收藏

51CTO技术栈公众号