- Python 基础知识
- Python - 主页
- Python - 概述
- Python - 历史
- Python - 特性
- Python 与 C++
- Python——Hello World 程序
- Python - 应用领域
- Python解释器
- Python-环境设置
- Python-虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 文字
- Python - 运算符
- Python - 运算符优先级
- Python - 算术运算符
- Python - 赋值运算符
- Python - 增强运算符
- Python - 比较运算符
- Python - 逻辑运算符
- Python - 位运算符
- Python - 会员运算符
- Python - 身份运算符
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - 如果有的话
- Python - 大小写匹配语句
- Python - for 循环
- Python - for-else 循环
- Python - While 循环
- Python-break语句
- Python-继续语句
- Python - pass 语句
- Python 函数和模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅关键字参数
- Python - 位置参数
- Python - 仅位置参数
- Python - 任意参数
- Python - 变量作用域
- Python - 函数注释
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python-字符串
- Python - 字符串切片
- Python-修改字符串
- Python-字符串连接
- Python——字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 弦乐练习
- Python 列表
- Python - 列表
- Python - 访问列表项
- Python - 更改列表项
- Python - 添加列表项
- Python - 删除列表项
- Python - 循环列表
- Python - 列表理解
- Python - 列表排序
- Python - 复制列表
- Python - 连接列表
- Python - 列表方法
- Python - 列出练习
- Python 元组
- Python - 元组
- Python - 访问元组项
- Python - 更新元组
- Python - 解压元组
- Python - 循环元组
- Python - 连接元组
- Python - 元组方法
- Python - 元组练习
- Python 集
- Python - 集合
- Python - 访问设置项
- Python - 添加设置项
- Python - 删除设置项
- Python - 循环集
- Python - 连接集
- Python - 复制集
- Python - 集合运算符
- Python - 设置方法
- Python - 设置练习
- Python 字典
- Python - 字典
- Python - 访问字典项目
- Python - 更改字典项目
- Python - 添加字典项
- Python - 删除字典项
- Python - 字典查看对象
- Python - 循环字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python-数组
- Python - 访问数组项
- Python - 添加数组项
- Python - 删除数组项
- Python - 循环数组
- Python - 复制数组
- Python - 反转数组
- Python - 数组排序
- Python - 连接数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python-写入文件
- Python-读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python - 操作系统文件/目录方法
- 面向对象编程
- Python - OOP 概念
- Python - 对象和类
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python——继承
- Python——多态性
- Python - 方法重写
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python-封装
- Python - 接口
- Python - 包
- Python - 内部类
- Python - 匿名类和对象
- Python-单例类
- Python - 包装类
- Python-枚举
- Python-反射
- Python 错误与异常
- Python - 语法错误
- Python - 异常
- Python - try- except 块
- Python - try-finally 块
- Python - 引发异常
- Python - 异常链
- Python - 嵌套 try 块
- Python - 用户定义的异常
- Python-日志记录
- Python-断言
- Python - 内置异常
- Python 多线程
- Python-多线程
- Python-线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 连接线程
- Python - 命名线程
- Python-线程调度
- Python-线程池
- Python - 主线程
- Python-线程优先级
- Python - 守护线程
- Python - 同步线程
- Python同步
- Python-线程间通信
- Python-线程死锁
- Python - 中断线程
- Python 网络
- Python-网络
- Python-套接字编程
- Python-URL 处理
- Python - 泛型
- Python 杂项
- Python - 日期和时间
- Python - 数学
- Python - 迭代器
- Python - 生成器
- Python - 闭包
- Python - 装饰器
- Python - 递归
- Python - 正则表达式
- Python-PIP
- Python-数据库访问
- Python - 弱引用
- Python-序列化
- Python - 模板
- Python - 输出格式
- Python-性能测量
- Python-数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - 图形用户界面编程
- Python - 命令行参数
- Python - 文档字符串
- Python-JSON
- Python-发送电子邮件
- Python - 进一步扩展
- Python - 工具/实用程序
- Python - 图形用户界面
- Python 问题与解答
- Python - 编程示例
- Python - 快速指南
- Python - 有用的资源
- Python - 讨论
Python - 模块
函数是有组织的、可重用的代码块,用于执行单个相关操作。函数为您的应用程序提供更好的模块化性和高度的代码重用。
Python中的模块概念进一步增强了模块化性。您可以一起定义多个相关函数并加载所需的函数。模块是包含函数、类、变量、常量或任何其他 Python 对象的定义的文件。该文件的内容可供任何其他程序使用。Python 有 import 关键字用于此目的。
例子
import math print ("Square root of 100:", math.sqrt(100))
它将产生以下输出-
Square root of 100: 10.0
内置模块
Python 的标准库捆绑了大量模块。它们称为内置模块。大多数这些内置模块都是用 C 编写的(因为 Python 的参考实现是用 C 编写的),并预编译到库中。这些模块包含有用的功能,例如系统特定的操作系统管理、磁盘 IO、网络等。
这是内置模块的选择列表 -
先生。 | 名称及简要说明 |
---|---|
1 |
操作系统 该模块为许多操作系统功能提供了统一的接口。 |
2 |
细绳 该模块包含许多用于字符串处理的函数 |
3 |
关于 该模块提供了一组强大的正则表达式工具。正则表达式 (RegEx),允许对字符串中的模式进行强大的字符串搜索和匹配 |
4 |
数学 该模块实现了浮点数的许多数学运算。这些函数通常是平台 C 库函数的精简包装。 |
5 |
数学 该模块包含许多复数的数学运算。 |
6 |
约会时间 该模块提供处理日期和一天内时间的函数。它包装了 C 运行时库。 |
7 |
GC 该模块提供了内置垃圾收集器的接口。 |
8 |
异步 该模块定义了异步处理所需的功能 |
9 |
收藏 该模块提供高级容器数据类型。 |
10 |
功能工具 该模块具有对可调用对象的高阶函数和操作。在函数式编程中很有用 |
11 |
操作员 与标准运算符对应的功能。 |
12 |
泡菜 将 Python 对象与字节流相互转换。 |
13 |
插座 低级网络接口。 |
14 |
sqlite3 使用 SQLite 3.x 的 DB-API 2.0 实现。 |
15 |
统计数据 数理统计函数 |
16 |
打字 支持类型提示 |
17 号 |
维尼夫 创建虚拟环境。 |
18 |
json 对 JSON 格式进行编码和解码。 |
19 |
wsgiref WSGI 实用程序和参考实现。 |
20 |
单元测试 Python 的单元测试框架。 |
21 |
随机的 生成伪随机数 |
用户定义的模块
任何具有 .py 扩展名并包含 Python 代码的文本文件基本上都是一个模块。它可以包含一个或多个函数、变量、常量以及类的定义。模块中的任何 Python 对象都可以通过 import 语句提供给解释器会话或另一个 Python 脚本。模块还可以包含可运行的代码。
创建模块
创建模块只不过是在任何编辑器的帮助下保存 Python 代码。让我们将以下代码保存为mymodule.py
def SayHello(name): print ("Hi {}! How are you?".format(name)) return
您现在可以在当前 Python 终端中导入 mymodule。
>>> import mymodule >>> mymodule.SayHello("Harish") Hi Harish! How are you?
您还可以在另一个 Python 脚本中导入一个模块。将以下代码保存为 example.py
import mymodule mymodule.SayHello("Harish")
从命令终端运行此脚本
C:\Users\user\examples> python example.py Hi Harish! How are you?
进口声明
在 Python 中,提供了import关键字来从一个模块加载 Python 对象。该对象可以是函数、类、变量等。如果一个模块包含多个定义,则所有这些定义都将加载到命名空间中。
让我们将以下具有三个函数的代码保存为mymodule.py。
def sum(x,y): return x+y def average(x,y): return (x+y)/2 def power(x,y): return x**y
import mymodule语句加载当前命名空间中该模块中的所有函数。导入模块中的每个函数都是该模块对象的一个属性。
>>> dir(mymodule) ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'average', 'power', 'sum']
要调用任何函数,请使用模块对象的引用。例如,mymodule.sum()。
import mymodule print ("sum:",mymodule.sum(10,20)) print ("average:",mymodule.average(10,20)) print ("power:",mymodule.power(10, 2))
它将产生以下输出-
sum:30 average:15.0 power:100
from ... import 语句
import语句将加载当前命名空间下模块的所有资源。可以使用此语法从模块导入特定对象。例如 -
在mymodule的三个函数中,只有两个函数被导入到以下可执行脚本example.py中
from mymodule import sum, average print ("sum:",sum(10,20)) print ("average:",average(10,20))
它将产生以下输出 -
sum: 30 average: 15.0
请注意,调用函数时无需为其添加模块名称前缀。
from...import * 语句
还可以使用以下 import 语句将模块中的所有名称导入到当前命名空间中 -
from modname import *
这提供了一种将模块中的所有项目导入到当前命名空间的简单方法;但是,应谨慎使用此语句。
import ... as 声明
您可以为导入的模块指定别名。
from modulename as alias
调用时,别名应作为函数的前缀。
看一下下面的例子-
import mymodule as x print ("sum:",x.sum(10,20)) print ("average:", x.average(10,20)) print ("power:", x.power(10, 2))
模块属性
在Python中,模块是模块类的对象,因此它由属性来表征。
以下是模块属性 -
__file__ 返回模块的物理名称。
__package__ 返回模块所属的包。
__doc__ 返回模块顶部的文档字符串(如果有)
__dict__ 返回模块的整个范围
__name__ 返回模块的名称
例子
假设以下代码保存为mymodule.py
"The docstring of mymodule" def sum(x,y): return x+y def average(x,y): return (x+y)/2 def power(x,y): return x**y
让我们通过在以下脚本中导入 mymodule 来检查它的属性 -
import mymodule print ("__file__ attribute:", mymodule.__file__) print ("__doc__ attribute:", mymodule.__doc__) print ("__name__ attribute:", mymodule.__name__)
它将产生以下输出-
__file__ attribute: C:\Users\mlath\examples\mymodule.py __doc__ attribute: The docstring of mymodule __name__ attribute: mymodule
__name__属性
Python 模块的 __name__ 属性具有重要意义。让我们更详细地探讨一下。
在交互式 shell 中,__name__ 属性返回 '__main__'
>>> __name__ '__main__'
如果您在解释器会话中导入任何模块,它会返回该模块的名称作为该模块的 __name__ 属性。
>>> import math >>> math.__name__ 'math'
在 Python 脚本内部,__name__ 属性返回“__main__”
#example.py print ("__name__ attribute within a script:", __name__)
在命令终端中运行它 -
__name__ attribute within a script: __main__
此属性允许将 Python 脚本用作可执行文件或模块。与 C++、Java、C# 等不同,Python 中没有 main() 函数的概念。扩展名为 .py 的 Python 程序脚本可以包含函数定义以及可执行语句。
保存mymodule.py并使用以下代码 -
"The docstring of mymodule" def sum(x,y): return x+y print ("sum:",sum(10,20))
您可以看到 sum() 函数是在定义它的同一脚本中调用的。
C:\Users\user\examples> python mymodule.py sum: 30
现在让我们在另一个脚本example.py中导入这个函数。
import mymodule print ("sum:",mymodule.sum(10,20))
它将产生以下输出-
C:\Users\user\examples> python example.py sum: 30 sum: 30
输出“sum:30”出现两次。导入 mymodule 模块时一次。导入模块中的可执行语句也会运行。第二个输出来自调用脚本,即example.py程序。
我们想要发生的是,当导入模块时,只应导入函数,而不应运行其可执行语句。这可以通过检查 __name__ 的值来完成。如果是 __main__ ,则表示正在运行而不是导入。包括有条件的函数调用等可执行语句。
在mymodule.py中添加if语句,如下所示 -
"The docstring of mymodule" def sum(x,y): return x+y if __name__ == "__main__": print ("sum:",sum(10,20))
现在如果你运行example.py程序,你会发现 sum:30 输出只出现一次。
C:\Users\user\examples> python example.py sum: 30
reload() 函数
有时您可能需要重新加载模块,尤其是在使用 Python 的交互式解释器会话时。
假设我们有一个具有以下功能的测试模块(test.py) -
def SayHello(name): print ("Hi {}! How are you?".format(name)) return
我们可以导入模块并从 Python 提示符中调用其函数,如下所示:
>>> import test >>> test.SayHello("Deepak") Hi Deepak! How are you?
但是,假设您需要修改 SayHello() 函数,例如 -
def SayHello(name, course): print ("Hi {}! How are you?".format(name)) print ("Welcome to {} Tutorial by TutorialsPoint".format(course)) return
即使编辑 test.py 文件并保存,加载到内存中的函数也不会更新。您需要使用 imp 模块中的 reload() 函数重新加载它。
>>> import imp >>> imp.reload(test) >>> test.SayHello("Deepak", "Python") Hi Deepak! How are you? Welcome to Python Tutorial by TutorialsPoint