上一篇
Python3函数完全指南:从基础到高级用法详解
- Python
- 2025-08-12
- 933
Python3函数完全指南
函数是Python编程的核心概念之一。本教程将带你全面了解Python3函数的定义、参数传递、作用域以及高级用法。
教程内容概览:
- 函数定义与调用
- 参数类型:位置参数、关键字参数、默认参数
- 返回值与多返回值
- 变量作用域解析
- 递归函数详解
- Lambda表达式应用
- 函数式编程概念
一、函数定义与调用
函数是组织好的、可重复使用的代码块,用于执行特定任务。
基本函数定义语法:
def function_name(parameters): """函数文档字符串""" # 函数体 return [expression]
示例:简单函数
# 定义函数 def greet(name): """返回问候语""" return f"你好, {name}!" # 调用函数 print(greet("张三")) # 输出: 你好, 张三!
二、函数参数详解
Python函数支持多种参数传递方式:
1. 位置参数
最常见的参数传递方式,按顺序传递参数
def power(base, exponent): return base ** exponent print(power(2, 3)) # 8
2. 默认参数
为参数提供默认值,调用时可省略
def greet(name, greeting="你好"): return f"{greeting}, {name}!" print(greet("李四")) # 你好, 李四! print(greet("王五", "早上好")) # 早上好, 王五!
3. 关键字参数
按参数名传递值,顺序不重要
def person_info(name, age, city): return f"{name}, {age}岁, 来自{city}" print(person_info(age=25, city="北京", name="赵六"))
4. 可变参数
*args接收任意数量的位置参数
**kwargs接收任意数量的关键字参数
def sum_all(*numbers): total = 0 for num in numbers: total += num return total print(sum_all(1, 2, 3)) # 6 print(sum_all(4, 5, 6, 7)) # 22 def print_info(**info): for key, value in info.items(): print(f"{key}: {value}") print_info(name="张三", age=30, city="上海")
三、返回值与多返回值
Python函数可以返回多个值(实际上是返回元组)
def min_max(numbers): return min(numbers), max(numbers) nums = [4, 2, 9, 7, 5] minimum, maximum = min_max(nums) print(f"最小值: {minimum}, 最大值: {maximum}")
四、变量作用域
Python有四种作用域:局部(Local)、闭包(Enclosing)、全局(Global)、内置(Built-in)
作用域示例:
global_var = "全局变量" def outer_function(): enclosing_var = "闭包变量" def inner_function(): local_var = "局部变量" # 可以访问所有作用域变量 print(global_var) # 全局变量 print(enclosing_var) # 闭包变量 print(local_var) # 局部变量 inner_function() # 尝试访问内部函数变量会出错 # print(local_var) # NameError outer_function()
五、递归函数
递归函数是调用自身的函数,需要设置终止条件
经典示例:阶乘计算
def factorial(n): # 终止条件 if n == 0 or n == 1: return 1 # 递归调用 return n * factorial(n-1) print(factorial(5)) # 120
斐波那契数列
def fibonacci(n): if n <= 0: return [] elif n == 1: return [0] elif n == 2: return [0, 1] fib_seq = fibonacci(n-1) fib_seq.append(fib_seq[-1] + fib_seq[-2]) return fib_seq print(fibonacci(10)) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
六、Lambda表达式
Lambda用于创建小型匿名函数,适合简单操作
基本语法
lambda arguments: expression
示例:
square = lambda x: x**2 print(square(5)) # 25
与高阶函数配合
在map(), filter()等函数中使用
# 使用map()将平方函数应用到列表 numbers = [1, 2, 3, 4] squared = list(map(lambda x: x**2, numbers)) print(squared) # [1, 4, 9, 16] # 使用filter()过滤偶数 even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) # [2, 4]
七、函数式编程工具
Python提供了一些函数式编程工具:
1. map()函数
# 将字符串转换为大写 words = ["hello", "world", "python"] upper_words = list(map(str.upper, words)) print(upper_words) # ['HELLO', 'WORLD', 'PYTHON']
2. filter()函数
# 过滤出长度大于5的单词 long_words = list(filter(lambda word: len(word) > 5, words)) print(long_words) # ['python']
3. reduce()函数
from functools import reduce # 计算列表元素的乘积 numbers = [1, 2, 3, 4] product = reduce(lambda x, y: x * y, numbers) print(product) # 24
函数最佳实践
- ✔️ 函数应该保持简洁,专注于单一功能
- ✔️ 使用描述性的函数名和参数名
- ✔️ 为函数添加文档字符串说明功能
- ✔️ 避免使用全局变量修改状态
- ✔️ 函数参数数量不宜过多(通常不超过5个)
- ✔️ 优先使用返回值而不是修改输入参数
注意: Python函数是"一等公民",这意味着它们可以像其他对象一样被传递、赋值和返回。这个特性使得Python非常适合函数式编程风格。
本教程涵盖了Python函数的核心概念,希望对你掌握Python编程有帮助!
本文由GuMengSen于2025-08-12发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257959.html
发表评论