高级 Python 开发课程
第 章
>
第 级
高级函数
Lambda 函数
目标
使用 lambda 函数记录一些消耗品,以便之后收集并发货。
田间的一些水果和浆果已经快成熟,可以采摘后进行储存、运输和销售。最好先记录下哪些物品快成熟,这样你就能估计出该田中有多少产品正在打包和运输。
为了优化代码,你可以使用 lambda 函数,这是一种创建自定义函数的方法,但当你要创建的函数较简单时,这种方式更快捷。
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
在上面的例子中,你有两个函数,一个是自定义函数,另一个是 lambda 函数。虽然写法不同,但它们在功能上是相同的,lambda 函数 更加便捷,可以在代码执行过程中随时快速建立。然而,正常的函数定义方法在处理复杂代码序列时仍然非常有用。
在田间可以分为两(2)类物品:"fruits" 和 "berries"。其中,在这两(2)种类型中,有三(3)种水果:apples、pears 和 oranges;以及三(3)种浆果:red、blue 和 purple。
首先,按照上面示例设置名为 calculate 的 lambda 函数,这个函数可以通过将三个物品相加再乘以二(2),来得到预计本季的物品数量。接下来,创建另一个名为 estimate 的 lambda 函数,用于估算将要采集的物品数量,这个函数自定义为 speak 函数。最后,设置一个名为 total 的 lambda 函数,它将两个数相加并减去第三个值 (loss)。
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
为三(3)种水果各创建变量,并加上田间的各自数量。走到标记为暗色 X 的位置,使用 lambda 函数 calculate() 和所有三个水果变量,并将结果存储在一个名为 fruit_number 的自定义变量中,如这样: fruit_number = calculate(orange,pear,apple)。接着,使用 estimate() lambda 函数,其中 fruit_number 作为数量,"fruits" 作为名称,如: estimate(fruit_number, "fruits" )。
当你完成水果操作后,走到标记为亮色 X 的位置,对浆果做同样的操作。为三(3)种浆果设置相应变量,并输入你在田间数到的灌木数量,然后按照同样方式设置 lambda 函数,如: berry_number = calculate(red,blue,purple)。使用 estimate lambda 函数,参数传入 berry_number 和 "berries"。
有一个常量 doc 保存了上个月丢失产品的估算数据。前往库房,走向标记为金色 X 的位置,使用 speak() 函数读取桌上的文档,从而确定上个月的数字。
当你了解了上个月的数字后,走到紫色地毯上暗色 X 的位置,面向桌子,以便确定本月的总数。创建一个变量 season 来计算本季的总数,使用 fruit_number 和 berry_number 作为数值,将从 doc 常量中确定的数字作为 loss 参数,如: season = total(berry_number,fruit_number, number found in doc constant)
最后,使用 estimate() lambda 函数,用 season 变量作为数量参数,"products" 作为名称参数,以完成这一关。