Ketika modul Python (file .py) dijalankan, pernyataan tingkat atas di dalamnya dijalankan sesuai urutan kemunculannya, dari atas ke bawah (awal hingga akhir). Ini berarti Anda tidak dapat mereferensikan sesuatu sampai Anda mendefinisikannya. Misalnya, berikut ini akan menghasilkan kesalahan yang ditampilkan:
c = a + b
a = 13
b = 17
Tidak seperti banyak bahasa lain, def
dan class
pernyataan dapat dieksekusi dengan Python — bukan hanya deklaratif — jadi Anda tidak dapat mereferensikan salah satunya a
atau b
sampai itu terjadi dan ditetapkan. Inilah mengapa contoh pertama Anda mengalami masalah — Anda mereferensikan Kerma()
fungsi sebelum def
pernyataannya dieksekusi dan badan telah diproses dan objek fungsi yang dihasilkan terikat ke nama fungsi, jadi tidak ditentukan pada saat itu dalam skrip.
Program dalam bahasa seperti C ++ biasanya diproses terlebih dahulu sebelum dijalankan dan selama tahap kompilasi ini, seluruh program dan #include
file apa pun yang dirujuknya dibaca dan diproses sekaligus. Tidak seperti Python, bahasa ini menampilkan pernyataan deklaratif yang memungkinkan nama dan urutan pemanggilan fungsi (atau tipe variabel statis) untuk dideklarasikan (tetapi tidak ditentukan), sebelum digunakan sehingga ketika kompilator menemukan namanya, ia memiliki informasi yang cukup untuk memeriksa penggunaan, yang terutama memerlukan pemeriksaan jenis dan konversi jenis, tidak ada yang mengharuskan konten atau badan kode aktualnya telah ditentukan.