擅长:python、mysql、java
<p>不使用<code>global</code>,从函数(包括lambda)访问</strong>全局变量没有问题:</p>
<pre><code>>>> a = 1
>>> b = list()
>>>
>>> def f():
... b.append(a)
...
>>> f()
>>> print(b)
[1]
</code></pre>
<p>正如您在上面看到的,可以读取全局变量,并且可以不受任何限制地使用变量中的对象。在</p>
<p>没有<code>global</code>就无法完成的是将一个对象分配给一个全局变量。这是因为赋值会自动创建一个局部变量。在</p>
^{pr2}$
<p>因此,以下是可以的:</p>
<pre><code>ws = WebSocket(url)
sch.on_receive(lambda msg: ws.send(msg))
</code></pre>
<p>另一方面,如果你真的想给一个全局变量赋值,那在lambda中是不可能的(除了通过黑客手段,比如访问globals目录…)</p>