Di chuyển đến python với nền C/Java, gần đây tôi đã phải thực hiện đệ quy lẫn nhau, nhưng một số thứ trong python đang làm phiền tôi:Làm thế nào để python thực hiện đệ quy lẫn nhau?
vì chương trình python được diễn giải từng dòng, nếu tôi có hai hàm trong cùng một file python:
def A(n):
B(n-1)
# if I add A(1) here, it gives me an error
def B(n):
if n <= 0:
return
else:
A(n-1)
Khi người phiên dịch đang đọc A
, B
chưa được xác định, tuy nhiên mã này không không cho tôi một lỗi
TL; DR hiểu biết của tôi là, khi def
được giải thích, trăn cho biết thêm một mục nhập cho một số không gian tên địa phương locals()
với {"function name": function address}
, nhưng như đối với các cơ quan chức năng, nó chỉ làm một kiểm tra cú pháp:
def A():
blabla # this will give an error
def B():
print x # even though x is not defined, this does not give an error
A() # same as above, NameError is only detected during runtime
Một 'SyntaxError' sẽ bị bắt tại thời gian biên dịch, nhưng hầu hết các lỗi khác (' NameError', 'ValueError', v.v.) sẽ chỉ bị bắt khi chạy, và sau đó chỉ khi hàm đó được gọi. – TigerhawkT3
dễ dàng, đủ để kiểm tra phải không? 'def f(): lỗi sytax' làm lỗi sản phẩm ... – yurib