.upper()和.apply(str.upper)的括号

时间:2019-02-01 06:43:38

标签: python pandas

为什么upper中的df.apply(df.str.upper)不需要括号,但是upper()方法却需要df.str.upper()中的括号?

我想念一些概念吗?

3 个答案:

答案 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对象。