只列出与java语法不同的地方。
if-else语句
age = 20
if age >= 18:
print 'your age is', age
print 'adult'
else:
print 'teenager'
print 'END'
注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。
缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。
注意: if 语句后接表达式,然后用:表示代码块开始。
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
else:
print 'baby'
elif 意思就是 else if。
for循环
L = [1,2,3]
for name in L:
print name
注意: name 这个变量是在 for 循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给 name,然后执行for循环体
while循环
N = 10
x = 0
while x < N:
print x
x = x + 1
函数
定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
def my_abs(x):
if x >= 0:
return x
else:
return -x
函数之返回多值
# math包提供了sin()和 cos()函数,我们先用import引用它:
import math
def move(x, y, step, angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
这样我们就可以同时获得返回值:
>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print x, y
151.961524227 70.0
但其实这只是一种假象,Python函数返回的仍然是单一值:
>>> r = move(100, 100, 60, math.pi / 6)
>>> print r
(151.96152422706632, 70.0)
用print打印返回结果,原来返回值是一个tuple!
函数之定义默认参数
函数的默认参数的作用是简化调用。
假设计算平方的次数最多,我们就可以把 n 的默认值设定为 2:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
这样一来,计算平方就不需要传入两个参数了:
>>> power(5)
25
由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面。
函数之定义可变参数
def fn(*args):
print args
可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数。
切片
对list切片
对于经常取list指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> L[0:3]
['Adam', 'Lisa', 'Bart']
索引下标,含头不含尾,即取0~2的元素。
只用一个 : ,表示从头到尾。
切片操作还可以指定第三个参数:
>>> L[::2]
['Adam', 'Bart']
第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。
倒序切片
Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片
>>> L[-2:]
['Bart', 'Paul']
记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。
字符串切片
Python没有针对字符串的截取函数,只需要切片一个操作就可以完成。
>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[-3:]
'EFG'
>>> 'ABCDEFG'[::2]
'ACEG'
迭代
迭代dict的key和value。
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value。
>>> for key, value in d.items():
... print key, ':', value
...
Lisa : 85
Adam : 95
Bart : 59
列表生成式
生成list,可以用range(x,xx)
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
生成[1x1, 2x2, 3x3, …, 10x10]怎么做?
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。
列表生成式的 for 循环后面还可以加上 if 判断.
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
多层表达式
对于字符串 ‘ABC’ 和 ‘123’,可以使用两层循环,生成全排列:
>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
总结
学习了Python的基本语法,确实能感受到其优雅简洁的特点,如切片、列表生成、多层表达式,更是强化其简洁便利性。