python学习笔记(二)
流程控制
if...else...elif
例子:if 1>2:print ‘AAAA‘-------------------------------if 1>2:print ‘AAAA‘else:print ‘BBBB‘--------------------------------if 1>2:print ‘AAAA‘elif 1>0:print ‘BBBB‘else:print ‘CCCC‘----------------------------------if 2>1:print ‘AAAA‘print ‘BBBB‘输出:AAAABBBB-----------------------------------if 2<1:print ‘AAAA‘print ‘BBBB‘输出:BBBBif中缩进代表运行的范围
逻辑运算符
and / or / not
for
for x in ‘abcde‘:print x输出:abcderange(start, stop[, step]) 生成序列range(10) 产生 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]range(5,9) 产生 [5, 6, 7, 8]range(1,10,2) 2为步进,产生 [1, 3, 5, 7, 9]例子:for x in range(10):print x,‘AAAA‘会输出10次x+AAAApython中与c语言不一样循环也可以加elsefor x in range(5):
print x
else:
print ‘end‘
输出完后输出 endfor x in range(5):
print x
if x>2:
break
else:
print ‘end‘
但这样end不会输出break返回,continue继续,pass占位,代码庄便利序列及字典
便利序列例子:a=[‘a‘,‘b‘,‘c‘,‘d‘,‘d‘]
for x in range(len(a)):
print a[x]
或者for x in a:
print x
便利字典:a={1:‘a‘,2:‘b‘,3:‘c‘,4:‘d‘,5:‘d‘}
for x in a:
print x
会输出字典的keyfor x in a:
print a[x]
可以输出valuefor x,y in a.items():
print x,y
用items()生成键值对的序列x就是key,y就是valuewhile
例子:
i=0
while i<10:
print i
i+=1
输出0到9while也可以加elsei=0
while i<10:
print i
i+=1
else:
print ‘end‘
输出0~9后会输出end,同样break出来else的内容不会执行
函数
函数的定义
定义实现a+b例子:def add(a=1,b=2):return a+bprint add()输出5可以定义默认形参def add(a=1,b=2):print a+badd()输出3
* 与 **
*表示是元组或者列表**表示是字典def add(a,b):return a+bt=(1,2)print add(t)这样会出错如果改成 print add(*t) 不会出错如果add(1,2,3,4)多写了两个参数也会出错定义成def add(a,b,*args):return a+b就不会出错,args就是一个元组存放多余的参数这里args就是(3,4)def f(name=‘name‘,age=‘0‘):
print "name:%s, age:%s" %(name,age)
f(*(‘wang‘,‘18‘))
f(*(‘18‘,‘wang‘))
会输出:name:wang, age:18
name:18, age:wang
def f(name=‘name‘,age=‘0‘):
print "name:%s, age:%s" %(name,age)
f(name=‘wang‘,age=‘18‘)
f(age=18,name=‘wang‘)
这两个f函数都会输出name:wang, age:18 而不会输出name=18, age=wang这样就def f(name=‘name‘,age=‘0‘):
print "name:%s, age:%s" %(name,age)
a={‘age‘:‘18‘,‘name‘:‘wang‘}
f(**a)
可显示name:wang, age:18def f(name=‘name‘,age=‘0‘,*args,**kwargs):
#print "name:%s, age:%s" %(name,age)
print kwargs
f(x=‘x‘,y=‘y‘)
可显示 {‘y‘: ‘y‘, ‘x‘: ‘x‘}lambda表达式
def add(x,y):
return x+y
g = lambda x,y:x+y # lambda表达式,等价于add
print add(1,2)
print g(1,2)
reduce
用reduce实现阶乘def f(x,y):
return x*y
l=range(1,6)
print reduce (f,l) #reduce每次取2个