如题。
请问以下两种写法有何区别?
def a(self, abc):
return abc
b = a
与
def a(self, abc):
return abc
def b(self, def):
return a(def)
如题。
请问以下两种写法有何区别?
def a(self, abc):
return abc
b = a
与
def a(self, abc):
return abc
def b(self, def):
return a(def)
从函数的调用次数来看, 第二种调用次数 会比第一种的多
其次, 我看到self
, 所以如果这是类方法的话, 那么差别会更大一些:
class A(object):
def a(self, abc):
return abc
test = A()
test.a() # 每调用一次, 都会绑定一次method
b = test.a
b() # 不管调用多少次, method都已经是绑定好的, 直接使用
光第一种的不同用法, 都能产生比较大的差别, 就更别说第二种了..第二种还涉及到更多的 LOAD ATTR
和 'method 绑定'.
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
没有区别,都是语法不正确的 ?
(修正语法后,)你这样得到的两个函数的元数据不一样,比如 b.__name__ 之类的。另外后者多了一次函数调用,会慢一些。