作者cecilx (@@)
看板Python
标题[问题] 程式新手问题VARARG
时间Tue Mar 11 15:22:48 2014
刚开始接触程式设计 现在用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会比较好理解
超新手问题可能问的没有很清楚 整个脑筋很打结啊..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.218.90
1F:→ Microscft:你会有这些问题表示你学习的过程完全忽略定义 03/11 18:19
2F:→ Microscft:从问题三看最明显 你完全不知道 for .. in .. 在干嘛 03/11 18:21
3F:→ Microscft:意思是numbers迭次赋值给给number 03/11 18:22
4F:→ Microscft:numbers=[1,2,3] 表示回圈会跑三次 03/11 18:23
5F:→ Microscft:第一次number=1,第二次number=2,第三次number=3 03/11 18:24
6F:→ Microscft:我看你还是别管number还numbers了 03/11 18:28
7F:→ Microscft:把number改成a, numbers改成b去想好了 03/11 18:29
8F:→ Microscft:不然你大概要为了到底要不要加s又想到脑袋打结 03/11 18:29
9F:→ cecilx:谢谢大大 我多看了tutorial的for范例有比较清楚了 03/12 11:53