写在前面
在本教程中,我们将回顾 Python 函数及其实际应用。我们将涵盖开始一个Python函数项目所需的基本步骤,并深入探讨一些高级功能如何定义默认参数、使用partial库。我们将使用 Python3 进行本教程。
1.简单函数
让我们从创建一个简单的 Python 函数开始,该函数接受两个参数并返回它们的和。在项目目录中创建一个名为basic_func.py
的新文件,并添加以下代码:
# basic_func.py
def add_numbers(a, b):
return a + b
调用函数
现在,让我们创建一个名为main.py
的新文件,并使用我们在basic_func.py
中创建的函数。将以下代码添加到main.py中:
# main.py
from basic_func import add_numbers
result = add_numbers(3, 9)
print(result) # 输出:12
2.函数中的默认参数
直接定义默认参数
Python函数允许我们为函数参数定义默认值。让我们修改我们的add_numbers
函数,为第二个参数提供一个默认值。更新basic_func.py
文件如下:
# basic_func.py
def add_numbers(a, b=0):
return a + b
调用更新后的函数
现在,在main.py
中,调用add_numbers
函数,有的时候提供第二个参数,有的时候不提供:
# main.py
from basic_func import add_numbers
result1 = add_numbers(3)
result2 = add_numbers(3, 9)
print(result1, result2) # 输出:3 11
至于partial库,它是Python标准库中的一个模块,位于functools模块内部。partial模块提供了一个partial()函数,用于部分应用(partial application)函数。部分应用是指固定函数的一部分参数,并生成一个新的函数,该新函数的调用方式比原函数少了一些参数。
partial库
使用partial
库的主要场景是在需要将一个具有多个参数的函数转换为具有较少参数的函数时,以便在特定上下文中更方便地使用。这可以实现默认参数功能,并且需要提前定义。下面是一个简单的示例:
from functools import partial
# 原始函数
# base是基数,exponent是次方
def power(base, exponent):
return base ** exponent
# 创建一个新函数,固定base为2
power_of_2 = partial(power, 2)
# 调用新函数,只需提供exponent参数
result = power_of_2(3) # 相当于调用power(2, 3)
print(result) # 输出:8
在上面的示例中,我们使用partial
函数创建了一个新的函数power_of_2
,该函数是power
函数的一个特定版本,其中base
参数被固定为2
。这样,我们只需提供exponent
参数即可调用新函数,而不必每次都传递base
参数。
3.递归函数
递归函数是一种调用自身的函数。让我们创建一个递归函数来计算一个数的阶乘。将以下代码添加到main.py
中:
# main.py
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
result = factorial(5)
print(result) # 输出:120
4.Lambda函数
Python 支持使用 lambda 关键字创建匿名函数(即不绑定名称的函数)。让我们创建一个 lambda 函数,将输入值加倍。更新main.py
如下:
# main.py
double = lambda x: x * 2
result = double(5)
print(result) # 输出:10
最佳实践
-
使用有意义的函数和变量名称以提高代码的可读性。 -
使用有意义的函数和变量名称以提高代码的可读性。 -
使用文档字符串(docstrings)来描述函数的目的、参数和返回值。 -
保持函数短小,专注于单一任务。
写在最后
在本教程中,我们回顾了 Python 函数的基础知识,包括创建简单函数、使用默认参数,并探索了partial库、lambda函数和递归函数等高级功能。我们还设置了一个项目环境,并将代码组织到单独的文件中,以提高可维护性。
原文始发于微信公众号(harvey的网络日志):从python基础函数到lambda
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/288249.html