Paano ibalik ang maramihang mga halaga ng pagbabalik sa isang function ng Python

Negosyo

Sa C, ang pagbabalik ng maramihang mga halaga ng pagbabalik mula sa isang function ay medyo nakakapagod, ngunit sa Python, ito ay napakadaling gawin.

Bumalik na pinaghihiwalay ng mga kuwit

Sa Python, maaari mo lamang ibalik ang isang listahan ng mga string o numero na pinaghihiwalay ng kuwit.

Bilang halimbawa, tukuyin ang isang function na nagbabalik lamang ng isang string at isang numero tulad ng ipinapakita sa ibaba, na ang bawat isa ay pinaghihiwalay ng kuwit pagkatapos ng pagbabalik.

def test():
    return 'abc', 100

Sa Python, ang mga halagang pinaghihiwalay ng kuwit ay itinuturing na mga tuple na walang panaklong, maliban kung kinakailangan ayon sa syntactically. Samakatuwid, ang function sa halimbawa sa itaas ay magbabalik ng isang tuple na may bawat halaga bilang isang elemento.

Ang kuwit ang lumilikha ng tuple, hindi ang mga bilog na bracket. Maaaring tanggalin ang mga round bracket, maliban sa kaso ng mga walang laman na tuple o kapag kinakailangan upang maiwasan ang syntactic ambiguity.
Built-in Types — Python 3.10.0 Documentation

Ang uri ng return value ay isang tuple.

result = test()

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

Ang bawat elemento ay magiging sa uri na tinukoy ng function.

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

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

Error kung tumukoy ka ng index na lampas sa bilang ng mga return value na iyong tinukoy.

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

Maaari itong i-unpack at maraming mga return value ang maaaring italaga sa magkakahiwalay na variable.

a, b = test()

print(a)
# abc

print(b)
# 100

Ang parehong naaangkop kung gusto mong tumukoy ng tatlo o higit pang mga halaga ng pagbabalik sa halip na dalawa lang.

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

a, b, c = test2()

print(a)
# abc

print(b)
# 100

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

Nagbabalik ng listahan.

[]Kung isasama mo ito, ang ibabalik na halaga ay isang listahan sa halip na isang tuple.

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

result = test_list()

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