本节主要学习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指向的数据单元。

智普教育Python www.jeapedu.com


———————————————————————————————————————————

Python学习教程(learning Python)--2.3.5 Python返回多个值问题的更多相关文章

  1. python学习教程,史上最全面的python学习路线图

    Python 是Web 开发.游戏脚本.计算机视觉.物联网管理和机器人开发的主流语言之一,随着Python用户可以预期的增长,它还有机会在多个领域里登顶.Python学习路线分享给你. 阶段一是Pyt ...

  2. Python学习教程(learning Python)--3.3.4 Python的if-elif-else语句

    Python的if-elif-else语句用于多种条件判断后选择某个语句块执行.该语句可以利用一系列条件表达式进行检查,并在某个表达式为真的情况下执行相应的代码.需要注意的是,虽然if/elif/el ...

  3. Python学习教程(learning Python)--3.3.3 Python逻辑关系表达式

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

  4. Python学习教程(learning Python)--3.3.2 Python的关系运算

    如果if的condition不用布尔表达式来做条件判断而采用关系表达式,实际上关系表达式运算的结果要么是True要么是False.下面我们先了解一些有关关系运算符的基础知识,如下表所示. 做个小程序测 ...

  5. Python学习教程(learning Python)--3.3.1 Python下的布尔表达式

    简单的说就是if要判断condition是真是假,Python和C语言一样非0即真,所以如果if的condition是布尔表达式我们可以用True或者非0数(不可是浮点数)表示真,用False或者0表 ...

  6. Python学习教程(learning Python)--3.3 分支语句的条件表达式详解

    本节主要讨论分支语句的条件表达式问题. 在if或者if-else分支控制语句里由于都用到条件判断(表达式是真还是假),条件判断可以是一种关系运算也可以是布尔表达式. 本节将对if及if-else语句的 ...

  7. Python学习教程(learning Python)--3.2 if-else分支语句

    if-else分支语句结构的特点是当conditon条件满足时,执行if下的语句块,当condition条件不满足时执行else下的语句块,也就是说根据条件来控制让某些语句执行,某些语句不被执行. i ...

  8. Python学习教程(learning Python)--3.1 Python的if分支语句

    本节研究一下if分支语句. if分支语句是Python下逻辑条件控制语句,用于条件执行某些语句的控制操作,当if后的条件conditon满足时,if其下的语句块被执行,但当if的控制条件condito ...

  9. Python学习教程(learning Python)--3 Python分支结构和布尔逻辑

    本章节主要探讨研究Python下的分支选择结构程序设计问题.   if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 ) ...

随机推荐

  1. 修改 sql server 2008R2的端口,配置防火墙允许远程访问SQL Server 2008 R2

    1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 -->sql server 网络配置-->MSSQLSERVE ...

  2. Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

    本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877) 今天还是给大家带来自定义控件的编写,自定义一个Lis ...

  3. C程序之修改Windows的控制台颜色(转载)

    Windows的CMD可以和Linux下的终端一样可以有五颜六色,目前我在网上找到2种方法可以修改Windows的CMD,当然都是在代码中修改的.在“CMD”->“属性”->“颜色”,这种 ...

  4. redis学习(3)redis.conf配置文件详解

    # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =>  1000 bytes # 1kb ...

  5. ORA-00933: SQL command not properly ended

    今天写了一个小的SQL语句类似下面的这句: UPDATE A SET ID=B.ID FROM A,B WHERE A.NAME=B.NAME 在执行时居然报了“ORA-00933: SQL comm ...

  6. ndk-gdb 对java/native code联合调试(升级版)

    之前写过一篇 关于android native 开发,调试的文章(http://www.cnblogs.com/yaozhongxiao/archive/2012/03/13/2393959.html ...

  7. idea 文件名乱码问题的解决

    参考:http://www.cnblogs.com/xingma0910/p/4651889.html idea:文件名乱码:

  8. 通过fileupload上传文件超出大小

    配置文件 . web.config中添加如下内容: <configuration> <system.web> <httpRuntime maxRequestLength= ...

  9. 互斥对象 Mutex 和MFC中的CMutex

    互斥(Mutex)是一种用途非常广泛的内核对象.能够保证多个线程对同一共享资源的互斥访问.同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共 ...

  10. SVN与TortoiseSVN实战:属性的奇技淫巧(一)

    硬广:<SVN与TortoiseSVN实战>系列已经写了六篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,预计再用三.四篇来结束这个系列. 本篇详解一下SVN的属 ...