1、模块(Module)简介
模块(module)其实就是py文件,里面定义了一些函数、类、变量等,包(package)是多个模块的聚合体形成的文件夹,里面可以是多个py文件,也可以嵌套文件夹。库是参考其他编程语言的说法,是指完成一定功能的代码集合,在python中的形式就是模块和包。
2、定义模块(Module)
要创建模块,只需将所需的代码保存在文件扩展名为.py
的文件中:
例如:
将此代码保存在名为mymodule.py
的文件中
def say(name): print("hi cjavapy , " + name)
3、使用Module模块
现在,我们可以使用import
语句来使用刚刚创建的模块:
例如:
导入名为mymodule的模块,并调用greeting函数:
import mymodule mymodule.say("python")
注意:使用模块中的函数时,请使用语法:module_name.function_name
。
4、模块中的变量
如前所述,模块可以包含函数,也可以包含所有类型的变量(数组,字典,对象等):
例如:
将此代码保存在文件mymodule.py
中
person1 = { "name": "python", "age": 3, "country": "china" }
例如:
导入名为mymodule的模块,并访问person1字典:
import mymodule a = mymodule.person1["age"] print(a)
5、模块的命名
可以随意命名模块文件,但文件扩展名必须为.py
6、模块的别名
可以在导入模块时使用as
关键字创建别名:
例如:
为mymodule
创建一个名为mx
的别名:
import mymodule as mx a = mx.person1["age"] print(a)
7、内置模块
Python中有几个内置模块,可以直接导入使用。
例如:
导入并使用platform
模块:
import platform x = platform.system() print(x)
8、使用dir()函数查看模块中函数
内置函数可以列出模块中的所有函数名称(或变量名称),dir()
函数:
例如:
列出属于platform模块的所有已定义名称:
import platform x = dir(platform) print(x)
注意:dir()函数可以在所有模块上使用,也可以在自己创建的模块上使用。
9、使用from和import导入指定的功能
可以选择使用from
关键字从模块中仅导入部分的功能。
例如:
名为mymodule
的模块具有一个函数和一个字典:
def say(name): print("hi cjavapy , " + name) person1 = { "name": "python", "age": 3, "country": "china" }
例如:
从模块仅导入person1字典:
from mymodule import person1 print(person1["age"])
注意:使用from
关键字导入时,在引用模块中的元素时不要使用模块名称。 例如,person1["age"]
,不使用mymodule.person1 [“age”]
__name__
和 __main__
在模块中经常会看到 if __name__ == "__main__":
的代码块。这个条件用于判断当前模块是否作为主程序执行。当模块被直接执行时,__name__
的值为 "__main__"
;当模块被导入时,__name__
的值为模块名。
python
复制代码
# my_module.pydefsome_function(): print("This is some_function in my_module.") if __name__ == "__main__": print("my_module is being executed directly.") some_function()
通过这种方式,可以在模块被导入时避免执行一些不必要的代码。
10、标准库
Python拥有丰富的标准库,提供了许多有用的功能,如文件操作、网络编程、时间日期处理等。
模块名称 | 功能描述 |
---|---|
math | 提供数学相关函数,如三角函数、对数、平方根等。 |
datetime | 用于处理日期和时间。 |
os | 提供了访问操作系统服务的功能,如文件、进程管理等。 |
sys | 用于访问与Python解释器密切相关的变量和函数。 |
re | 提供正则表达式功能,用于复杂字符串处理。 |
json | 用于读取和写入JSON数据。 |
http | 包含创建HTTP服务的工具,如http.client和http.server。 |
urllib | 用于读取来自URL的数据。 |
sqlite3 | 提供了一个轻量级的数据库,可以使用SQL语法进行访问。 |
random | 生成伪随机数,用于各种随机化操作。 |
unittest | 用于编写和运行测试。 |
logging | 提供了灵活的记录事件、错误、警告和调试信息等功能。 |
argparse | 解析命令行参数和选项。 |
pathlib | 提供面向对象的文件系统路径操作。 |
collections | 提供额外的数据类型,如Counter、deque、OrderedDict等。 |
subprocess | 用于生成新进程,连接到它们的输入/输出/错误管道,获取结果。 |
threading | 用于提供线程支持。 |
multiprocessing | 支持进程间通信和并发。 |
xml.etree.ElementTree | 用于XML数据处理。 |
用于管理电子邮件消息,包括MIME和其他基于RFC 2822的消息文档。 |