我碰巧运行了一个这样的代码段,我从Class方法中选择了该代码段,并删除了参数中的self
,但将其保留在主体中。
def bi_search(a, x, lo=0, hi=None) -> int: if hi == None: hi = len(a) if lo < 0: raise ValueError('low must be non-negative') if lo == hi: return None mid = (lo + hi) // 2 if x == a[mid]: return x if x > a[mid]: lo = mid + 1 return self.bi_search(a, x, lo, hi) if x < a[mid]: hi = mid return self.bi_search(a, x, lo, hi) print(bi_search([1, 2, 3, 4], 3))
它运行完美,没有报告错误,为什么它不报告NameError。
如果尝试了self.bi_search,它会报告NameError
In [2]: self.bi_search
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-2-f458d3bc4fee> in <module>
----> 1 self.bi_search
NameError: name 'self' is not defined
我碰巧运行了一个这样的代码段,该代码段是我从Class方法中选择的,并删除了参数中的self,但将其保留在body中。 def bi_search(a,x,lo = 0,hi = None)-> int:如果hi == None:...
这不起作用。您的代码永远不会碰到那些涉及self
的条件语句。如果这样做,它将产生一个NameError
。