C’de, bir fonksiyondan birden fazla dönüş değeri döndürmek oldukça sıkıcıdır, ancak Python’da bunu yapmak çok kolaydır.
Virgülle ayrılmış dönüş
Python’da, virgülle ayrılmış bir dizi veya sayı listesi döndürebilirsiniz.
Örnek olarak, aşağıda gösterildiği gibi, dönüşten sonra virgülle ayrılmış olarak yalnızca bir dize ve sayı döndüren bir işlev tanımlayın.
def test(): return 'abc', 100
Python’da, virgülle ayrılmış değerler, sözdizimsel olarak gerekli olmadıkça, parantezsiz tanımlama grupları olarak kabul edilir. Bu nedenle, yukarıdaki örnekteki işlev, her değeri bir öğe olarak içeren bir demet döndürür.
Tuple’ı oluşturan virgüldür, yuvarlak parantezler değil. Boş demetler veya sözdizimsel belirsizliği önlemek için gerekli olduğu durumlar dışında, yuvarlak parantezler atlanabilir.
Built-in Types — Python 3.10.0 Documentation
Dönüş değerinin türü bir tanımlama grubudur.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Her eleman, fonksiyon tarafından tanımlanan tipte olacaktır.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Tanımladığınız dönüş değerlerinin sayısını aşan bir dizin belirtirseniz hata.
# print(result[2]) # IndexError: tuple index out of range
Açılabilir ve ayrı değişkenlere birden çok dönüş değeri atanabilir.
a, b = test() print(a) # abc print(b) # 100
Aynısı, yalnızca iki yerine üç veya daha fazla dönüş değeri belirtmek istediğinizde de geçerlidir.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Bir liste döndürür.
[]
Bunu içine alırsanız, dönüş değeri bir demet yerine bir liste olacaktır.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>