Python學習入門基礎教程(learning Python)--2.3.5Python返回多個值問題

本節主要學習Python的函數是如何同時返回多個值的問題。

   在學習Python的時候驚奇的發現,Python的函數可以同時返回多個值,很有意思。

  1. #define function sum

  2. def sum(x, y):  

  3.   z = x + y  

  4.   x = x ^ y  

  5.   y = x ^ y  

  6.   x = x ^ y    

  7. return z, x, y  

  8. #define function main

  9. def main():  

  10.   a = int(raw_input("plz input a "))  

  11.   b = int(raw_input("plz input b "))  

  12.   c = sum(a, b)  

  13. print(c)  

  14. #entry of programme

  15. main()  

先看看程序的執行結果如何
  1. plz input a 12

  2. plz input b 13

  3. (25, 13, 12)  

結果裏(25,13,12)這個看上去很奇怪,這是Python裏的tuple(元組),新名詞,沒關係我們後邊將list時會提及。在子函數sum裏,除了求和(第3行)之外還有交換x和y的值的運算操作(第4~6行),返回z、x、y(第7行)給main函數的c(第13行)的打印結果(第14行)來看,確實x和y交換了值。

 那main函數裏的a和b有變化麼?a還是12,b還是13麼?我們在main函數裏在print(c)(第14行)之後增加兩條打印語句,分別打印a和b的值(第15、16行),看看a和b變了沒?

  1. #define function sum

  2. def sum(x, y):  

  3.   z = x + y  

  4.   x = x ^ y  

  5.   y = x ^ y  

  6.   x = x ^ y    

  7. return z, x, y  

  8. #define function main

  9. def main():  

  10.   a = int(raw_input("plz input a "))  

  11.   b = int(raw_input("plz input b "))  

  12.   c = sum(a, b)  

  13. print(c)  

  14. print(a)  

  15. print(b)  

  16. #entry of programme

  17. main()  

運行結果


  1. plz input a 12

  2. plz input b 13

  3. (25, 13, 12)  

  4. 12

  5. 13

結論是不影響a和b的值。







   調用sum函數時,將a和b的值傳遞一份給x和y(a和x都指向12所在數據單元)(b和y都指向13所在數據單元),在sum函數裏x和y通過交換操作,改變了執行x和y指向的數據單元。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章