python- 如何return返回多個值


函數的return 語句只能返回一個值,可以是任何類型。

因此,我們可以“返回一個 tuple類型,來間接達到返回多個值 ”。

例:   x 除以 y 的余數與商的函數

def    F1 ( x, y ):

         a = x % y

         b = (x-a) / y

         return ( a,b )     # 也可以寫作 return a, b

(c, d )= F1( 9, 4)        # 也可以寫作 c , d = F1 ( 9, 4 )

print c ,d

結果顯示: 1, 2

Python 與大多數其它語言一樣有局部變量和全局變量之分, 但是它沒有明顯的變量聲明。變量通過首次賦值產生, 當超出作用范圍時自動消亡。

例 3.17. 定義 myParams 變量


if __name__ == "__main__" :
myParams = {"server" :"mpilgrim" , /
"database" :"master" , /
"uid" :"sa" , /
"pwd" :"secret" /
}

首先注意縮進。 if 語句是代碼塊, 需要像函數一樣縮進。

其次, 變量的賦值是一條被分成了多行的命令, 用反斜線 (“/ ”) 作為續行符。

注意
當一條命令用續行符 (“/ ”) 分割成多行時, 后續的行可以以任何方式縮近, 此時Python 通常的嚴格的縮近規則無需遵守。如果您的 Python IDE 自由對后續行進行了縮近, 您應該把它當成是缺省處理, 除非您有特別的原因不這么做。

嚴格地講, 在小括號, 方括號或大括號中的表達式 (如 定義一個 dictionary ) 可以用或者不用續行符 (“/ ”) 分割成多行。甚至在不是必需的時候, 我也喜歡使用續行符, 因為我認為這樣會讓代碼讀起來更容易, 但那只是風格的問題。

第三, 您從未聲明過變量 myParams , 您只是給它賦了一個值。這點就象是VBScript 沒有設置 option explicit 選項一樣。幸運的是, 與 VBScript 不同的是,Python 不允許您引用一個未被賦值的變量, 試圖這樣做會引發一個異常。

3.4.1. 變量引用

例 3.18. 引用未賦值 的變量

>>> 
x

Traceback (innermost last):
File "<interactive input>", line 1, in ?
NameError: There is no variable named 'x'
>>> x = 1
>>> x
1

遲早有一天您會為此而感謝 Python 。

3.4.2. 一次賦多值

Python 中比較 “酷” 的一種編程簡寫是使用序列來一次給多個變量賦值。

例 3.19. 一次賦多值

>>> 
v = ('a' , 'b' , 'e' ) 
>>> (x, y, z) = v 1
>>> x
'a'
>>> y
'b'
>>> z
'e'
1 v 是一個三元素的 tuple, 並且 (x, y, z) 是一個三變量的 tuple。將一個 tuple 賦值給另一個 tuple, 會按順序將 v 的每個值賦值給每個變量。

這種用法有許多種用途。我經常想要將一定范圍的值賦給多個變量。在 C 語言中, 可以使用 enum 類型, 手工列出每個常量和其所對應的值, 當值是連續的時候這一過程讓人感到特別繁瑣。而在 Python 中, 您可以使用內置的 range 函數和多變量賦值的方法來快速進行賦值。

例 3.20. 連續值 賦值

>>> 
range(7)
                                                                    
1

[0, 1, 2, 3, 4, 5, 6]
>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7) 2
>>> MONDAY 3
0
>>> TUESDAY
1
>>> SUNDAY
6
1 內置的 range 函數返回一個元素為整數的 list。這個函數的簡化調用形式是接收一個上限值, 然后返回一個初始值從 0 開始的 list, 它依次遞增, 直到但不包含上限值。 (如果您願意, 您可以傳入其它的參數來指定一個非 0 的初始值和非 1的步長。也可以使用 print range.__doc__ 來了解更多的細節。)
2 MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIDAY , SATURDAY 和 SUNDAY 是我們定義的變量。 (這個例子來自 calendar 模塊。它是一個很有趣的打印日歷的小模塊, 象 UNIX 的 cal 命令。這個 calendar 模塊定義了一星期中每天的整數常量表示。)
3 現在每個變量都擁有了自己的值: MONDAY 的值為 0 , TUESDAY 的值為 1 , 等等。

您也可以使用多變量賦值來創建返回多個值的函數, 只要返回一個包含所有值的 tuple 即可。調用者可以將其視為一個 tuple, 或將值賦給獨立的變量。許多標准的 Python 庫都是這樣做的, 包括 os 模塊。


免責聲明!

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



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