作者legnaleurc (CA)
看板Python
标题Re: [问题] 程式新手问题VARARG
时间Tue Mar 11 16:44:19 2014
※ 引述《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
建议先去看相关章节
: 超新手问题可能问的没有很清楚 整个脑筋很打结啊..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.163.141.20
1F:→ cecilx:谢谢你 我用total()试 知道initial是不给数值的预设值了 03/12 11:55