Python 函数详解(Python 3.x)
函数是 Python 中组织代码的基本单元,用于封装可重用的逻辑。与 Java 的 “方法” 类似,但 Python 函数更灵活,支持默认参数、关键字参数、可变参数等特性。本文将全面介绍 Python 函数的定义、参数类型、返回值及模块使用。
函数的基本定义与调用
使用 def
关键字定义函数,语法为:
1 | def 函数名(参数列表): |
无参数函数
不接收参数的函数,直接执行预设逻辑:
1 | # 定义无参数函数 |
带参数函数
接收输入参数,根据参数执行不同逻辑:
1 | # 定义比较两个数的函数 |
函数参数的高级用法
Python 函数参数支持多种灵活的传递方式,远超传统语言的位置参数。
默认值参数
为参数指定默认值,调用时可省略该参数(默认值参数必须放在无默认值参数之后):
1 | # 定义带默认值的函数 |
注意:默认值参数的默认值只在函数定义时计算一次,若默认值是可变对象(如列表),可能导致意外结果:
1 | def add_item(item, lst=[]): # 不推荐:默认值为可变对象 |
解决方法:用 None
作为默认值,在函数内初始化可变对象:
1 | def add_item(item, lst=None): |
关键字参数
调用函数时,通过 “参数名 = 值” 的方式传递参数,无需严格遵守位置顺序:
1 | def describe_person(name, age, city): |
关键字参数的优势:
- 提高代码可读性(明确参数含义)。
- 无需记忆参数顺序,尤其适合参数较多的函数。
可变参数
当参数数量不确定时,使用可变参数接收任意数量的输入:
*args
:接收任意数量的位置参数,打包为元组(tuple)。**kwargs
:接收任意数量的关键字参数,打包为字典(dictionary)。
1 | # 定义含可变参数的函数 |
输出结果:
1 | 姓名:Alice |
注意:参数定义顺序必须为:普通参数 → *args
→ **kwargs
。
函数的返回值
使用 return
语句返回函数执行结果,若未指定 return
,函数默认返回 None
。
基本返回值
1 | # 定义返回单个值的函数 |
返回多个值
Python 函数可通过元组间接返回多个值(本质是返回一个元组,自动解包):
1 | def get_user(): |
函数与模块(Module)
模块是包含函数和变量的 .py
文件,用于代码复用(类似 Java 的包)。
导入模块
假设存在 my_module.py
文件,内容如下:
1 | # my_module.py |
可通过以下方式导入模块中的内容:
导入方式 | 说明 | 示例调用 |
---|---|---|
import 模块名 |
导入整个模块 | my_module.greet("Alice") |
from 模块名 import 成员 |
导入模块中的指定成员(函数、变量) | from my_module import greet; greet("Alice") |
import 模块名 as 别名 |
给模块起别名,简化调用 | import my_module as mm; mm.add(1, 2) |
from 模块名 import * |
导入模块中所有公开成员(不推荐) | greet("Alice") |
示例:使用模块
1 | # 导入整个模块并起别名 |
安装与使用第三方模块
Python 生态有大量第三方模块,可通过 pip
安装(Python 3 建议用 pip3
):
1 | # 安装 requests 模块(用于网络请求) |
使用第三方模块:
1 | import requests |
函数的作用域
变量的作用域指其可访问的范围,Python 函数有两种主要作用域:
- 局部变量:在函数内部定义,仅在函数内有效。
- 全局变量:在函数外部定义,可在整个模块内访问。
1 | # 全局变量 |
修改全局变量:需用 global
声明:
1 | count = 0 |
v1.3.10