设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 14996|回复: 7
打印 上一主题 下一主题

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

[复制链接]
回帖奖励 11 金钱 回复本帖可获得 11 金钱奖励! 每人限 1 次

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2014-5-19 17:40:19 |只看该作者 |倒序浏览


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

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的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

558

积分

高级会员

Rank: 4

沙发
发表于 2014-9-29 23:32:40 |只看该作者

回帖奖励 +11 金钱

看来必须找本书慢慢品味了。
学习,纯粹。
回复

使用道具 举报

0

主题

0

好友

41

积分

新手上路

Rank: 1

板凳
发表于 2015-12-9 16:45:46 |只看该作者

回帖奖励 +11 金钱

请问先生,在calcsum(1,2,3)的栗子中,为什么不是按照实参分别为1,2,3的顺序依次执行三个for循环然后执行三个print sum呢?

ps:请问先生知道data scientist方面有什么值得推荐的书么?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2015-12-9 21:21:02 |只看该作者
hanxuejiao 发表于 2015-12-9 16:45
请问先生,在calcsum(1,2,3)的栗子中,为什么不是按照实参分别为1,2,3的顺序依次执行三个for循环然后执行 ...

函数只调用了一遍,参数是3个

data scientist我不太清楚这方面的书
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

132

积分

注册会员

Rank: 2

5#
发表于 2015-12-15 14:15:09 |只看该作者

回帖奖励 +11 金钱

get
回复

使用道具 举报

0

主题

0

好友

58

积分

注册会员

Rank: 2

6#
发表于 2017-8-17 12:26:22 |只看该作者

回帖奖励 +11 金钱

谢谢先生
回复

使用道具 举报

0

主题

0

好友

23

积分

新手上路

Rank: 1

7#
发表于 2018-4-7 20:13:10 |只看该作者

回帖奖励 +11 金钱

断断续续的看到这里了,要坚持。
回复

使用道具 举报

0

主题

0

好友

137

积分

注册会员

Rank: 2

8#
发表于 2018-4-9 13:57:03 |只看该作者

回帖奖励 +11 金钱

厉害!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-25 20:37 , Processed in 0.039558 second(s), 32 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部