不同函数调用方式对应不同的绑定次数:
import profile class A: def f(self): pass def foo(): a = A() for i in range(100000): a.f() if __name__ == '__main__': profile.run("foo()")
import profile class A: def f(self): pass def foo(): a = A() func = a.f for i in range(100000): func() if __name__ == '__main__': profile.run("foo()")
因为调用a.f()时,a对象需要对f进行一次绑定,如果调用一次,就进行绑定一次,很显然第一次情况比第二种情况的开销大了很多。
第二种况只绑定一次。