Python学习入门基础教程(learning Python)-2.3.5Python返回多个值有关问题

Python学习入门基础教程(learning Python)--2.3.5Python返回多个值问题

    本节主要学习Python的函数是如何同时返回多个值的问题。

    在学习Python的时候惊奇的发现,Python的函数可以同时返回多个值,很有意思。

[python] view plaincopy
  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.   
  9. #define function main  
  10. def main():  
  11.    a = int(raw_input("plz input a "))  
  12.    b = int(raw_input("plz input b "))  
  13.    c = sum(a, b)  
  14.    print(c)  
  15.   
  16. #entry of programme  
  17. main()  

    先看看程序的执行结果如何

[python] view plaincopy
  1. plz input a 12  
  2. plz input b 13  
  3. (251312)  

    结果里(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变了没?   

 

[python] view plaincopy
  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.   
  9. #define function main  
  10. def main():  
  11.    a = int(raw_input("plz input a "))  
  12.    b = int(raw_input("plz input b "))  
  13.    c = sum(a, b)  
  14.    print(c)  
  15.    print(a)  
  16.    print(b)  
  17.   
  18. #entry of programme  
  19. main()  

    运行结果

 

[python] view plaincopy
  1. plz input a 12  
  2. plz input b 13  
  3. (251312)  
  4. 12  
  5. 13  

    结论是不影响a和b的值。

 

 

 

 

Python学习入门基础教程(learning Python)-2.3.5Python返回多个值有关问题

 

 

    调用sum函数时,将a和b的值传递一份给x和y(a和x都指向12所在数据单元)(b和y都指向13所在数据单元),在sum函数里x和y通过交换操作,改变了执行x和y指向的数据单元。