Apa yang saya pahami dari membaca dokumentasi adalah bahwa Python memiliki namespace terpisah untuk fungsi, dan jika saya ingin menggunakan variabel global dalam fungsi itu, saya perlu menggunakannya global
.
Saya menggunakan Python 2.7 dan saya mencoba tes kecil ini
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
... return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
Tampaknya semuanya berjalan dengan baik bahkan tanpa itu global
. Saya dapat mengakses variabel global tanpa masalah.
Apakah saya kehilangan sesuatu? Juga, berikut ini dari dokumentasi Python:
Nama-nama yang tercantum dalam pernyataan global tidak boleh didefinisikan sebagai parameter formal atau dalam target kontrol loop, definisi kelas, definisi fungsi, atau pernyataan impor.
Sementara parameter formal dan definisi kelas masuk akal bagi saya, saya tidak dapat memahami batasan untuk target kontrol loop dan definisi fungsi.
def foo(): ...
dan foo = ...
pada saat yang sama). Itu membuat ruang lingkup baru untuk setiap panggilan fungsi. (Tapi apa bedanya dengan hampir semua bahasa tingkat tinggi lain di dunia?)