Py学习  »  Python

我是python的新手,我无法理解这些包含函数的代码是如何工作的

Ashish Kumar • 3 年前 • 1397 次点击  
def createmultipier(x):
    return lambda y: y*x
multiply= createmultipier(10)
print(multiply(15))

在这里 multiply 是一个变量,那么他是如何给它赋值的,它是如何工作的?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129183
 
1397 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Samwise
Reply   •   1 楼
Samwise    3 年前

createmultiplier(10) 创建一个将其参数乘以10的函数。就是这样 multiply 分配给…因此 multiply(15) 返回 150 .

换句话说:

multiply = createmultiplier(10)

具有与执行以下操作相同的效果:

def multiply(y)
    return 10 * y

函数的点,如 createmultiplier 就是让你在没有 def 陈述 无需硬编码实现细节,如常量 10 .例如,如果你想让所有数字的倍数从1到4,你可以:

def times_1(y):
    return 1 * y

def times_2(y):
    return 2 * y

def times_3(y):
    return 3 * y

def times_4(y):
    return 4 * y

multipliers = [times_1, times_2, times_3, times_4]
print([m(10) for m in multipliers])  # [10, 20, 30, 40]

但这要容易得多:

def create_multiplier(x):
    return lambda y: y*x

multipliers = [create_multiplier(x) for x in range(1, 5)]
print([m(10) for m in multipliers])  # [10, 20, 30, 40]