从C#到Python,基础语法注意点(一)

1、函数多返回值问题
可以认为(或者就是)函数的返回值是一个tuple类型变量,而tuple有如下性质
x,y = (1,2)
print x
z = (1,2)
print z
#结果
#1
#(1,2)

所以对于多返回值的函数来说,其实是将tuple的数据逐个赋值给变量

2、切片可以对字符和数组使用

'ABCDEFG'[:3]
#结果
#'ABC'

3、Python中的for循环

3.1 Python中for循环抽象程度更高,类似于JS可以对dist对象进行遍历(d = {'a': 1, 'b': 2, 'c': 3}),但与JS中的for又不同,具体如下

d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
     print key
#结果,这里与JS相同,但注意由于dist中顺序与实际的差别
#a
#c
#b

3.2 多变量for循环

for i, value in enumerate(['A', 'B', 'C']):
    print i, value
#结果
#0 A
#1 B
#2 C
for x, y in [(1, 1), (2, 4), (3, 9)]:
    print x, y
#结果
#1 1
#2 4
#3 9

进阶版

for i,(x, y) in enumerate([(1, 1), (2, 4), (3, 9)]):
    print i,x, y
#结果
#0 1 1
#1 2 4
#2 3 9

4、yield和generator生成器

yield返回的值是动态生成的,即用到的时候再计算出对应位置的值。由于这里没有使用一次生成,可以很大程度上节约内存空间

>>> def odd():
...     print 'step 1'
...     yield 1
...     print 'step 2'
...     yield 3
...     print 'step 3'
...     yield 5
...
>>> o = odd()
>>> o.next()
step 1
1
>>> o.next()
step 2
3
>>> o.next()
step 3
5

 

posted @ 2015-04-21 19:49  Neral  阅读(83)  评论(0)    收藏  举报