Return ifadesinin ne olduğu, Python'da nasıl kullanılacağıyla ilgili basit temel açıklama nedir?
Ve onunla print
ifade arasındaki fark nedir?
Return ifadesinin ne olduğu, Python'da nasıl kullanılacağıyla ilgili basit temel açıklama nedir?
Ve onunla print
ifade arasındaki fark nedir?
Yanıtlar:
print()
Fonksiyon yazıyor, yani "baskılar", konsolda bir dize. return
Deyimi çıkış ve el arkasına onun arayan kişiye bir değer senin işlevi neden olur. Genel olarak fonksiyonların amacı, girdileri almak ve bir şey döndürmektir. return
Fonksiyonun arayana bir değer döndürmek için hazır olduğunda deyimi kullanılır.
Örneğin, burada hem kullanan bir fonksiyon var print()
ve return
:
def foo():
print("hello from inside of foo")
return 1
Artık foo çağıran kodu şu şekilde çalıştırabilirsiniz:
if __name__ == '__main__':
print("going to call foo")
x = foo()
print("called foo")
print("foo returned " + str(x))
Bunu .py
Python yorumlayıcısının aksine bir komut dosyası (örneğin bir dosya) olarak çalıştırırsanız , aşağıdaki çıktıyı alırsınız:
going to call foo
hello from inside foo
called foo
foo returned 1
Umarım bu daha açık hale getirir. Yorumlayıcı, dönüş değerlerini konsola yazar, böylece birinin neden kafasının karıştığını anlayabilirim.
İşte tercümandan bunu gösteren başka bir örnek:
>>> def foo():
... print("hello from within foo")
... return 1
...
>>> foo()
hello from within foo
1
>>> def bar():
... return 10 * foo()
...
>>> bar()
hello from within foo
10
Sen ne zaman görebiliriz foo()
çağrılır bar()
1, konsola yazılmaz. Bunun yerine, geri dönen değeri hesaplamak için kullanılır bar()
.
print()
yan etkiye neden olan bir işlevdir (konsola bir dizge yazar), ancak yürütme bir sonraki deyimle devam eder. return
işlevin yürütülmesini durdurmasına ve adı verilen şeye bir değer vermesine neden olur.
"foo returned " + str(x)
yoksa alacaksın TypeError: cannot concatenate 'str' and 'int' objects
.
Print deyiminin bir yan etkiye neden olduğunu düşünün, işlevinizin kullanıcıya bir metin yazmasını sağlar, ancak başka bir işlev tarafından kullanılamaz.
Bunu bazı örneklerle ve Wikipedia'dan birkaç tanımla daha iyi açıklamaya çalışacağım.
Wikipedia'dan bir fonksiyonun tanımı
Matematikte bir işlev, girdi olarak da bilinen işlevin bağımsız değişkenini, başka bir nicelikle, çıktı olarak da bilinen işlevin değerini ilişkilendirir.
Bunu bir saniye düşünün. Fonksiyonun bir değeri olduğunu söylemeniz ne anlama geliyor?
Bunun anlamı, bir fonksiyonun değerini aslında normal bir değerle değiştirebileceğinizdir! (İki değerin aynı değer türü olduğunu varsayarsak)
Neden sormanı istiyorsun?
Bir girdi olarak aynı tür değeri kabul edebilecek diğer işlevler ne olacak ?
def square(n):
return n * n
def add_one(n):
return n + 1
print square(12)
# square(12) is the same as writing 144
print add_one(square(12))
print add_one(144)
#These both have the same output
Çıktılarını üretmek için yalnızca girdilerine bağlı olan işlevler için süslü bir matematiksel terim vardır: Referans Şeffaflığı. Yine Wikipedia'dan bir tanım.
Bilgi şeffaflığı ve referans opaklığı, bilgisayar programlarının parçalarının özellikleridir. Bir ifadenin, bir programın davranışını değiştirmeden değeri ile değiştirilebiliyorsa, referans olarak şeffaf olduğu söylenir.
Programlamada yeniyseniz bunun ne anlama geldiğini kavramak biraz zor olabilir, ancak bazı deneylerden sonra anlayacağınızı düşünüyorum. Genel olarak, bir işlevde print gibi şeyler yapabilirsiniz ve sonunda bir return ifadesine sahip olabilirsiniz.
Return kullandığınızda temelde "Bu işleve yapılan bir çağrı, döndürülen değeri yazmakla aynıdır" dediğinizi unutmayın.
Python aslında kendi değerinizi koymayı reddederseniz sizin için bir dönüş değeri ekler, buna "Yok" denir ve bu, hiçbir şey ifade etmeyen veya boş olan özel bir türdür.
Python'da, bir işlevi "def" ile tanımlamaya başlarız ve genel olarak, ancak zorunlu olmamakla birlikte, işlevi "return" ile sonlandırırız.
X değişkeninin bir fonksiyonu f (x) olarak belirtilir. Bu işlev ne yapar? Farz edelim ki, bu işlev 2'yi x'e ekler. Yani, f (x) = x + 2
Şimdi, bu işlevin kodu şöyle olacaktır:
def A_function (x):
return x + 2
Fonksiyonu tanımladıktan sonra bunu herhangi bir değişken için kullanabilir ve sonuç alabilirsiniz. Gibi:
print A_function (2)
>>> 4
Kodu biraz farklı yazabiliriz, örneğin:
def A_function (x):
y = x + 2
return y
print A_function (2)
Bu da "4" verir.
Şimdi, bu kodu bile kullanabiliriz:
def A_function (x):
x = x + 2
return x
print A_function (2)
Bu da 4'ü verirdi. Bakın, dönüşün yanındaki "x", "A_fonksiyonunun (x)" x değil, aslında (x + 2) anlamına gelir.
Sanırım bu basit örnekten dönüş komutunun anlamını anlayacaksınız.
Bu cevap, yukarıda tartışılmamış bazı vakaların üzerinden geçer. Dönüş deyimi sağlar sonlandırmak Eğer sonuna ulaşmadan bir fonksiyonu yürütülmesini. Bu, yürütme akışının hemen arayana dönmesine neden olur.
4 numaralı satırda:
def ret(n):
if n > 9:
temp = "two digits"
return temp #Line 4
else:
temp = "one digit"
return temp #Line 8
print("return statement")
ret(10)
Koşullu ifade çalıştırıldıktan sonra ret()
işlev return temp
(4. satır) nedeniyle sonlandırılır . Böylece print("return statement")
idam edilmez.
Çıktı:
two digits
Koşullu ifadelerden sonra veya kontrol akışının ulaşamadığı yerdeki bu kod ölü koddur .
Dönen Değerler
4 ve 8 numaralı satırlarda, koşul yerine getirildikten sonra geçici bir değişkenin değerini döndürmek için return ifadesi kullanılmaktadır.
Baskı ve iade arasındaki farkı ortaya çıkarmak için :
def ret(n):
if n > 9:
print("two digits")
return "two digits"
else :
print("one digit")
return "one digit"
ret(25)
Çıktı:
two digits
'two digits'
return
"bu değeri bu işlevden çıkar" anlamına gelir.
print
"bu değeri (genellikle) stdout'a gönder" anlamına gelir
Python REPL'de, ekrana varsayılan olarak bir fonksiyon dönüşü çıkacaktır (bu, print ile tamamen aynı değildir).
Bu bir baskı örneğidir:
>>> n = "foo\nbar" #just assigning a variable. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
Bu bir dönüş örneğidir:
>>> def getN():
... return "foo\nbar"
...
>>> getN() #When this isn't assigned to something, it is just output
'foo\nbar'
>>> n = getN() # assigning a variable to the return value. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
@Nathan Hughes'un mükemmel cevabına eklemek için:
return
Deyim kontrol akışının bir tür olarak kullanılabilir. return
Bir işlevin ortasına bir (veya daha fazla) ifade koyarak şunu söyleyebiliriz: "bu işlevi yürütmeyi durdurun. Ya istediğimizi elde ederiz ya da bir şeyler ters gitti!"
İşte bir örnek:
>>> def make_3_characters_long(some_string):
... if len(some_string) == 3:
... return False
... if str(some_string) != some_string:
... return "Not a string!"
... if len(some_string) < 3:
... return ''.join(some_string,'x')[:,3]
... return some_string[:,3]
...
>>> threechars = make_3_characters_long('xyz')
>>> if threechars:
... print threechars
... else:
... print "threechars is already 3 characters long!"
...
threechars is already 3 characters long!
Bu kullanım şekli hakkında daha fazla tavsiye için Python Kılavuzunun Kod Stili bölümüne bakın return
.
"Dönüş" ve "baskı" arasındaki fark aşağıdaki örnekte de bulunabilir:
DÖNÜŞ:
def bigger(a, b):
if a > b:
return a
elif a <b:
return b
else:
return a
Yukarıdaki kod, tüm girişler için doğru sonuçları verecektir.
YAZDIR:
def bigger(a, b):
if a > b:
print a
elif a <b:
print b
else:
print a
NOT: Bu, birçok test durumu için başarısız olur.
HATA:
----
FAILURE
: Test case input: 3, 8.
Expected result: 8
FAILURE
: Test case input: 4, 3.
Expected result: 4
FAILURE
: Test case input: 3, 3.
Expected result: 3
You passed 0 out of 3 test cases
Sanırım burada gerçekten basit bir yanıt yararlı olabilir:
return
değeri (genellikle bir değişken) arayan tarafından kullanılabilir hale getirir (örneğin, kullanılan işlevin return
içinde olduğu bir işlev tarafından saklanmak üzere ). Olmadan return
, sizin değer veya değişken mağaza / yeniden kullanım için arayan için kullanılabilir olmaz.
print
ekrana yazdırır, ancak değeri veya değişkeni arayan tarafından kullanılabilir hale getirmez.
(Daha kapsamlı cevapların daha doğru olduğunu tamamen itiraf ediyorum.)
İşte benim anlayışım. (umarım birine yardımcı olur ve doğrudur).
def count_number_of(x):
count = 0
for item in x:
if item == "what_you_look_for":
count = count + 1
return count
Yani bu basit kod parçası, bir şeyin gerçekleşme sayısını sayar. Geri dönüşün yerleştirilmesi önemlidir. Programınıza değere nerede ihtiyacınız olduğunu söyler. Böylece yazdırdığınızda ekrana çıktı gönderirsiniz. Geri döndüğünüzde değeri bir yere gitmesini söyleyin. Bu durumda count = 0'ın return ile girintili olduğunu görebilirsiniz - değerin (count + 1) 0'ın yerini almasını istiyoruz. Return komutunu daha fazla girintilediğinizde kodun mantığını izlemeye çalışırsanız, çıktı her zaman 1 olacaktır. çünkü ilk sayının değişmesini asla söylemeyeceğiz. Umarım doğru anlamışımdır. Oh, ve dönüş her zaman bir işlevin içindedir.
İşlevle ilgili en iyi şey return
, işlevden bir değer döndürebilmenizdir, ancak aynı şeyi yapabilirsiniz, print
yani fark nedir? Temelde return
sadece döndürmekle ilgili değil, çıktıyı nesne biçiminde verir, böylece bu dönüş değerini işlevden herhangi bir değişkene kaydedebiliriz, ancak yapamayız print
çünkü aynısı stdout/cout
in C Programming
.
Daha iyi anlamak için aşağıdaki kodu izleyin
def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
def subtract(a, b):
print "SUBTRACTING %d - %d" % (a, b)
return a - b
def multiply(a, b):
print "MULTIPLYING %d * %d" % (a, b)
return a * b
def divide(a, b):
print "DIVIDING %d / %d" % (a, b)
return a / b
print "Let's do some math with just functions!"
age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print "That becomes: ", what, "Can you do it by hand?"
Şimdi add, subtract, multiply,
ve için kendi matematik fonksiyonlarımızı yapıyoruz divide
. Dikkat edilmesi gereken önemli şey, dönüş a + b
(giriş add
) dediğimiz son satırdır . Bunun yaptığı şey şudur:
a
ve b
.a + b
. Bunu "Ben eklerim a
ve b
sonra iade ederim" olarak söyleyebilirsiniz .a + b
sonucu bir değişkene atayabilecektir .return
için kullanılmalıdır özyinelemeli fonksiyonlar / yöntemlerin ya da algoritma daha sonra uygulamalar için döndürülen değeri kullanmak istiyorum.
print
Kullanıcıya anlamlı ve istenen bir çıktıyı görüntülemek istediğinizde ve ekranı kullanıcının ilgilenmediği ara sonuçlarla karıştırmak istemediğinizde kullanılmalıdır, ancak bunlar kodunuzda hata ayıklamak için yararlıdır.
Aşağıdaki kod, nasıl return
ve print
doğru şekilde kullanılacağını gösterir :
def fact(x):
if x < 2:
return 1
return x * fact(x - 1)
print(fact(5))
Bu açıklama sadece python değil tüm programlama dilleri için geçerlidir .