为什么upper
中的df.apply(df.str.upper)
不需要括号,但是upper()
方法却需要df.str.upper()
中的括号?
我想念一些概念吗?
答案 0 :(得分:4)
()
的意思是“立即调用此功能”。
print(str.upper())
引用没有()
的函数不会立即调用该函数。
map(str.upper)
str.upper
函数将传递给map
函数。 map
函数现在可以决定如何使用str.upper
函数。它可能会调用一次或多次,或将其存储在某个地方以备后用。
答案 1 :(得分:1)
使用related_names
时,内部函数会将function_name视为对已应用函数的引用。因此,仅传递函数名称,也传递不带括号的函数。
将其应用于实体时,将从.apply(function_name)
访问它。
就像将一个函数作为参数传递给另一个函数一样。
示例:
function_name
答案 2 :(得分:0)
在Python中,一切都是对象。不带括号的函数不进行评估,并将其视为对象。带括号的函数将立即求值。
例如:
>>> def return_one():
... return 1
...
>>> return_one # return the object reference, do not evaluate
<function return_one at 0x7fb76d3f4bf8>
>>> return_one() # evaluate the function
1
请牢记,.apply
方法采用一个功能对象,然后在以后的某个时间点调用它。如果要编写.apply(str.upper())
,则str.upper()
的计算结果将是str
而不是func
对象。