2016-03-23 18 views
0

Bazı ifadelerin neden gerektirdiğini ve RETURN ile diğerlerinin neden olmadığını anlamaya çalışıyorum. Aşağıda olduğu gibi, bunu yazdım ve l1.append (val) bir dönüşe ihtiyaç duymuyor ama örneğin l1 [val] yapıyor mu?Bazı işlevler Python'da değil, geri dönüyor mu?

Sadece değişkene bağlı mı?

L = [1,3,5,7,9,11, 2] 

print 'Original List =', L 
def change_list(l1, val, decision): 
    if decision == 'append': 
     return l1[val] 
    elif decision == 'ret': 
     l1.append(val) 
    elif decision == 'instance': 
     return l1.count(val) 
    elif decision == 'sort': 
     l1.sort() 
    return l1 
res=change_list(L, 2, 'append') 
print 'Output =', res 

Ancak, onu aşağıdaki gibi değiştirirsem (dönüşü kaldır) bozulur! Wh bu koşulların bazı çalışmak için bir geri dönüş ihtiyaç göz önüne alındığında, bazı

L = [1,3,5,7,9,11, 2]

print 'Original List =', L 
def change_list(l1, val, decision): 
    if decision == 'append': 
     l1[val] 
    elif decision == 'ret': 
     l1.append(val) 
    elif decision == 'instance': 
     return l1.count(val) 
    elif decision == 'sort': 
     l1.sort() 
    return l1 
res=change_list(L, 2, 'append') 
print 'Output =', res 
+0

Bu bağlantı şu soruya cevap vermelidir: http://stackoverflow.com/questions/15300550/python-return-return-none-and-no-return-at-all – Hektor

+0

amaç, onunla ne yapacaksın – haifzhan

+0

Ne demek istiyorsun, bir dönüşüne gerek yok mu? Eğer kararınız '=' 'ret' 'şartı karşılanırsa, li'ye eklenirsiniz ve sonra' li 'geri dönersiniz. Yani sonucunu nereden aldığınızı göremiyorum. – idjaw

cevap

0

nedeni ?: yok olur mu Bunun için l1.append(val) orijinal nesneyi etkiler. Gibi, .append(val) numaralı çağrı, change_list işlevinize geçirdiğiniz diziye gider ve özgün L dizenize yapar. l1[val] numaralı adres, yalnızca orijinal L değerini bu değer için sorar.

İlgili konular