>>> lst=[1]
>>> def f(lst):
lst[0]=3
>>> f(lst)
>>> lst
[3]
Neden lst'ye dönmedim, neden değişiyor?python bir işlevi tanımlarken, değer dönüşü kullanmadan neden değişiyor
>>> lst=[1]
>>> def f(lst):
lst[0]=3
>>> f(lst)
>>> lst
[3]
Neden lst'ye dönmedim, neden değişiyor?python bir işlevi tanımlarken, değer dönüşü kullanmadan neden değişiyor
Bu, listelerin python içinde çalışmasının bir yolu olduğundan, işlevi listeye göndermez. Bu işlev, mevcut listenin bulunduğu bellekte yerini gönderir ve bu da
Bu, listelerin Python'da değiştirilebilmesi ve işlevinizin lst
olarak değiştirilebilmesidir. Aslında, eksik return
ifadesi ile ilgisi yoktur - tüm anlamı x = f(lst)
, x
None
olacaktır.'u lst
numaralı telefondan dönüştürmek istemiyorsanız, bir kopya gönderin.
lst = [1, 2, 3]
def fn(lst):
print("in fn")
lst[1] = 10
x = lst[::] # make a copy
print("X before is:", x)
fn(x)
print("X after is:", x)
print("Lst after calling fn with x but before using Lst is:", lst)
fn(lst)
print("Lst after is:", lst)
Bu baskılar:
X before is: [1, 2, 3]
in fn
X after is: [1, 10, 3]
Lst after calling fn with x but before using Lst is: [1, 2, 3]
in fn
Lst after is: [1, 10, 3]
Listeler değiştirilebilir olduğu İşte bir örnek – Bahrom