查看: 1121|回复: 3
|
Programming command for....in....
[复制链接]
|
|
用在PYTHON,看得失英文,看不懂。for... in... 怎么解释? 如下
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))
答案是166。
那个for。。in。。是什么意思?
+= 和那个一颗星两颗星 又表示什么?
谢谢。 本帖最后由 G_r 于 24-11-2012 06:02 PM 编辑
|
|
|
|
|
|
|
|
发表于 27-11-2012 01:29 PM
|
显示全部楼层
for...in 应该是类似foreach的意思。
打个比方,如果numbers是一个array,储存着一组号码,分别为8,7,6,5,9,1,3,5,4
那么for number in numbers就会是一个loop,把numbers里面的号码轮流储存去number这个variable里面。
也就是说,
在第一圈时,number的value会是8
在第二圈时,number的value会是7
在第三圈时,number的value会是6
在第四圈时,number的value会是5
在第五圈时,number的value会是9
。。。
以此类推 |
|
|
|
|
|
|
|

楼主 |
发表于 28-11-2012 03:05 PM
|
显示全部楼层
明白了点,谢谢
再请问, 第六行, count += keywords [key]
这个挂号的key是做什么? |
|
|
|
|
|
|
|
发表于 29-11-2012 12:03 PM
|
显示全部楼层
When a final formal parameter of the form **name is present, it receives a dictionary (see Mapping Types — dict) containing all keyword arguments except for those corresponding to a formal parameter. This may be combined with a formal parameter of the form *name (described in the next subsection) which receives a tuple containing the positional arguments beyond the formal parameter list. (*name must occur before **name.)
quote from http://docs.python.org/2/tutoria ... l#keyword-arguments
我没学过python,可是根据上面的解释来看,它的概念好象是,如果你放一个*,那么你的parameter将会把一连串普通的arguments当成array。如果你放两个*,那么你的parameter将会把一连串的key-value arguments当成dictionary。所谓的dictionary就是类似2d array,一个是key,另一个是value。只要有key,你就能直到value是什么。但是key一定要是unique的。
也就是说,像是在你给的example当中,def total(initial=5, *numbers, **keywords),第一个parameter是initial,就只是普通的variable,只能储存一个value。所以当你执行total(10, 1, 2, 3, vegetables=50, fruits=100)时,10会被assigned给initial,然后就结束了。
可是第二个parameter有一个*,也就是说它可以接受很多arguments,直到结束。但是它所能接受的argument只能是普通的variable,不能是key-value的variable。所以,1,2,和3都会储存进numbers,成为一个array。vegetables=50之所以不能储存进numbers是因为,他是key-value variable。
第三个parameter有两个**,所以只有key-value的variable会被assigned给keywords。在你的example当中,vegetable是key,50是value; fruits是key,100是value。
所以整个process会是
count = initial ---> count = 10
for number in numbers:
count += number ----> count = count + number where number 是 1, 2, 和 3 在每一个loop时
-----> count = 16
for key in keywords:
count += keywords[key] -----> key是vegetable和fruits,所以keywords[vegetable]会是50,keywords[fruits]会是100
------> count = 166
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|