如前所述,函数和方法是第一类对象。你call通过在末尾添加一些圆括号(方括号)来表示它们。但看起来你想要更多的动力来解释为什么 python 甚至让我们这样做。为什么我们要关心函数是否是一流的?
有时您不想调用它们,而是想传递对可调用本身的引用。
from multiprocessing import Process
t = Process(target=my_long_running_function)
如果你在上面的后面加上括号,它会运行你的my_long_running_function
在你的主线程中;几乎不是你想要的!你想要给予Process
对您的可调用对象的引用,它将在新进程中自行运行。
有时您只想指定可调用对象并让其他东西...
def do_something(s):
return s[::-1].upper()
map(do_something,['hey','what up','yo'])
Out[3]: ['YEH', 'PU TAHW', 'OY']
(map
在本例中)填写其参数。
也许您只想将一堆可调用对象放入某个集合中,然后以动态方式获取您想要的对象。
from operator import *
str_ops = {'<':lt,'>':gt,'==':eq} # etc
op = str_ops.get(my_operator)
if op:
result = op(lhs,rhs)
以上是将运算符的字符串表示形式映射到其实际操作的一种方法。