我是 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
”。
关于python - 为什么 Python 编译这段代码没有抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66852331/