page contents

Python 函数进阶:打造可复用的 “代码工具箱”!

之前咱们学过函数的基础用法,今天就来深入探索 Python 函数的进阶技巧!函数就像是我们的 “代码工具箱”,把常用的功能封装起来,随取随用。从参数的灵活传递到函数式编程的巧妙应用,这些知识能让你的代码更简洁、更强大!

attachments-2025-05-QAzotvwc682a8857945c5.jpg之前咱们学过函数的基础用法,今天就来深入探索 Python 函数的进阶技巧!函数就像是我们的 “代码工具箱”,把常用的功能封装起来,随取随用。从参数的灵活传递到函数式编程的巧妙应用,这些知识能让你的代码更简洁、更强大!

一、函数参数的灵活玩法:让函数更通用

1. 位置参数与关键字参数 函数调用时,参数可以按位置传递,也可以指定参数名传递。比如定义一个计算长方形面积的函数:

def rectangle_area(length, width):    return length * width# 位置参数传递area1 = rectangle_area(5, 3)# 关键字参数传递area2 = rectangle_area(width=4, length=6)print(area1, area2)  # 输出:15 24

位置参数要严格按顺序传递,而关键字参数可以打乱顺序,只要参数名对应正确就行,让函数调用更灵活。

2. 默认参数:给参数一个 “备用值” 有些参数在很多情况下都用同一个值,这时可以设置默认参数 。例如,我们写一个打招呼的函数:

def say_hello(name="朋友"):    print(f"你好,{name}!")say_hello()  # 输出:你好,朋友!say_hello("小明")  # 输出:你好,小明!

没传入参数时,函数会使用默认值;传入参数则会覆盖默认值,方便又实用。

3. 可变参数:接收任意数量的数据 有时候我们不知道函数会接收多少个参数,这时可以用 *args 和 **kwargs 。 *args 接收任意个位置参数,会打包成元组;**kwargs 接收任意个关键字参数,会打包成字典。

def sum_all(*args):    result = 0    for num in args:        result += num    return resulttotal = sum_all(1, 2, 3, 4, 5)print(total)  # 输出:15*args 把传入的 1, 2, 3, 4, 5 打包成 (1, 2, 3, 4, 5) ,方便函数统一处理。

小贴士:函数参数定义顺序一般是:位置参数、默认参数、*args 、**kwargs ,这样能避免语法错误。

二、函数式编程基础:用函数处理函数

1. 高阶函数:接收或返回函数的函数

如果一个函数接收另一个函数作为参数,或者返回一个函数,它就是高阶函数。常见的 map 、filter 、sorted 都是高阶函数。例如,用 map 把列表里的每个数平方:

nums = [1, 2, 3, 4]squared_nums = list(map(lambda x: x ** 2, nums))print(squared_nums)  # 输出:[1, 4, 9, 16]map

函数接收一个函数(这里用 lambda 定义)和一个可迭代对象,把函数应用到每个元素上,简洁又高效。

2. lambda 函数:一行搞定简单逻辑 lambda 函数也叫匿名函数,适合定义简单的一次性使用的函数。比如用 filter 筛选出列表里的偶数:

nums = [1, 2, 3, 4, 5]even_nums = list(filter(lambda x: x % 2 == 0, nums))print(even_nums)  # 输出:[2, 4]lambda 函数 lambda x: x % 2 == 0

作为筛选条件,配合 filter 函数快速完成任务。

三、函数的作用域:变量的 “活动范围”

在 Python 里,变量有自己的作用域,就像每个人都有自己的活动范围。函数内部定义的变量是局部变量,只能在函数内部使用;函数外部定义的变量是全局变量,在函数内外都能访问(但在函数内修改全局变量需要用 global 关键字)。

count = 10  # 全局变量def add_num():    num = 5  # 局部变量    global count    count += 1    return num + countresult = add_num()print(result, count)  # 输出:16 11

注意事项:过度使用全局变量会让代码逻辑混乱,尽量通过函数参数传递数据,保持函数的独立性。

四、递归函数:自己调用自己的 “神奇循环”

递归函数是指在函数内部调用自身的函数,它能解决一些具有重复子问题的场景。比如计算阶乘:

def factorial(n):    if n == 0:        return 1    return n * factorial(n - 1)result = factorial(5)print(result)  # 输出:120

递归函数必须有终止条件(这里 n == 0 ),否则会无限循环导致程序崩溃。

五、闭包:函数的 “记忆魔法”

闭包是指一个函数返回另一个函数,并且内部函数可以访问外部函数的变量。例如,我们创建一个计数器函数:

def counter():    count = 0    def increment():        nonlocal count        count += 1        return count    return incrementmy_counter = counter()print(my_counter())  # 输出:1print(my_counter())  # 输出:2

increment函数记住了 count 变量的值,每次调用都能在原来基础上递增,就像给函数赋予了 “记忆”。 

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-05-19 09:24
  • 阅读 ( 62 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

2172 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2172 文章
  3. Pack 1335 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章