擅长:python、mysql、java
<p>Python是一种脚本/解释语言。。。所以是的,每次调用函数时都会进行赋值。解释器只解析您的代码一次,生成Python字节码。下次调用该函数时,它将被编译成Python VM字节码,因此该函数将被简单地执行。你知道吗</p>
<p>那个重新编译每次都会被调用,就像其他语言一样。如果要模拟静态初始化,请考虑使用全局变量,这样只调用一次。更好的是,您可以使用静态方法和静态成员(类成员而不是实例成员)创建一个类。你知道吗</p>
<p>您可以使用Python中的dis模块检查所有这些。所以,我把你的代码复制粘贴到测试.py模块。你知道吗</p>
<pre><code>>>> import teste
>>> import dis
>>> dis.dis(teste.qcharToUnicode)
4 0 LOAD_GLOBAL 0 (re)
3 LOAD_ATTR 1 (compile)
6 LOAD_CONST 1 ('QChar\\((0x[a-fA-F0-9]*)\\)')
9 CALL_FUNCTION 1
12 STORE_FAST 1 (p)
5 15 LOAD_FAST 1 (p)
18 LOAD_ATTR 2 (sub)
21 LOAD_CONST 2 (<code object <lambda> at 0056C140, file "teste.py", line 5>)
24 MAKE_FUNCTION 0
27 LOAD_FAST 0 (s)
30 CALL_FUNCTION 2
33 RETURN_VALUE
</code></pre>