擅长:python、mysql、java
<p>您正在访问一个未定义的符号,这在许多语言中是个坏主意。
Python不知道符号<code>toFloat</code>可能指的是什么。你知道吗</p>
<p>为了举例说明,您希望这段代码做什么?<code>ZERO</code>应该是零还是一?你知道吗</p>
<pre><code>ZERO = toFloat('0.0')
def toFloat(val): return Decimal(val)
def toFloat(val): return 1
</code></pre>
<p>或者在这种情况下:</p>
<pre><code>ZERO = toFloat('0.0')
if ZERO: from libone import toFloat #where toFloat returns 0
else: from libtwo import toFloat #where toFloat returns 1
</code></pre>
<p>问题是你可以重新定义你的符号很多次你想。E、 g.这是合法代码:</p>
<pre><code>def f(): return 0
print(f())
def f(): return 1
print(f())
</code></pre>
<hr/>
<p>如果在代码顶部声明<code>ZERO</code>是非常重要的,那么您可以对常量使用这个丑陋的hack:</p>
<p>把这个放在另一个文件里常量py地址:</p>
<pre><code>class Constant:
def __init__(self, cf):
self.cf = cf
@property
def c(self):
try: return self.__c
except: self.__c = self.cf()
return self.__c
</code></pre>
<p>然后在文件中,可以使用:</p>
<pre><code>from const import Constant
ZERO = Constant(lambda: toFloat('0.0'))
def toFloat(x): return 42
print(ZERO.c)
</code></pre>