Python中的括号';s方法调用
下面是一个简单的Python代码Python中的括号';s方法调用,python,python-3.x,Python,Python 3.x,下面是一个简单的Python代码 for item in sorted(frequency, key=frequency.get, reverse=True)[:20]: print(item, frequency[item]) 但是,如果调用frequency.get()而不是frequency.get,它将给我一个错误“get预期至少1个参数,get 0” 我来自鲁比。在Ruby中,get和get()。它在Python中不一样吗 例如,下面是对get()和非get的描述。什么是get?
for item in sorted(frequency, key=frequency.get, reverse=True)[:20]:
print(item, frequency[item])
但是,如果调用frequency.get()
而不是frequency.get
,它将给我一个错误“get预期至少1个参数,get 0”
我来自鲁比。在Ruby中,get
和get()。它在Python中不一样吗
例如,下面是对get()
和非get
的描述。什么是get
?frequency.get
描述方法本身,而frequency.get()
实际调用该方法(并且错误地没有给它任何参数)。你是对的,这与Ruby不同
例如,考虑:
frequency = {"a": 1, "b": 2}
x = frequency.get("a")
在这种情况下,x
等于1
。但是,如果我们这样做了:
x = frequency.get
x
现在将成为一个函数。例如:
print x("a")
# 1
print x("b")
# 2
这个函数就是要传递给排序后的的
嗯,语法和操作都不同。。所以,不,它们不一样。从一个教程开始,接受该语言的本来面目。Ruby方法通过消息传递工作-必须做额外的工作才能得到方法,但是Python方法通过直接的函数求值工作。粗略的Python->Ruby等价物是:get
->:get
,frequency.get
->frequency.Method(:get)
,frequency.get()
->频率。获取
。Ruby进行隐式调用,因此它需要一些其他语法来引用方法本身;Python进行显式调用,这意味着调用需要括号,但因此不需要任何特殊语法来引用函数。这是一个折衷,所以不同的语言会有不同的做法。我知道有人会评论说,这不是真正的折衷,如果你只是把所有的函数,比如说Haskell,这是真的,这只是一个不同的折衷,使得这个不相关。