本文共 3491 字,大约阅读时间需要 11 分钟。
随着编程知识的学习,函数在Python中扮演着越来越重要的角色。本文将从多个方面深入探讨Python中的函数概念,包括定义与使用、参数传递、变量作用域、偏函数、递归、高阶函数、BIFs中的高阶函数、匿名函数、闭包以及装饰器等内容。
def foo1(num): # 函数名为 foo1,参数为 num # 函数体内的逻辑yles return num * 2 # 返回结果foo1(5) # 调用函数 foo1,传入参数 5
def:(定义函数名)参数:(可选择的参数列表)函数体:(函数执行的逻辑代码)return:(可选的返回语句,用于输出结果)yield:(可选的生成器语句,与 return 有区别)| 返回类型 | 说明 |
|---|---|
| 有返回值 | 使用 return 语句返回一个值,例如 return num * 2。 |
| 无返回值 | 如果没有 return 语句,函数将返回 None。 |
print 和 return 的区别: | print 输出内容不影响函数返回值,而 return 告诉调用者函数已完成。 |
参数分类:
*args 接收任意数量的位置参数,使用 **kwargs 接收任意数量的关键字参数。参数传递方式示例:
def sum_all(*args): return sum(args)sum_all(1, 2, 3, 4) # 正确调用sum_all([1, 2, 3], [4, 5]) # 错误调用,需使用 `*`包裹非关键字参数
def greet(name, age=25, country="中国"): return f"您好!{name},来自{country},年龄{age}岁"greet("Reynold", country="美国") # 传递关键字参数,覆盖默认值global 关键字声明。nonlocal 可访问父函数的变量。from functools import partialfoo2_with_10 = partial(foo2, 10)foo2_with_10(20) # 10 已经固定为第一个参数
def hex2int(num): return int(num, 16)hex2int(Configs.CONway) # 配置文件中的字符串需要被转换为16进制# 使用偏函数优化:hex2int_p = partial(hex2int, base=16)hex2int_p('a1') # 转换为10进制为 161def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1)print(factorial(5)) # 输出:1*2*3*4*5 = 120
() 括号调用函数,最后返回一个值或生成器。def calculate(num, func): return func(num) # 使用高阶函数mycal = calculate(100, max) # 返回 100
def is_even(x): return x % 2 == 0filtered_list = list(filter(is_even, [1, 2, 3, 4, 5]))print(filtered_list) # 输出: [2, 4]
def multiplyby2(x): return x * 2mapped_list = list(map(multiplyby2, [1, 2, 3, 4, 5]))print(mapped_list) # 输出: [2, 4, 6, 8, 10]
from functools import reducefrom operator import addsummed_value = reduce(add, [1, 2, 3, 4, 5]) # 返回 15
lambda_func = lambda a, b: a + bresult = lambda_func(5, 3) # 返回 8
sorted_list = sorted(student_marks, key=lambda x: x[0])# 按姓名排序学生成绩
def outer(): x = [1, 2, 3] def inner(): x.append(4) return x return innerinner_func = outer()inner_func() # x = [1, 2, 3, 4]
import datetime@decoratordef foo(): print('原函数')# 装饰器实现:def decorator(func): def inner(): print('装饰后的执行逻辑') return func() return innerfoo() # 输出: 装饰后的执行逻辑from itertools import chainfrom operator import addfrom functools import reduce# 计算列表元素之和total = reduce(add, chain([1, 2, 3, 4, 5])) # 返回 15total = reduce(add, chain([10, 20, 30, 40, 50])) # 返回 150
以上就是对Python函数相关知识的总结与实践说明。通过案例和示例分析,可以更好地理解函数在Python中的核心作用和各种高级功能。
转载地址:http://ksfhz.baihongyu.com/