Re: [问题] 程式新手问题VARARG

楼主: legnaleurc (CA)   2014-03-11 16:44:19
※ 引述《cecilx (@@)》之铭言:
: 刚开始接触程式设计 现在用bytes of python练习
: VarArgs parameters这一章的东西我不太理解怎么运作的
: 以下是书上的范例
: def total(initial=5, *numbers, **keywords):
: count = initial
: for number in numbers:
: count += number
: for key in keywords:
: count += keywords[key]
: return count
: print(total(10, 1, 2, 3, vegetables=50, fruits=100))
: ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
: 问题一:10, 1, 2, 3是被归类到*numbers吗?
: 而vegetables=50, fruits=100是被归类到**keywords
建议你写个函式:
def test(initial=5, *numbers, **keywords):
print(initial, numbers, keywords)
代各种参数进去看看会比较好体会, 例如
test()
test(10)
test(10, 1, 2, 3)
test(10, 1, 2, 3, vegetables=50, fruits=100)
: 问题二:count = initial接下来的计算不是应该会变成5+后面的数值 但打印出来结果
: 却是166 一开始把initial=5这行的作用是什么呢?
同上, 你必须理解何为"默认参数", 问题一解开后问题二也不存在了
: 问题三:for number in numbers:
: number是否因为加了*号所以被归类到*numberS里面
numbers 是一个 list, 和开头的 * 号无关
可以先跳去看关于循环的章节
: 我后来把def total(initial=5, *numbers, **keywords):
: 里面的numbers改成number结果也是一样的 那为什么要写成number in numbers
: 但如果把for number in numbers
: count += number
: 改成 for numbers in numbers
: count += numbers
不要这么做 ... 你会搞混谁是 list 谁是 item
: 结果也是一样的 那为什么作者会用number做变量名称呢
: 感觉使用numbers会比较好理解
觉得这边的问题是你还没完全理解 Python 的 for-loop
建议先去看相关章节
: 超新手问题可能问的没有很清楚 整个脑筋很打结啊..
作者: cecilx (@@)   2014-03-12 11:55:00
谢谢你 我用total()试 知道initial是不给数值的默认值了

Links booklink

Contact Us: admin [ a t ] ucptt.com