为什么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' 也没有错误,'whatever' 和 'target' 也没有。
谢谢!
回答
全局变量在运行时查找,当函数尝试访问它们的值时,而不是在定义函数时。如果nums在函数尝试实际使用它时仍然没有变量,那么您将在那时收到 NameError,但不会在函数定义时收到。
这里的过程不是“nums使用我们找到的信息查找和编译字节码”;它是“编译字节码,如果运行,则可能会查找nums”。