我是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