[问题] 程式新手问题VARARG

楼主: cecilx (@@)   2014-03-11 15:22:48
刚开始接触程式设计 现在用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
问题二:count = initial接下来的计算不是应该会变成5+后面的数值 但打印出来结果
却是166 一开始把initial=5这行的作用是什么呢?
问题三:for number in numbers:
number是否因为加了*号所以被归类到*numberS里面
我后来把def total(initial=5, *numbers, **keywords):
里面的numbers改成number结果也是一样的 那为什么要写成number in numbers
但如果把for number in numbers
count += number
改成 for numbers in numbers
count += numbers
结果也是一样的 那为什么作者会用number做变量名称呢
感觉使用numbers会比较好理解
超新手问题可能问的没有很清楚 整个脑筋很打结啊..
作者: Microscft (小软哥)   2014-03-11 18:19:00
你会有这些问题表示你学习的过程完全忽略定义从问题三看最明显 你完全不知道 for .. in .. 在干嘛意思是numbers迭次赋值给给numbernumbers=[1,2,3] 表示循环会跑三次第一次number=1,第二次number=2,第三次number=3我看你还是别管number还numbers了把number改成a, numbers改成b去想好了不然你大概要为了到底要不要加s又想到脑袋打结
楼主: cecilx (@@)   2014-03-12 11:53:00
谢谢大大 我多看了tutorial的for范例有比较清楚了

Links booklink

Contact Us: admin [ a t ] ucptt.com