首页 > 编程语言 >Python 函数:定义、调用、参数、递归和 Lambda 函数详解

Python 函数:定义、调用、参数、递归和 Lambda 函数详解

时间:2023-10-22 15:32:19浏览次数:60  
标签:function 函数 示例 Python 参数 print my Lambda

函数是一段代码块,只有在调用时才会运行。您可以将数据(称为参数)传递给函数。

函数可以返回数据作为结果。

创建函数

在Python中,使用def关键字定义函数:

示例

def my_function():
  print("Hello from a function")

调用函数

要调用函数,请使用函数名称后跟括号:

示例

def my_function():
  print("Hello from a function")

my_function()

参数

可以将信息作为参数传递给函数。参数在函数名称后面的括号内指定。您可以添加任意数量的参数,只需用逗号分隔即可。以下示例具有一个参数(fname)的函数。调用函数时,我们传递一个名字,该名字在函数内用于打印全名:

示例

def my_function(fname):
  print(fname + " Refsnes")

my_function("Emil")
my_function("Tobias")
my_function("Linus")

参数通常在Python文档中缩写为args。

参数或参数?

术语参数和参数可以用于相同的事物:传递给函数的信息。

从函数的角度来看:

  • 参数是函数定义中括号内列出的变量。
  • 参数是在调用函数时发送到函数的值。

参数数量

默认情况下,必须使用正确数量的参数来调用函数。这意味着,如果函数需要2个参数,您必须使用2个参数来调用函数,不能多,也不能少。

示例

这个函数需要2个参数,得到了2个参数:

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil", "Refsnes")

如果尝试使用1个或3个参数调用函数,将会导致错误:

示例

这个函数需要2个参数,但只得到1个:

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil")

任意数量的参数,args。如果不知道将传递多少个参数到函数中,可以在函数定义中的参数名前添加一个。这样,函数将接收到一个参数元组,并可以相应地访问项目:

示例,如果参数数量未知,请在参数名称前添加*:

def my_function(*kids):
  print("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")

在Python文档中,任意参数通常被缩写为args。

关键字参数

还可以使用key = value语法发送参数。这样,参数的顺序就不重要了。

示例

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

短语关键字参数通常在Python文档中缩写为kwargs。任意关键字参数,kwargs。如果不知道将传递多少个关键字参数到函数中,可以在函数定义中的参数名称前添加两个星号:**。这样,函数将接收到一个参数字典,并可以相应地访问项目:

示例,如果不知道关键字参数的数量,请在参数名称前添加两个星号:

def my_function(**kid):
  print("His last name is " + kid["lname"])

my_function(fname = "Tobias", lname = "Refsnes")

在Python文档中,任意关键字参数通常被缩写为**kwargs。

默认参数值

以下示例显示了如何使用默认参数值。

如果我们在没有参数的情况下调用函数,它将使用默认值:

示例

def my_function(country = "Norway"):
  print("I am from " + country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

将列表作为参数传递

您可以将任何数据类型的参数发送到函数(字符串、数字、列表、字典等),并且在函数内部它将被视为相同的数据类型。例如,如果将列表作为参数发送,那么当它到达函数时,它仍然是一个列表:

示例

def my_function(food):
  for x in food:
    print(x)

fruits = ["apple", "banana", "cherry"]

my_function(fruits)

返回值

要让函数返回一个值,请使用return语句:

示例

def my_function(x):
  return 5 * x

print(my_function(3))
print(my_function(5))
print(my_function(9))

pass语句

函数定义不能空着,但是如果由于某种原因,您的函数定义没有内容,可以加入pass语句以避免出错。

示例

def myfunction():
  pass

递归

Python还接受函数递归,这意味着可以调用自身定义的函数。递归是一个常见的数学和编程概念。它意味着一个函数调用自己。这具有一个好处,即您可以循环遍历数据以达到一个结果。

开发人员在使用递归时应非常小心,因为很容易陷入编写永不终止的函数或使用大量内存或处理器功率的函数。然而,正确编写时,递归可以是一种非常高效和数学优雅的编程方法。

在此示例中,tri_recursion()是我们定义的一个函数,用于调用自己("recurse")。我们使用k变量作为数据,每次递归时减小(-1)。当条件不大于0时(即为0)递归结束。

对于新开发人员来说,可能需要一些时间来弄清楚这是如何工作的,最好的方法是通过测试和修改来找出。

示例,递归示例

def tri_recursion(k):
  if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)
  else:
    result = 0
  return result

print("\n\n递归示例结果")
tri_recursion(6)

Python Lambda函数

Lambda函数是一种小型的匿名函数。Lambda函数可以接受任意数量的参数,但只能有一个表达式。

语法

lambda 参数 : 表达式

该表达式将被执行,并返回结果。

示例

# 将10添加到参数a,并返回结果:
x = lambda a : a + 10
print(x(5))

