为什么 Python 编译此代码而不抛出错误?



我是Python的新手,所以请耐心等待。 为什么 Python 在编译以下代码时不抛出错误。

def b_search(left, right):
while left <= right:
mid = left + (right-left)//2
if nums[mid] == target:
return mid
if nums[mid] < target:
left = whatever
else:
right = mid-1
return -1

想知道即使没有定义"nums",也没有定义"无论什么",也没有"目标",也没有

没有错误。谢谢!

全局变量是在运行时查找的,当函数尝试访问其值时,而不是在定义函数时。如果函数尝试实际使用它时仍然没有nums变量,您将在此时收到 NameError,但在函数定义时不会。

这里的过程不是"查找nums并使用我们发现的信息编译字节码";而是"编译字节码,如果运行,可能会查找nums"。

从您提供的代码来看,您似乎没有运行该函数,因此代码未执行,并且不使用不存在的变量。

声明函数后,如果尝试调用它,则会发现以下错误:

>>> b_search(3,9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in b_search
NameError: name 'nums' is not defined

相关内容

最新更新