Bagaimana untuk mengembalikan berbilang nilai pulangan dalam fungsi Python

Perniagaan

Dalam C, mengembalikan berbilang nilai pulangan daripada fungsi agak membosankan, tetapi dalam Python, ia sangat mudah dilakukan.

Kembali dipisahkan dengan koma

Dalam Python, anda hanya boleh mengembalikan senarai rentetan atau nombor yang dipisahkan koma.

Sebagai contoh, tentukan fungsi yang hanya mengembalikan rentetan dan nombor seperti yang ditunjukkan di bawah, dengan setiap satu dipisahkan dengan koma selepas pemulangan.

def test():
    return 'abc', 100

Dalam Python, nilai yang dipisahkan koma dianggap sebagai tupel tanpa kurungan, kecuali jika perlu secara sintaksis. Oleh itu, fungsi dalam contoh di atas akan mengembalikan tuple dengan setiap nilai sebagai elemen.

Ia adalah koma yang mencipta tupel, bukan kurungan bulat. Tanda kurung bulat boleh diabaikan, kecuali dalam kes tupel kosong atau apabila perlu untuk mengelakkan kekaburan sintaksis.
Built-in Types — Python 3.10.0 Documentation

Jenis nilai pulangan ialah tuple.

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

Setiap elemen akan daripada jenis yang ditakrifkan oleh fungsi.

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

Ralat jika anda menentukan indeks yang melebihi bilangan nilai pulangan yang anda tentukan.

# print(result[2])
# IndexError: tuple index out of range

Ia boleh dibongkar dan berbilang nilai pulangan boleh diberikan kepada pembolehubah yang berasingan.

a, b = test()

print(a)
# abc

print(b)
# 100

Perkara yang sama berlaku jika anda ingin menentukan tiga atau lebih nilai pulangan dan bukannya dua sahaja.

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

Mengembalikan senarai.

[]Jika anda melampirkannya dengan ini, nilai pulangan akan menjadi senarai dan bukannya tupel.

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>