Python Global Variable menghadapi masalah dan meminta Tuhan untuk menjawabnya

Penulis:Tony233, Dicipta: 2021-09-08 14:20:01, Dikemas kini: 2021-09-08 15:09:44

Saya mendapati satu masalah, mengapa saya kembalikan pembolehubah global dictionary, dan apabila saya memanggil semula, pembolehubah itu akan ditutup, kod di bawah, # nombor tiga baris secara teorinya harus dicetak juga 1, 2, 3, tetapi sebenarnya dicetak 3, 3, 3. Saya tidak faham. Ini adalah masalah yang saya dapati dalam ujian semula, dan saya dapati hasilnya dicetak sama, dan kemudian langkah demi langkah mencari sumbernya di sini. Saya mengubah pembolehubah global menjadi pembolehubah tempatan dan tidak ada masalah ini, tetapi saya ingin memahami mengapa ini tidak berfungsi, saya meminta jawapan yang besar. def fun ((a): dict_zz [ketupat] = a return dict_zz def main (: Params ((() dict_zz_15min = fun ((1) dict_zz_1h = fun(2) dict_zz_4h = fun(3) print ((dict_zz_15min) # print ((dict_zz_1h) # print ((dict_zz_4h) #

def param ((): global dict_zz dict_zz = {} utama (()

Kenapa saya cetak seperti ini? {Y: i} {Y: i} {Y: i} {Y: i} {Y: i} {Y: i}


Lebih lanjut

RumputAnda belajar asas-asas Python.

Tony233Jika anda katakan bahawa kamus adalah salinan ringkas, saya faham... ibu saya, yang belajar Python selama ini, tidak faham.

Rumputdef fun(a): dict_zz['satu'] = a pulangkan dict_zz def utama ((): Params ((() dict_zz_15min = menyeronokkan(1) print ((dict_zz_15min) dict_zz_1h = menyeronokkan print ((dict_zz_1h) dict_zz_4h = menyeronokkan(3) print ((dict_zz_4h) # def param ((): global dict_zz dict_zz = {} utama (()

Tony233Jika anda tidak faham, apa itu asas Python? Saya telah menulis strategi dengan Python sebelum ini.

Tony233Jika saya menukarkan variabel global dengan variabel tempatan, tidak mengapa, jika saya menukarkan variabel global dengan variabel tempatan, tidak mengapa. def fun ((a): dict_zz = {} dict_zz ['one'] = a return dict_zz def main (: dict_zz_15min = fun ((1) dict_zz_1h = fun(2) dict_zz_4h = fun(3) print ((dict_zz_15min) print ((dict_zz_1h) print ((dict_zz_4h) main ((()

Tony233Bukan masalah kunci, saya boleh menukarkan global dengan lokal.