Python模块和包简介

在实际项目开发过程中,功能需求会越来越多,从而代码也会越来越多,如果所有的代码全部写在一个.py文件里面,会很糟糕,代码可读性也差,也不容易维护。所以,Python语言设计者,提出了模块和包的概念。

模块,就是每个.py文件的内容。

包,就是.py文件所在的目录。

1、使用Python内置模块

其实之前的相关内容文章里面已经有体现了,比如文件目录遍历时引入了os模块。

示例:引入sys.py模块

importsys#引入模块,注意不要加.py

print("获取命令行参数:")

foriinsys.argv:

print(i)

print("Python 路径为:",sys.path)

输出:

>>>获取命令行参数:

>>>D:/Code/2.py

>>>Python 路径为: ['D:\\Code', 'D:\\Code', 'D:\\Code\\venv\\Scripts\\python37.zip', 'D:\\Python\\Python37\\DLLs', 'D:\\Python\\Python37\\lib', 'D:\\Python\\Python37', 'D:\\Code\\venv', 'D:\\Code\\venv\\lib\\site-packages', 'D:\\Code\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.7.egg', 'D:\\Code\\venv\\lib\\site-packages\\pip-10.0.1-py3.7.egg', 'D:\\Program Files\\JetBrains\\PyCharm 2018.2.3\\helpers\\pycharm_matplotlib_backend']

2、使用自定义模块

自定义模块时,需要注意模块名称不要与系统自带的模块命名重复

我们创建一个getpath.py文件,里面的代码就是之前的遍历目录的代码。

然后在新建一个test.py文件,在test.py文件里面引入getpath.py模块中的getPath函数。

2.1 使用import 语句引入

importgetpath#引入getpath自定义模块

getpath.getPath(r"D:\Code\log")

执行即可遍历D:Code\log目录

2.2 使用from......import语句引入

说明:从模块中引入指定内容

fromgetpathimportgetPath#引入getpath自定义模块

getPath(r"D:\Code\log")

执行即可遍历D:Code\log目录

2.3 使用from......import *语句引入

说明:把一个模块中的所有内容全部引入,一般建议少用该方式

fromgetpathimport*#引入getpath自定义模块

getPath(r"D:\Code\log")

执行即可遍历D:Code\log目录

3、__name__属性

一个模块被了另一个程序引入,如果我们想让模块中的某一程序块不执行,可以用__name__属性来使该程序块仅在该模块自身运行时执行。

示例:

我们修改getpath.py文件,在最后添加一个打印

print("程序运行结束")

这样我们在运行getpath.py时,会输出“程序运行结束”,运行test.py时也会输出“程序运行结束”。

如果我们想实现:运行getpath.py时,输出,运行test.py时不输出,可以这样来实现:在print打印前面增加一个__name__ == "__main__"

4、包

为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。只要顶层的包不与其他包发生冲突,那么包里面的模块都不会发生冲突。

注意:只有目录中包含一个 __init__.py 的文件才会被认作是一个包,这个文件是必须存在的。

示例:

比如一个Code包,里面有getpath模块,模块中有一个getPath函数,引入方式如下:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010G0B42500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券