Khi một mô-đun Python (tệp .py) được chạy, các câu lệnh cấp cao nhất trong đó được thực thi theo thứ tự xuất hiện, từ trên xuống dưới (đầu đến cuối). Điều này có nghĩa là bạn không thể tham chiếu một cái gì đó cho đến khi bạn đã xác định nó. Ví dụ sau đây sẽ tạo ra lỗi được hiển thị:
c = a + b
a = 13
b = 17
Không giống như với nhiều ngôn ngữ khác, def
và các class
câu lệnh có thể thực thi bằng Python - không chỉ là khai báo - vì vậy bạn không thể tham chiếu a
hoặc b
cho đến khi điều đó xảy ra và chúng được xác định. Đây là lý do tại sao ví dụ đầu tiên của bạn gặp sự cố — bạn đang tham chiếu đến Kerma()
hàm trước khi def
câu lệnh của nó được thực thi và nội dung đã được xử lý và đối tượng hàm kết quả được liên kết với tên của hàm, vì vậy nó không được định nghĩa tại thời điểm đó trong tập lệnh.
Các chương trình bằng ngôn ngữ như C ++ thường được xử lý trước trước khi chạy và trong giai đoạn biên dịch này, toàn bộ chương trình và bất kỳ #include
tệp nào nó đề cập đến đều được đọc và xử lý cùng một lúc. Không giống như Python, ngôn ngữ này có các câu lệnh khai báo cho phép tên và trình tự gọi của các hàm (hoặc kiểu tĩnh của biến) được khai báo (nhưng không được định nghĩa), trước khi sử dụng để khi trình biên dịch gặp tên của chúng, nó có đủ thông tin để kiểm tra việc sử dụng, chủ yếu đòi hỏi kiểm tra kiểu và chuyển đổi kiểu, không điều nào trong số đó yêu cầu nội dung thực tế hoặc nội dung mã của chúng phải được xác định.