模块
模块的定义
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 Python 标准库的方法。
命名空间
- 内置命名空间: python运行时, 内置命名空间就已经存在, 例如内置函数, 可以直接使用
- 全局命名空间: 模块里的空间, 每个模块相互独立
- 本地命名空间: 类与函数里的局部空间, 随着类与函数的结束而结束
导入模块
语法:
# 方式1, 使用时需要写全名, 模块名.名称
import 模块名
# 方式2, 使用时写名称即可
from 模块名 import 类名或函数名或变量名 [as 别名]
# 方式3, 不推荐, 导入模块里的所有名称
from 模块名 import *
if name == “main”:
测试语句: 可以只运行当前模块的代码, 不会在被导入时运行测试代码, name是当前模块的一个属性, 如果其实主模块, 就会被赋值为"__main__"
搜索路径
- 当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
- 搜索路径是在 Python 编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在 sys 模块中的 path 变量中。
包
- 包是模块的集合
- 包需要一个__init__.py模块(即使是空的)
- 包里可以装包(仍需要__init__.py文件)
- 包的导入: import 包名.[子包名].模块名(使用的时候写全名), from 包名.[子包名].模块名(使用的时候写全名) import 类, 函数, 变量(直接使用)
- __init__.py存在一个叫做__all__的列表变量, 使用from 包 import * 时, 会自动加载列表里的所有名称
练习题
import collections
def most_element(language):
counter = collections.Counter(language)
list = counter.most_common(1)
print(list[0][0])
if __name__ == '__main__':
language = ['PHP', 'PHP', 'Python', 'PHP', 'Python', 'JS', 'Python', 'Python','PHP', 'Python']
most_element(language)