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指向的数据单元。



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