当前位置:
首页 > Python基础教程 >
-
Python 函数 —— 代码复用的基石
一、函数的定义与基本语法
在 Python 中,函数是代码复用和逻辑封装的核心单元。通过 def 关键字定义函数,基本语法如下:
def function_name(parameters):
"""文档字符串:描述函数功能"""
# 函数逻辑
return result # 可选,默认返回None
示例:计算两数之和
def calculate_sum(a, b):
"""返回两个数的和"""
return a + b
result = calculate_sum(3, 5) # 调用函数,输出8
二、参数传递的艺术
函数的灵活性很大程度上取决于参数的设计,Python 支持多种参数类型:
-
位置参数(Positional Arguments)
最基础的参数传递方式,按定义顺序传入值:
def greet(name, age):
return f"{name} is {age} years old."
print(greet("Alice", 30)) # 输出:Alice is 30 years old.
-
关键字参数(Keyword Arguments)
通过参数名指定值,打破顺序限制:
print(greet(age=25, name="Bob")) # 输出:Bob is 25 years old.
3. 默认参数(Default Arguments)
为参数设置默认值,调用时可省略:
def greet(name, age=18): # age默认值为18
return f"{name} is {age} years old."
print(greet("Charlie")) # 输出:Charlie is 18 years old.
- 可变参数(Arbitrary Arguments)
*args:接收任意数量的位置参数(元组)
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4)) # 输出:10
**kwargs:接收任意数量的关键字参数(字典)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="David", age=35, city="Shanghai")
三、返回值的多样性
函数通过 return 语句返回结果,支持以下类型:
-
单值返回
最常见的形式,返回任意类型对象:
def square(x):
return x ** 2 # 返回整数
-
多值返回(元组解包)
返回多个值时,Python 默认封装为元组,可通过解包获取:
def get_user():
return "Eve", 28, "Designer" # 隐式返回元组
name, age, job = get_user() # 解包赋值
print(name, age, job) # 输出:Eve 28 Designer
-
无返回值(NoneType)
若省略 return 或无 return 语句,函数默认返回 None:
def print_hello():
print("Hello!") # 无返回值
result = print_hello()
print(result) # 输出:None
注意:None 不等于 0 或空字符串,需用 is 关键字判断:
if result is None:
print("函数未返回有效结果")
四、函数的说明文档与注解
良好的文档是代码可读性的关键:
-
文档字符串(Docstring)
在函数内部首行用三引号注释,描述功能、参数、返回值:
def calculate_avg(numbers):
"""
计算列表中数字的平均值
参数:
numbers (list): 包含数字的列表
返回:
float: 平均值
"""
return sum(numbers) / len(numbers)
通过 函数名.doc 或 help(函数名) 查看文档。
-
类型注解(Type Hints)
为参数和返回值添加类型提示(非强制,但提升可维护性):
def add(a: int, b: int) -> int:
return a + b
五、变量作用域与嵌套调用
-
局部变量 vs 全局变量
局部变量:函数内部定义,仅在函数内可用。
全局变量:函数外定义,需用 global 关键字声明后修改。
count = 0 # 全局变量
def increment():
global count # 声明使用全局变量
count += 1
increment()
print(count) # 输出:1
-
嵌套函数(闭包)
函数内部定义函数,内部函数可访问外部函数的变量:
def outer(x):
def inner(y):
return x + y # 闭包捕获x的值
return inner
add_5 = outer(5)
print(add_5(3)) # 输出:8
六、Lambda 匿名函数
用于定义简短的一次性函数,语法为 lambda 参数: 表达式:
# 等价于 def square(x): return x**2
square = lambda x: x ** 2
print(square(4)) # 输出:16
# 结合map/filter使用
numbers = [1, 2, 3, 4]
even_squares = list(map(lambda x: x**2, filter(lambda x: x%2==0, numbers)))
print(even_squares) # 输出:[4, 16]
总结
Python 函数是编程的基石,掌握参数设计、返回值处理、作用域和匿名函数等特性,能显著提升代码的复用性和可维护性。无论是日常脚本还是大型项目,函数都是化繁为简的关键工具。
本文作者: 一点浩然气~
本文链接: https://www.cnblogs.com/FrostBoy/p/18795803
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比