擅长:python、mysql、java
<p>Python的名称解析方案有时被称为<code>LEGB</code>规则,这意味着当您在函数中使用非限定名称时,Python最多会搜索四个作用域-<strong>首先</strong>本地(L)作用域,然后是任何封闭的(E)<code>def</code>s和<code>lambda</code>s的局部作用域,然后是全局(G)作用域,最后是内置(B)范围。(请注意,一旦找到匹配项,它将立即停止搜索)</p>
<p>因此,当您在函数内部使用<code>sorted</code>时,解释器将其视为一个<strong>全局</strong>名称(您的函数名),因此您将拥有一个递归函数。如果您想访问内置的<code>sorted</code>,您需要为Python指定它。通过<code>__builtin__</code>模块(Python-2.x中的<strong>)和Python-3.x中的<a href="https://docs.python.org/3/library/builtins.html" rel="nofollow noreferrer">^{<cd7>}</a>(此模块提供对Python所有“内置”标识符的直接访问)</p>
<hr/>
<p>python 2:</p>
<pre><code>import __builtin__
def sorted(services):
return __builtin__.sorted(services, key=lambda s: s.sortkey())
</code></pre>
<p>Python3:</p>
^{pr2}$