函数是一个包含指令的可调用单元,旨在减少代码重复并组织复杂的任务。有两种类型:void 函数(无返回值)和有返回值的函数。
这是Python中函数的基本结构。
def function_name(args): function body
这是 Python 中 void 函数(无返回值)的示例。
# create a function def hello(): print("hello!") # call the function hello()
输出
hello!
基于上面的代码,创建了名为 hello() 的函数。通过指定函数名称后跟括号 () 来调用该函数。
这是一个带有返回值的函数示例。
# create a function with return value def add(a,b): return a + b result = add(2,4) print(result)
输出
6
基于上面的代码,创建了名为 add() 的函数来对两个数字求和。 add() 函数的返回值存储在 result 变量中。
使用返回值函数时,请确保使用返回值。
Python 中的函数可以动态地接受多个参数。有两种方法可以在函数中实现多个参数:
参数:多个参数在函数中实现,无需指定关键字。参数可以使用 *args.
关键字参数:多个参数在具有指定关键字的函数中实现。关键字参数可以使用 **kwargs 来实现。
参数和关键字参数都必须位于函数中参数定义的最后位置。
这是使用参数方法动态计算数字总和的多个参数实现的示例。
def sum(*args): result = 0 for arg in args: result += arg return result print(sum(1,2)) print(sum(1,2,3)) print(sum(1,2,3,4,5,4,3,2))
输出
3 6 24
基于上面的代码,可以使用不同数量的参数来调用 sum() 函数。
这是使用关键字参数方法实现多个参数的示例。
def display_info(name,**kwargs): print("========") print(f"name: {name}") print("other informations") for k, val in kwargs.items(): print(f"{k}: {val}") print("========") display_info("john",job="programmer",company="acme inc") display_info("doe",job="programmer",company="acme inc",skills="go,java,php")
输出
======== name: john other informations job: programmer company: acme inc ======== ======== name: doe other informations job: programmer company: acme inc skills: go,java,php ========
基于上面的代码,可以使用不同数量的参数来调用display_info()函数。通过使用**kwargs,可以用关键字定义参数。
参数和关键字参数可以一起使用。这是一个例子。
def display(*args,**kwargs): print("===========") print("items") for arg in args: print(arg) print("other information") for k, val in kwargs.items(): print(f"{k}: {val}") print("===========") display("apple","coffee","milk",payment="cash") display("TV","Camera",payment="cash",delivery="express")
输出
=========== items apple coffee milk other information payment: cash =========== =========== items TV Camera other information payment: cash delivery: express ===========
递归函数是在完成任务时调用自身的函数。递归函数可以解决很多问题,包括阶乘数、斐波那契数列等等。
递归函数有两个主要组成部分:
在此示例中,阶乘计算是使用递归函数实现的。
def function_name(args): function body
输出
# create a function def hello(): print("hello!") # call the function hello()
让我们仔细看看阶乘()函数。该函数涉及两个组件:
基本情况:如果 n 的值等于 0 或 1,则函数执行终止。
递归关系:当n大于1时函数执行。
hello!
factorial() 函数如下图所示。
lambda 是一个匿名函数。 lambda 可以包含许多参数,就像一般的函数一样。 lambda 函数适合创建直接返回值的小函数。
这是 sum() 函数的示例。
# create a function with return value def add(a,b): return a + b result = add(2,4) print(result)
这是 lambda 函数对两个数字求和的示例。 lambda 函数存储在名为 sum_func 的变量中。
6
要使用 lambda 函数,请通过变量名称调用该函数。
def sum(*args): result = 0 for arg in args: result += arg return result print(sum(1,2)) print(sum(1,2,3)) print(sum(1,2,3,4,5,4,3,2))
map() 函数为列表中的每个项目执行提供的回调函数。
这是 map() 函数将每个数字乘以 3 的示例。
3 6 24
输出
def display_info(name,**kwargs): print("========") print(f"name: {name}") print("other informations") for k, val in kwargs.items(): print(f"{k}: {val}") print("========") display_info("john",job="programmer",company="acme inc") display_info("doe",job="programmer",company="acme inc",skills="go,java,php")
基于上面的代码,triple()函数充当map()函数的回调,这意味着为数字列表中的每个项目调用triple()函数。然后,map() 函数的结果被转换为列表,然后存储在名为 result 的变量中。
上面的示例可以使用 lambda 函数进行简化。
======== name: john other informations job: programmer company: acme inc ======== ======== name: doe other informations job: programmer company: acme inc skills: go,java,php ========
输出
def display(*args,**kwargs): print("===========") print("items") for arg in args: print(arg) print("other information") for k, val in kwargs.items(): print(f"{k}: {val}") print("===========") display("apple","coffee","milk",payment="cash") display("TV","Camera",payment="cash",delivery="express")
filter() 函数根据给定的回调函数选择列表中的项目。 filter() 函数适合使用提供的回调函数过滤列表中的项目。 filter() 函数需要一个返回布尔值的回调函数。
这是 filter() 函数仅选择列表中偶数的示例。
=========== items apple coffee milk other information payment: cash =========== =========== items TV Camera other information payment: cash delivery: express ===========
输出
def factorial(n): if n == 0 or n == 1: return 1 else: return n * factorial(n-1) # call the function result = factorial(5) print(result)
基于上面的代码,filter()函数使用is_even()作为回调函数从列表中选择偶数。
可以使用 lambda 函数简化此示例。
120
输出
def function_name(args): function body
该功能可用于删除重复代码。例如,有两个函数,称为register()和login()。这两个函数都使用验证过程。
# create a function def hello(): print("hello!") # call the function hello()
验证过程有重复的代码。要删除这些重复项,可以将验证过程包装在单独的函数中。
hello!
validate()函数可以在register()和login()函数内部使用。
# create a function with return value def add(a,b): return a + b result = add(2,4) print(result)
基于上面的代码,代码更干净,更容易修改,因为如果更新额外的验证规则,可以在一处(validate()函数内部)更新验证规则。
这些是在 Python 中使用函数时的关键技巧。
该函数必须完成单个任务。如果需要多个任务,请为其他任务创建一个单独的函数。
函数参数的最大数量为 3。如果参数看起来超过 3,请考虑为函数参数使用专用数据对象。
函数参数的最大数量似乎有争议。
这是使用参数的 create_account() 函数的示例。
6
可以修改 create_account() 函数以使用数据对象来获得更简洁的代码。
def sum(*args): result = 0 for arg in args: result += arg return result print(sum(1,2)) print(sum(1,2,3)) print(sum(1,2,3,4,5,4,3,2))
这是在函数内使用文档的示例。
3 6 24
希望这篇文章对你学习Python有所帮助。如果您有任何意见,请在评论区告诉我。
以上是Python 教程 - 函数的详细内容。更多信息请关注PHP中文网其他相关文章!