gpt4 book ai didi

python - 这两个 Python 语句有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 01:15:13 25 4
gpt4 key购买 nike

我正在研究 WiringPi-Python 的代码对于 Python,我发现了几个这样的 block :

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

最佳答案

文件由SWIG生成.函数定义确实是“死代码”,因为您可以完全删除函数定义,而只保留赋值。

因为代码是自动生成的,所以代码效率有点低。 SWIG function that generates this code , 状态:

if (Getattr(n, "feature:python:callback") || !have_addtofunc(n)) {
/* If there is no addtofunc directive then just assign from the extension module (for speed up) */
Printv(f_dest, name, " = ", module, ".", name, "\n", NIL);
}

所以第二个任务只是替换生成的 Python 函数以加快使用速度。

如果函数在生成时有额外的 Python 代码要添加(have_addtofunc() 在有文档字符串、前置或附加值时为真)则不会生成替换行。

大概是保留了原始函数,以便自动完成工具可以使用函数签名。

关于python - 这两个 Python 语句有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com