python包和模块的区别(python中模块和包的区别)

http://www.itjxue.com  2023-04-04 09:21  来源:未知  点击次数: 

Python中的模块和包的区别

1、模块(Module)就是包含代码的文件,不一定是Python代码,有四种代码类型的模块:

?使用Python写的程序( .py文件)

?C或C++扩展(已编译为共享库或DLL文件)

?包(包含多个模块)

?内建模块(使用C编写并已链接到Python解释器内)

使用模块可以提高代码的可维护性和重复使用,还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,所以编写自己的模块时,不必考虑名字会与其他模块冲突,但要注意尽量不要与内置函数名字冲突。

2、包(Package)就是包含模块文件的目录,目录名称就是包名称,目录中可以包含目录,子目录也是包,但包名称应该包含上一级目录的名称。Python引入了按目录来组织模块是为了避免模块名冲突,不同包中的模块名可以相同。

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

python的模块和类有什么区别

python模块是:

自我包含并且有组织的代码片段为模块。

表现形式为:写的代码保存为文件。这个文件就是一个模块。sample.py 其中文件名smaple为模块名字。

python中的类

类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例 。类变量:

类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实

例变量, 用于处理类及其实例对象的相关的数据。方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程

叫方法的覆盖(override),也称为方法的重写。局部变量:定义在方法中的变量,只作用于当前实例的类。实例变量:在类的声明中,

属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。继承:即一个派生类

(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设

计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。实例化:创建一个类的实

例,类的具体对象。方法:类中定义的函数。对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

推荐学习《python教程》。

【python】库、包、模块之间的区别和联系

划重点: 这三个概念(库、包、模块)实际上都是模块,只不过是个体和集合的区别。

一个模块就是一个.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块(.py文件)。

在模块之上的概念,为了方便管理而将 .py文件 进行打包。包目录下第一个文件便是 init .py(特点),然后是一些模块文件和子目录等。

库:具有相关功能模块的集合。这也是Python的一大特色之一,即具有强大的标准库、第三方库以及自定义模块。

python中的模块、库、包有什么区别?

模块,库,包主要区别在于他们的定义与所指范围不同。

python模块,包含并且有组织的代码片段为模块,sample.py 其中文件名smaple为模块名字。

而包是一个有层次的文件目录结构,它定义了由无数个模块或无数个子包组成的python应用程序执行环境。

库的概念是具有相关功能模块的集合。这也是正是Python的一大特色之一,即具有强大的标准库,还有第三方库以及自定义模块。

有哪位大神指导下,Python中文件、模块与包三者之间有什么区别呀?麻烦解释的详细点哈,谢谢啦。。。。

Python在处理功能复用和功能颗粒度划分时采用了类、模块、包的结构。这种处理跟C++中的类和名字空间类似,但更接近于Java所采用的概念。

类的概念在许多语言中出现,很容易理解。它将数据和操作进行封装,以便将来的复用。

模块

模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般用module_name.fun_name,和module_name.var_name进行使用。这样的语义用法使模块看起来很像类或者名字空间,可将module_name?理解为名字限定符。模块名就是文件名去掉.py后缀。下面演示了一个简单的例子:

#moduel1.py

def say(word):

????print word

#caller.py

import module1

print __name__

print module1.__name__

module1.say('hello')

$ python caller.py

__main__

module1

hello

例子中演示了从文件中调用模块的方法。这里还展示了一个有趣的模块属性__name__,它的值由Python解释器设定。如果脚本文件是作为主程序调用,其值就设为__main__,如果是作为模块被其他文件导入,它的值就是其文件名。这个属性非常有用,常可用来进行模块内置测试使用,你会经常在一些地方看到类似于下面的写法,这些语句只在作为主程序调用时才被执行。

if __name__ == '__main__':

app = wxapp(0)

app.MainLoop()

模块搜索路径

上面的例子中,当module1被导入后,python解释器就在当前目录下寻找module1.py的文件,然后再从环境变量PYTHONPATH寻找,如果这环境变量没有设定,也不要紧,解释器还会在安装预先设定的的一些目录寻找。这就是在导入下面这些标准模块,一切美好事情能发生的原因。

import os

import sys

import threading

...

这些搜索目录可在运行时动态改变,比如将module1.py不放在当前目录,而放在一个冷僻的角落里。这里你就需要通过某种途径,如sys.path,来告知Python了。sys.path返回的是模块搜索列表,通过前后的输出对比和代码,应能理悟到如何增加新路径的方法了吧。非常简单,就是使用list的append()或insert()增加新的目录。

#module2.py

import sys

import os

print sys.path

workpath = os.path.dirname(os.path.abspath(sys.argv[0]))

sys.path.insert(0, os.path.join(workpath, 'modules'))

print sys.path

$ python module2.py

['e:\\Project\\Python', 'C:\\WINDOWS\\system32\\python25.zip', ...]

['e:\\Project\\Python\\modules', 'e:\\Project\\Python', 'C:\\WINDOWS\\system32\\python25.zip', ...]

其他的要点

模块能像包含函数定义一样,可包含一些可执行语句。这些可执行语句通常用来进行模块的初始化工作。这些语句只在模块第一次被导入时被执行。这非常重要,有些人以为这些语句会多次导入多次执行,其实不然。

模块在被导入执行时,python解释器为加快程序的启动速度,会在与模块文件同一目录下生成.pyc文件。我们知道python是解释性的脚本语言,而.pyc是经过编译后的字节码,这一工作会自动完成,而无需程序员手动执行。

在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。

(责任编辑:IT教学网)

更多

推荐Discuz!建站文章