Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试对元组PYTHON中的元素使用函数时出错_Python_Function_Tuples_Output_Call - Fatal编程技术网

尝试对元组PYTHON中的元素使用函数时出错

尝试对元组PYTHON中的元素使用函数时出错,python,function,tuples,output,call,Python,Function,Tuples,Output,Call,输出= 1. 为什么square不适用于tuple元素?square返回一个指向函数的指针,如果要实际执行该函数,应编写: def square(x): return lambda x: x**2 object = (1,2,3) print (object[0]) print (square(object[0])) lambda是创建匿名函数的语法 平方=λx:x**2 相当于 def方形(x): 返回x**2 为了清晰起见,最好使用后者,这也是您的代码应该具有的外观。通

输出= 1.


为什么square不适用于tuple元素?

square返回一个指向函数的指针,如果要实际执行该函数,应编写:

def square(x):
    return lambda x: x**2


object = (1,2,3)
print (object[0])
print (square(object[0]))

lambda
是创建匿名函数的语法


平方=λx:x**2
相当于

def方形(x):
返回x**2
为了清晰起见,最好使用后者,这也是您的代码应该具有的外观。通常不应该将lambda表达式指定给像
square
这样的名称-当您应该将函数作为输入传递给其他对象,并希望在适当的位置定义一个函数时,它们非常方便-但实际上没有任何东西阻止您这样做


如果您检查打印的输出,您将看到它实际上是在告诉您它返回了一个函数。

想想
square
返回了什么。它是一个数字,还是其他什么?您声明了一个函数,该函数构建一个函数以将给定值平方。您从未调用过该构建函数。后半部分是正确的,但OP可能非常希望从其函数返回函数(或者更确切地说,这可能是原始作者的意图)。在参数上形成闭包并返回闭包是非常常见的。如果这就是目的,那么直接返回
lambda
就可以了。PEP8警告的是“命名的lambdas”。从上下文来看,我认为OP感到惊讶的是,输出不仅仅是输入的平方-同意,函数可能来自其他地方,OP误解了它的用途。
print (square(object[0])())