模块与包

一、什么是模块?

模块是工具箱,常用的通用的代码 规整到一起,可以供有需要的人调用。 这就是模块。

模块的最小单位是python文件,要成为可以被调用的模块 就要遵循变量的命名方式来给模块命名。(按照变量命名规则命名的Python文件 就可以作为模块 导入使用)

模块也可以是文件夹,文件夹下面有Python文件。文件夹下面有一个__init__.py的文件。这样的文件夹,我们也叫作包。(一个Python文件是一个模块,一个包 也可以是一个模块。包是特殊的文件夹,里头有__init__.py文件)

有一种情况下,文件夹里头没有__init__也可以导入包和模块,就是bin 目录下面是入口文件,入口文件已经把整个项目放到 sys.path中了,程序从入口文件运行。这个时候文件夹里头没有__init__也是可以的。

 

模块按照来源不同可以分为三类:

内置模块: Python解释器提供

第三方模块:Python大牛写的,发布到网上供大家使用的,可以去第三方库下载。

自定义模块:自己写的

 

二、模块导入规范

import 内置模块1

import 内置模块2

 

import 第三方1

 

import 自定义1

import 自定义2

 

三、一个Python文件的两种用途

1.Python文件当做程序运行

print(__name__)  # __main__     Python文件的内置属性__name__的值是 __main__

2.Python文件当做模块导入

 print(__name__)  # 某块名    Python文件的内置属性__name__的值是 __main__

 

所以 我们可以利用__name__,实现下面的操作

在一个.py的模块文件中,有些代码,我们是只有文件被执行的时候才希望它运行的。文件被导入的时候,我们不希望这部分代码别执行。

那么我们就可以加上if 判断,只有 __name__ == ‘__main__‘的时候,下面的代码才执行。

if __name__ == ‘__main__‘:

  print('这些代码,我不希望导入我的人能执行哟,它们只会在.py文件被执行的时候才会被执行')

 

四、编写模块规范

“The module is used to ...”  # 编写文档注释

import sys  # 导入模块

x = 1 # 定义全局变量,如非必要,最好定义成局部变量

class Foo:  # 定义类, 并写好类注释

  ‘Class Foo is used to ...’

  pass

def test():   # 定义函数,并写好函数注释

  ‘Function test is used to ...’

  pass

if __name__ == '__main__':  # 主程序

  test()  # 在被当做脚本执行时,执行此处的代码

 

四、模块的导入

from package1.package2.module import func

直接执行 func()

import packge1.package2.module

执行 packge1.package2.module.func()

 

posted @ 2020-07-31 23:01  正在学Python  阅读(199)  评论(0编辑  收藏  举报