我正在深入研究Python的WiringPi-Python代码,发现有几个类似于这样的代码块:
所以,为什么WiringPi-Python会把两者都放入,而任何一个都足够呢?
顺便提一句: - 我使用的是Python 2.7.3 - 这是我看到这个文件的地方: here
def wiringPiSetup():
return _wiringpi2.wiringPiSetup()
wiringPiSetup = _wiringpi2.wiringPiSetup
对我来说有些困惑,因为我认为这个:
def wiringPiSetup():
return _wiringpi2.wiringPiSetup()
将产生与此完全相同的结果:
wiringPiSetup = _wiringpi2.wiringPiSetup
我知道第一个是声明一个新的函数,而第二个是对原始函数的引用,但在我的测试中,我发现它们完全等效。看这里:
>>> def a():
... return 4
...
>>> def a1():
... return a()
...
>>> a2 = a
>>>
>>> a1()
4
>>> a2()
4
所以,为什么WiringPi-Python会把两者都放入,而任何一个都足够呢?
顺便提一句: - 我使用的是Python 2.7.3 - 这是我看到这个文件的地方: here
_wiringpi2.wiringPiSetup = newfunc
,会发生什么呢?如果你调用wiringPiSetup
函数版本,你可能会得到不同的结果。 - acushner_wiringpi2.wiringPiSetup
重命名为newfunc
并执行newfunc
的任何操作。如果你仍然有一个名称指向wiringPiSetup
的原始定义,它将表现出原始的行为。 - Two-Bit Alchemist_wiringpi2.wiringPiSetup
的访问封装在一个函数调用中,你将得到最近分配的行为,而如果你使用从文件导入时的直接赋值,它可能会不同。 - acushner