案例1
汇率计算
实现美元和人民币之间的汇率计算。涉及知识有函数,条件语句,字符串,while循环,还有一些简单的数字运算,相信大家都很好奇,下面让我们来看一看吧。
def convert_currency(im, er): out = im * er return out def main(): currency_str_value = 0 while currency_str_value != "": USD_VS_RMB = 6.77 # 输入带单位的货币金额 currency_str_value = input('请输入带单位货币的金额: ') # 获取货币单位 unit = currency_str_value[-3:] # 第一次判断 if unit == 'CNY': exchange_rate = 1 / USD_VS_RMB elif unit == 'USD': exchange_rate = USD_VS_RMB else: exchange_rate = -1 if exchange_rate != -1: in_money = eval(currency_str_value[0:3]) # 使用lambda定义函数 convert_currency2 = lambda x: x * exchange_rate # 调用lambda函数 out_money = convert_currency2(in_money) print('转换后的金额是: ', out_money) else: print('无法计算') if __name__ == "__main__": main()
首先我们定义了关于运算汇率的函数,设置两个参数,便于后面我们的传入,这个叫形参,我们后面传入的叫实参,然后我又定义了一个函数,有的小伙伴可能看不懂后面那个`if name == “main”:
main()是什么,这里我解释一下这个函数
一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if name == ‘main’: 的作用就是控制这两种情况执行代码的过程,在if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。
所以这里的只有上面的代码正确,他才会执行
代码内部的一些我都在前期文章都有介绍,比如索引这些,还有while循环,当然有一个lambda函数没有介绍,这里我就介绍一下
lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。
注:下面的是其他博客的文章,我只是为了大家好理解,复制过来的,希望大家多多理解
Python中的lambda函数
在Python中,我们使用lambda关键字来声明一个匿名函数,这就是为什么我们将它们称为“lambda函数”。匿名函数是指没有声明函数名称的函数。尽管它们在语法上看起来不同,lambda函数的行为方式与使用def关键字声明的一般函数相同。以下是Python中 lambda函数的特点:
lambda函数可以接受任意数量的参数,但函数只能包含一个表达式。表达式是lambda函数执行的一段代码,它可以返回任何值,也可以不返回任何值。
lambda函数可以返回函数对象。
从语法上讲,lambda函数只能有一个表达式。
在本文中,我们将详细讨论Python中的lambda函数,并演示使用它们的例子。
创建一个lambda函数
我们使用以下语法来声明lambda函数:
正如上面所述,我们可以有很多个参数,但是只能有一个表达式。lambda操作符不能有任何声明,它返回一个函数对象,我们可以将此函数对象赋值给任何变量。
例如:
这段代码中,lambda num: num% 2是lambda函数。num是参数,num%2是表达式,用来计算后返回结果。该表达式获取输入参数除以2的模数并返回。将5作为参数传入,通过除以2进行计算,得到余数1.
你应该注意到,上面脚本中的lambda函数没有分配任何名称。它只是返回一个函数对象,该对象被分配给标识符remainder。然而,尽管函数是匿名的,我们还是可以像调用普通函数那样调用它。声明语句如下:
上面定义的lambda函数返回一个product对象,该对象具有两个参数的值。
为什么使用lambda 函数?
Lambda函数主要在短时间内需要一个函数时才使用。当你想要将函数作为参数传递给高阶函数(即以其他函数作为参数的函数)时,通常使用这种方法。
下面的例子演示了在其他函数中使用匿名函数:
在上面的例子中,我们有一个函数,该函数传入一个参数,将它与一个未知数相乘。我们来演示一下怎样使用上面的函数:
在上面的脚本中,我们使用一个lambda函数与我们传入的数字10相乘。同样的函数也可以用来与数字1000相乘。
我们很有可能会使用到testfunc( )函数来在一个程序中定义上面的两个lambda函数:
Lambda函数可以和Python的内置函数一起使用,例如map(),filter()等。
在接下来的章节中,我们将讨论怎样在各种Python内置函数中使用lambda函数。
filter() 函数
Python中的filter( )函数接受一个列表参数和一个lambda函数参数。它的语法如下:
这里的object必须是一个返回布尔值的lambda函数。对迭代器中的每一项都会调用该函数来计算其结果是True或False。请注意,本函数只能接受一个迭代器作为输入。
lambda函数,和需要被处理的列表,被一同传递给filter( )函数。filter()函数将返回一个新的列表,新的列表中只包含旧列表中被lambda函数处理后返回值为True的那些元素。请参考下面给出的例子:
在上面的例子中,我们先创建了一个包含一系列整数的列表number_list,接着我们创建了一个lambda函数来检查大于7的整数。此lambda函数作为参数传递给filter()函数,过滤后的结果保存在一个名为filtered_list的新列表中。
map( ) 函数
map( )函数是另一个以一个函数对象和一个列表作为参数的内置函数。map函数的语法如下:
传入map()函数的迭代器可以是字典,列表等。map()函数主要是根据lambda函数定义的逻辑来将输入迭代器中的每一项映射到输出迭代器中的相关项。请参考以下的例子:
在上面的脚本中,我们先定义了一个由随机数组成的列表numbers_list,接着我们调用map()函数,并传递一个lambda函数作为参数。此lambda函数计算每个数除以2之后的余数。映射的结果保存在一个名为mapped_list的列表中。最后,我们打印出列表的内容。
结论
在Python中,一个lambda函数是一个只有一行代码的函数,不需要进行函数名声明,它可以有很多个参数,但是只能有一个表达式。它和使用Python关键字def声明的函数具有相似的功能。大多数情况下,lambda函数只作为参数传递给其他函数。
————————————————
原文链接:https://blog.csdn.net/sinat_38682860/article/details/88917715