Python中modlue和packages有什么区别
Python中modlue和packages有什么区别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
首先打开Pycharm(没用过的可以先百度安装,很简单),左上角点
File--> New Project
然后这里随便取个名字,我这里叫做 packages_demo
其实这里说随便,其实不管是什么编程语言,文件,函数的命名都是有讲究的,尽量取的能代表你要做的事情,增加代码易读性。
然后右键刚才新建的包的,选择Python File,取名为setup.py
然后再点我们工程名字,选择Directory,新建两个文件夹, 一个取名为packages_demo。另一个叫demo。
然后再packages_demo文件夹下面,新建两个Python File,一个叫 __init__.py, 一个叫 __version__.py。顺便再建一个Python File 叫firsrt.py 。另外在demo文件夹下新建一个Python File 叫做outer.py。
好,现在我们的工程结构是这样的:
好,先停一下,我们讲一下细节。
刚开始学Python的时候,可能你是在Python Shell 里面敲了一个print("Hello World !")
后来你也可能也会在Shell里面写个函数。但是等你关掉Shell 的时候,你写的代码就没了,也就是没有保存起来,问题就来了,写的代码都没保存,那后面想用的时候就没法用。
所以你会在Shell里面选择新建文件,然后保存,命名为demo.py。 然后这时候就可以在Shell里面import 进来你写的demo 包了,这个包就是Python中的module,Python中的包包括内置的包和第三方包,内置的包不需要安装,第三方包需要手动安装,而一般的包都可以通过pip来安装,那我怎么知道,那些可以用pip,那些不可以用pip呢? 你安装一下,安装成功了,就说明可以啊。。。
另外一种安装方式就是下载包的源代码,然后执行 python setup.py install , 同样也可以安装,还有些包有.whl后缀的文件,这个也可以直接pip xxx.whl install 运行安装, whl其实是已经编译好的pyd文件,这样在本地安装的时候就不需要编译,pyd文件是怎么产生的? 是我们在编译.py文件的时候,Python解释器自动生成的。
关于Python包还有一个需要掌握的就是 下面这个
if __name__ == "__main__"
这一句是什么意思? 当我们在Shell里面import demo,并计算1,2的和的时候,下面那句并没有输出。然后我们Ctrl+F5,执行demo.py文件,他输出结果:
这就说明,if __name__ == "__main__"的作用就是说,下面的代码只有在直接执行demo.py时才运行,而import 的时候是不执行的。
好,为了让大家彻底理解,我我们在demo.py中加入一句,print(__name__)
然后在Shell里面import demo 出现结果为demo。 然后调用demo的__name__方法。输出也是demo。
然后直接运行demo.py,显式的名字为 __main__,这你就明白了吧。。
到这,关于module 需要了解的就这么多了,最后说一下,Python中的双下划线开头表示的是特殊方法名。也就是说,name是Python中的一个特殊方法,所以加了双下划线。
我们用dir()方法可以查看demo这个module下面都定义了哪些方法
可以看到这里除了add以外,还有几个特殊方法,这个特殊方法,是Python预定义好的。
然后,注意一下,里面有个__package__的特殊方法,调用一下
结果显示为空,也就说它没有package,其实这里也可以看出来,package是比module高一级的东西。
package在Python中的意思就是多个module组成起来就是package了。
关于package有两点需要注意的,一是每个package下面需要包含 __init__.py文件,二是package的好处在于方便代码管理和避免命名冲突。
好,然后我们回到开始让大家新建的文件。其实就是新建了一个工程,在工程下面新建一个packages和一个module, 一个叫package_demo,一个叫demo。然后我们在first.py和outer.py下面随便写一点代码:
first.py
print("This is first modlue")
def fun(x):
return x * 2
outer.py
from packages_demo import first
def fun():
return first.fun(x=3)
if __name__ == "__main__":
results = fun()
print(results)
然后看一下,setup.py 这个文件,这里要介绍的是setuptools这和包,这是一个Python自带的包管理工具,可以编译,安装,管理Python的包。下面是一个简单的demo展示,代码很少,这样就可以创建一个我们自己的package了。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import find_packages, setup
NAME = 'packages_demo'
setup(
name=NAME,
version="0.0.1",
packages=find_packages()
)
然后我们打开Pycharm下面的Terminal命令行,执行python setup.py install.
这样我们就安装了一个自己写的package。是不是很帅?
安装完之后,文件夹下面多了这个三个文件夹,这个就是编译好的Python的包
然后我们也可以在我们的Shell里面直接调用了,这就表明,我们已经封装好了一个Python的package,这个packages_demo就和平时用的os, sys, pandas等等包的原理没有区别。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。