【Python 第68课】函数的参数传递(2)

接着上一次的内容,来介绍一种更加灵活的参数传递方式:

def func(*args)

这种方式的厉害之处在于,它可以接受任意数量的参数。来看具体例子:

def calcSum(*args):

sum = 0

for i in args:

sum += i

print sum

调用:

calcSum(1,2,3)

calcSum(123,456)

calcSum()

输出:

6

579

0

在变量前加上星号前缀(*),调用时的参数会存储在一个 tuple(元组)对象中,赋值给形参。在函数内部,需要对参数进行处理时,只要对这个 tuple 类型的形参(这里是 args)进行操作就可以了。因此,函数在定义时并不需要指明参数个数,就可以处理任意参数个数的情况。

不过有一点需要注意,tuple 是有序的,所以 args 中元素的顺序受到赋值时的影响。如:

def printAll(*args):

for i in args:

print i,

print

调用:

printAll(1,2,3)

printAll(3,2,1)

输出:

1 2 3

3 2 1

虽然3个参数在总体上是相同的,但由于调用的顺序不一样,结果也是不同的。

还有一种参数传递方式,既可以按参数名传递参数,不受位置的限制,又可以像 tuple 传递一样不受数量限制。这个我将在下次课中做介绍。

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2014-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python编程中一定要注意的那些“坑”(一)

1 逗号不是运算符,只是个普通的分隔符 >>> x = 3, 5 >>> x (3, 5) >>> x == 3, 5 (False, 5) >>> 1, 2...

33150
来自专栏Python小屋

Python编程常见出错信息及原因分析(2)

(1)缩进错误 演示代码: >>> if 5>3: print('5>3') SyntaxError: expected an indented block >...

44470
来自专栏hbbliyong

python 函数参数的传递(参数带星号的说明)

python中函数参数的传递是通过赋值来传递的。函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个...

37480
来自专栏cs

python异常处理

22140
来自专栏个人随笔

Java 中的异常处理机制

生活中的异常:  不能够完整而顺利的完成一些工作  根据不同的异常进行相应的处理,而不会就此终端我们的生活 引出:   异常处理:   方式:     ...

364100
来自专栏mathor

2017百度之星初赛(A):今夕何夕

10120
来自专栏我和未来有约会

Js中的变量

Js中的变量:  1:如果在var中没有初始化变量的值,则默认为undefined.  2:可以不用var来申明一个变量,但是在过程级中申明一个变量时,就必须用...

28860
来自专栏程序员互动联盟

【答疑解惑】Java中的方法重载

语音版: 我定义了一个类如下: public class FirstJava { private int value; private int...

393100
来自专栏Petrichor的专栏

python: append & extend 异同

  经过试验,总结出 python 中 append 和 extend 的异同点如下表:

13020
来自专栏用户画像

摩拜 [编程题] 字符串问题

版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 https://blog.csdn.net/jxq0816/article/details...

7620

扫码关注云+社区

领取腾讯云代金券