Python学习入门基础教程(learning Python)-2.3.5Python返回多个值有关问题
Python学习入门基础教程(learning Python)--2.3.5Python返回多个值问题
本节主要学习Python的函数是如何同时返回多个值的问题。
在学习Python的时候惊奇的发现,Python的函数可以同时返回多个值,很有意思。
- #define function sum
- def sum(x, y):
- z = x + y
- x = x ^ y
- y = x ^ y
- x = x ^ y
- return z, x, y
- #define function main
- def main():
- a = int(raw_input("plz input a "))
- b = int(raw_input("plz input b "))
- c = sum(a, b)
- print(c)
- #entry of programme
- main()
先看看程序的执行结果如何
- plz input a 12
- plz input b 13
- (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变了没?
- #define function sum
- def sum(x, y):
- z = x + y
- x = x ^ y
- y = x ^ y
- x = x ^ y
- return z, x, y
- #define function main
- def main():
- a = int(raw_input("plz input a "))
- b = int(raw_input("plz input b "))
- c = sum(a, b)
- print(c)
- print(a)
- print(b)
- #entry of programme
- main()
运行结果
- plz input a 12
- plz input b 13
- (25, 13, 12)
- 12
- 13
结论是不影响a和b的值。
调用sum函数时,将a和b的值传递一份给x和y(a和x都指向12所在数据单元)(b和y都指向13所在数据单元),在sum函数里x和y通过交换操作,改变了执行x和y指向的数据单元。