Lambda函数可以接受任意数量的参数:

示例

# 将参数a与参数b相乘并返回结果:
x = lambda a, b : a * b
print(x(5, 6))

为什么使用Lambda函数?

Lambda的强大之处在于,当您将它们用作另一个函数中的匿名函数时,它们表现得更好。假设您有一个函数定义,该函数接受一个参数,该参数将与一个未知的数字相乘:

def myfunc(n):
  return lambda a : a * n

使用该函数定义创建一个函数,该函数始终将发送的数字加倍:

示例

def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11))

或者,使用相同的函数定义创建一个函数,该函数始终将发送的数字乘以3:

示例

def myfunc(n):
  return lambda a : a * n

mytripler = myfunc(3)

print(mytripler(11))

或者,在同一程序中使用相同的函数定义创建两个函数:

示例

def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)
mytripler = myfunc(3)

print(mydoubler(11))
print(mytripler(11))

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

标签:function,函数,示例,Python,参数,print,my,Lambda
From: https://blog.51cto.com/xiaowange/7977278

相关文章

  • 【python疑难杂症】
    报错:TypeError:scatterplot()takesfrom0to1positionalargumentsbut2weregiven问题:我猜出这个报错的都是这么写的:x_data=[1,2,3]y_data=[4,5,6]sns.scatterplot(x_data,y_data)plt.show()解法:在x_data前面加x=,y_data前面加y=,即:x_data=[1,2,3]y_da......
  • 前端find函数
    在前端开发中,"find"函数通常被用来在数组中查找满足特定条件的元素。这个函数是Array对象的原生方法之一,通过调用数组对象的"find"方法可以进行查找。该方法接受一个回调函数作为参数,该回调函数会为数组的每个元素调用一次。当回调函数返回一个真值时,"find"方法将返回第一个满足条......
  • Python scrapy爬虫框架爬取廖雪峰大佬官网Python教程左侧目录
    文章转载至:mob6454cc6f27a3 的PythonScrapy爬虫框架实例(一)爬虫框架scrapy简单实例吃面崩掉牙的Scrapy爬虫框架入门教程(1)——爬取廖雪峰老师的博客!!只是爬取一个字段,并不将爬取的数据存储下来。!!运行环境:window10x64系统python3.6pycharmanacondascrapy安装好以上环境、包之后,......
  • 无涯教程-AWK - 正则表达式运算符函数
    本示例说明了正则表达式运算符的两种形式。Match它表示为〜,它查找包含匹配字符串的字段,如,以下示例将打印包含模式9的行。[Learnfk]$awk'$0~9'marks.txt在执行此代码时,您将获得以下输出-2)ToolfkMaths905)NesfkHistory89不匹配它表示为!〜,它查找不包......
  • Python教程(15)——Python流程控制语句详解
    Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。这种流程控制在各个语言中都是大同小异的,如果你已经学过其他的语言,那么这章节就可以直接跳过。if语句if语句用于......
  • C++中的RTTI机制、多继承中的虚函数
    C++中的RTTI机制基类有虚函数时才能实现RTTI机制:基类无虚函数时,typeid(*pA)返回的是pA声明时的类型。基类有虚函数时,typeid(*pA)返回的是pA指向对象的类型。比较两个带有虚函数的类的对象是否相等if(typeid(*a)==typeid(B))if(dynamic_cast<B*>(a)):如果能够成功向......
  • 无涯教程-AWK - 指数运算符函数
    指数运算符有两种格式-指数格式1^它是一个指数运算符,可提高操作数的值。如,下面的示例将10的值提高2。[Learnfk]$awk'BEGIN{a=10;a=a^2;print"a=",a}'在执行此代码时,您将获得以下输出-a=100指数格式2**它是一个指数运算符,可提高操作数的值。如,下面的示例将10......
  • Python教程(15)——Python流程控制语句详解
    Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。这种流程控制在各个语言中都是大同小异的,如果你已经学过其他的语言,那么这章节就可以直接跳过。if语句if语句用......
  • python--猜数字游戏改编版2--用函数套用
    #猜数字游戏让游戏者决定几到几的数字,用函数做defcaishuzi_game(x,y):importrandomx=int(random.randint(x,y))b=int(input("请输入你要猜的数字"))a=1whilea<5:b=int(input("请输入你要猜的数字"))ifx==b:print("恭......
  • python遍历一个xlsx中的多个表
    遍历xlsx中的多个表:比如说如果有如下xlsx,里面有4张表,如何遍历出4张表中的数据?   步骤:(1)用load_workbook函数打开excel文件,返回一个工作簿对象(2)用工作簿对象获取所有的sheet(3)第一个for循环遍历所有sheet(4)每次遍历sheet时,先用get_sheet_by_name获取要遍历的sheet(5)开始下一个......