2015-08-31 33 views
5

Programlama için çok yeni.
Bu örnek neden listedeki tüm öğeleri yazdırıyor merak ediyor, ikinci örnek ise yalnızca ilkini basıyor mu? ekranına her öğeyi baskıvs karşılık listesine dön


def list_function(x): 
    for y in x: 
     return y 

n = [4, 5, 7] 
print list_function(n) 
+9

İade her zaman bir işlevin yürütülmesini sona erdirir. –

+0

Ayrıca bkz. Http://stackoverflow.com/q/27502505/4014959 –

+1

Bu soruya, yeni programlama sorularının burada iyi karşılanmadığını ya da anında aşağı çekilmelere neden olduğunu söyleyen tüm insanlara karşı delil olarak gideceğim. Bu, tek bir downvote olmadan son derece basit bir konu hakkında iyi yazılmış, iyi sunulmuş bir sorudur. –

cevap

4

def list_function(x): 
    for y in x: 
     print y 

n = [4, 5, 7] 
list_function(n) 
x her öğe aracılığıyla İlk örnek yinelediğinden. İkinci örneğiniz , numaralı öğenin her bir öğesiyle yinelenen'u başlatır, ancak ilk önce bu işlevin yürütülmesini sona erdirir.

ilk örneğe daha yakından bakalım:

Fonksiyonun içerisinde
def list_function(x): 
    for y in x: 
     print(y) # Prints y to the screen, then continues on 

n = [4, 5, 7] 
list_function(n) 

, for döngü x üzerinde iterating başlayacak. İlk y, yazdırılan 4 olarak ayarlanır. Daha sonra 5 olarak ayarlanmış ve yazdırılmış, daha sonra 7 ve yazdırılmıştır.

Şimdi ikinci örneğe bir göz atın:

def list_function(x): 
    for y in x: 
     return y # Returns y, ending the execution of the function 

n = [4, 5, 7] 
print(list_function(n)) 

Fonksiyonun içerisinde for döngü x üzerinde iterating başlayacak. İlk y, döndürülür, olarak ayarlanır. Bu noktada, fonksiyonun çalışması durdurulur ve değer arayan kişiye geri döner. y hiçbir zaman 5 veya 7 olarak ayarlanmamıştır. Bu kodun hala bir şeyi ekrana yazdırmasının tek nedeni, print list_function(n) satırında çağrıldığından, dönüş değeri yazdırılacaktır. İlk örnekte olduğu gibi list_function(n) ile aradıysanız, hiçbir şey ekrana yazdırılmaz.

+0

Teşekkür ederim. Anladığım kadarıyla, kafam karıştığım şey ikinci cümlenin ... neden sadece birinciyi geri alıyor? – Dude

+0

@Dude, çünkü 'return' değeri döndürür ve daha sonra function_ işlevini yürütürken,' print' sadece değeri basar. İkincisinin değeri basmasının tek nedeni, 'print 'i dönüş değeriyle çağırmanızdır. – Cyphase

+0

ah üzgünüm "başlar" kelimesini okumadı. Bu şimdi mantıklı. Teşekkürler – Dude

-1

return işlevleri için yürütmeyi sonlandırır, bu nedenle geri dönüşten sonra hiçbir şey yürütülmez.

Sizin durumunuzda, ilk işlevi, numaralı tüm öğeleri yazdıracaktır, çünkü işlemi bozan hiçbir şey yoktur. Ancak, ikinci işlevde, ,'u döndürecek ve işlemi sonlandıracaktır.