第一节. 过程式 python
python 的一个特点是不通过大括号 {} 来划定代码块,而是通过缩进。如果和 C/C++ 类比的话,就是在左括号的地方不要换行,然后用一个冒号 (:) 替代, C/C++ 大括号内部的东西,缩进一个 tab 或者几个空格都可以(但需要保持一致),比如:
if (x < 2):
print 'x < 2' elif (x > 2):
print 'x > 2'
else:
print 'bingo!' print 'x = 2'
注意两点:一是 python 语句结尾处没有分号(;)作为结束标记。二是和 C/C++ 不同,没有
else if,而是用 elif 替代,相当于可以少打几个字符吧。
类型系统
比如 int,string 等,type() 可以返回数据的类型,如:
>>> type(1)
<type 'int'>
>>> type('123')
<type 'str'>
python 尽管在声明变量的时候不指定类型,但变量其实是有类型的,用 c++0x 的概念来表达的话,实际上 python 的变量好像都是 auto 的,类型自动根据赋值推导出来。所以这样:
name = 'ddh' verb = ' is '
noun = ' good man'
sentence = name + verb + noun
没有问题,但:
name = 'cyberscorpio' age = 32
sentence = name + age
就会引发异常,因为字符串和数字不能直接相加。
可以通过 int() 或者 str() 强转类型,如上一句改成: sentence = name + str(age)
就不会有问题了。
容器类型
python 提供好用的两个容器:list 和 dict。插句题外话,其实最好用的容器还是 PHP 提供的关联数组,一个数组就包括了 python 中 list 和 dict 的全部功能,实在是很赞。
list
类似 array 的概念,例如: lst = list() lst.append('123') lst.append('456') lst.append(1000) print lst
for x in lst:
print x, ' type is ', type(x)
注意 list 内的数据可以是不同类型的,这一点会很方便。上面的输出是:
>>> print lst
['123', '456', 1000] # 注意这里是 list 的字面表示方法,如 lst = ['123', '456', 1000],lst 自动成为一个 list
>>> for x in lst:
... print x, ' type is ', type(x)
...
123 type is <type 'str'>
456 type is <type 'str'>
1000 type is <type 'int'> # 这个是整型的数据
dict
类似于 std::map 的概念,当然,和 list 类似,dict 的 key 和 value 不要求是同一种类型。如:
dct = dict()
dct['name'] = 'cyberscorpio' dct['age'] = 32
dct['sex'] = 'male' print dct
for k in dct:
print k, ' is ', dct[k]
输出为:
>>> print dct
{'age': 32, 'name': 'cyberscorpio', 'sex': 'male'} # <