Python .upper()和.apply(str.upper)上的括号
为什么Python .upper()和.apply(str.upper)上的括号,python,pandas,Python,Pandas,为什么df.apply(df.str.upper)中的upper不需要括号,但是upper()方法需要括号,就像df.str.upper()中一样 是否有一些概念我遗漏了?当您使用.apply(function\u name)时,内部将function\u name视为已应用函数的引用。因此,只传递函数名,也不传递括号。 将其应用于实体时,将从函数\u name访问该实体 这就像将一个函数作为参数传递给另一个函数一样 例如: def fun(x): return x*x def fun_
df.apply(df.str.upper)
中的upper
不需要括号,但是upper()
方法需要括号,就像df.str.upper()
中一样
是否有一些概念我遗漏了?当您使用.apply(function\u name)
时,内部将function\u name视为已应用函数的引用。因此,只传递函数名,也不传递括号。将其应用于实体时,将从
函数\u name
访问该实体这就像将一个函数作为参数传递给另一个函数一样 例如:
def fun(x):
return x*x
def fun_b(function):
return function(3)
print(fun_b(fun))
在Python中,一切都是对象。不带括号的函数不求值,并将其视为对象。带括号的函数将立即求值 例如:
>>def return_one():
... 返回1
...
>>>返回_one#返回对象引用,不计算
>>>返回_one()#评估函数
1.
记住这一点,.apply
方法获取一个函数对象,然后在稍后的时间点调用它。如果要编写.apply(str.upper())
,str.upper()
将计算为str
,而不是func
对象。()
表示“立即调用此函数”
引用没有()
的函数不会立即调用该函数
map(str.upper)
str.upper
函数被传递给map
函数。map
函数现在可以决定如何使用str.upper
函数。它可能会调用它一次或多次,或者将它存储在某个地方供以后使用。您应该使用和熊猫标签,以使其更清晰。
map(str.upper)