Python函數返回不定數量的值


Python的函數是可以return多個值的,但其本質上還是返回單個值,只是利用了tuple的自動打包,將多個值打包成單個tuple返回。

 

使用代碼驗證:

def func_a():
    return 1, 2, 3, 4

if __name__ == '__main__':
    temp = func_a()
    print(type(temp))

運行結果,確認返回的是一個tuple,

<class 'tuple'>

 

稍微修改代碼:

def func_a(*args):
    return 1, 2, 3, 4

if __name__ == '__main__':
    a, b, c, d = func_a()
    print(a, b, c, d)

代碼中利用了tuple的自動解包,將tuple的值分別賦值給了a, b, c, d四個變量,實現返回多個值

 

既然知道實際上Python返回多個值的本質是返回tuple,再自動解包賦值給N個變量,那要實現返回任意多個值,只要手動返回一個tuple就可以了,tuple內元素的數量可以自定:

def func_a(*args):
    return tuple(arg * 2 for arg in args)

if __name__ == '__main__':
    a, b, c, d = func_a(1, 2, 3, 4)
    print(a, b, c, d)

代碼中,將傳入的參數值 x 2后,轉換成tuple返回,再利用tuple的自動解包賦值給多個變量,從而實現函數返回不定數量的值。

這里需要注意,當返單個值時,不需要再手動返回一個tuple,所以修改代碼如下:

def func_a(*args):
    temp = tuple(arg * 2 for arg in args)
    return temp if len(temp) > 1 else temp[0]

if __name__ == '__main__':
    a, b, c, d = func_a(1, 2, 3, 4)
    print(a, b, c, d)
    e = func_a('Hello')
    print(e)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM