本节主要学习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. #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()

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

[python]view plaincopy
  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变了没?

[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. #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()

运行结果

[python]view plaincopy
  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指向的数据单元。

转载于:https://blog.51cto.com/witting/1281715

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

  1. Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级

    前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...

  2. Python学习入门基础教程(learning Python)--6.3 Python的list切片高级

    上节"6.2 Python的list访问索引和切片"主要学习了Python下的List的访问技术:索引和切片的基础知识,这节将就List的索引index和切片Slice知识点做进一 ...

  3. Python学习入门基础教程(learning Python)--1.4 Python数据处理基础 .

    本节主要讨论数据操作及运算符等基础知识,熟悉C语言相关知识的读者请跳过此节. 在高级语言编程过程中,有了数据以后通常要对数据进行相应的数据处理,加.减.乘.除等基本运算,不难理解. 在Python里 ...

  4. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式

    在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识.逻辑关 ...

  5. Python学习入门基础教程(learning Python)--5.3 Python写文件基础

    前边我们学习了一下Python下如何读取一个文件的基本操作,学会了read和readline两个函数,本节我们学习一下Python下写文件的基本操作方法. 这里仍然是举例来说明如何写文件.例子的功能是 ...

  6. Python学习入门基础教程(learning Python)--5.5 Python写操作详解

    在前文5.3节我们简单的学习了如何在Python里进行文件的写操作,所举例里写入的都是字符串数据,那我们现在想写入数值型数据可以直接写入么?我们先看看下边的程序是否能正常运行? wfile = ope ...

  7. Python学习入门基础教程(learning Python)--5.4 Python读文件详解

    问题1.多余的'\n' 在5.2节里我们基本掌握了Python下的文件读文件操作基本方法,但是也存在一些小小问题,细心的读者会发现下面这幅图的问题. 上图每次打印输出words时,先打印了一行从文件里 ...

  8. Python学习入门基础教程(learning Python)--4.3 Python的for嵌套

    Python下的循环体和其他高级语言一样循环体也是可以嵌套的! 我们做个小例子看看,从而结束本章的学习. 任务:打印矩阵下三角 BASE_SIZE = 8for r in range(BASE_SIZ ...

  9. Python学习入门基础教程(learning Python)--4.2.3 Python的for实现递归,(0629学习笔记)我研究出来了!...

    呵呵,本节主要简单的讨论一下用for来实现递归操作. 先看一下本节设计的小程序要求,有这样一个list: [1, 2, [3, 4], 5, 6, [7, 8, 9]] 用for循环打印结果是什么样的 ...

最新文章

  1. java注解机制_Java 注解机制
  2. 陈怡然团队最新研究:用复数神经网络提高梯度正则化准确度 | ICML 2021
  3. 三种运动让身高增长4-10cm
  4. 长连接和Keepalive
  5. H5 输入框text和number切换
  6. 又有程序员把产品经理给打了!
  7. 电子计算机诞生于1946年第几台,人类第一台电子计算机诞生于1946年2月
  8. Maven学习(八)-----Maven依赖机制
  9. goland配置mysql失败_GoLand配置数据库、远程host以及远程调试
  10. 2018云+未来峰会圆桌面对面:以网络安全之能,造国之重器
  11. c语言宏代码大全,C语言宏
  12. 【Three.js】十二、three.js摄像机控件
  13. 安卓的三个Activity
  14. 衣服尺寸里面A,B是什么意思
  15. 网站/APP 流量分析、点击流分析、用户访问分析
  16. 论文笔记:多标签学习——ACkEL算法
  17. 【算法导论】幻方算法
  18. 阅读《人类简史》思考的几个问题。
  19. 关于奋斗的150条中国名人名言
  20. 在Windows10环境下安装RabbitMAQ、Erlang的坑

热门文章

  1. python基础教程第二版下载-Python基础教程(第2版)
  2. mybatis中的插件
  3. 题目1551:切蛋糕
  4. tip use view.isineditmode() in your custom views to skip code when shown in eclipse
  5. Python操作Rabbit MQ的5种模式
  6. jTessBoxEditor工具进行Tesseract3.02.02样本训练
  7. 一天一种设计模式(一)------观察者模式
  8. BestCoder Round #78 (div.2)
  9. 正则表达式之 测试阶段
  10. vbs脚本读写INI文件