1、条件判断
语法表示:注意缩进,一般4个空格
if expression:
代码块
else:
代码块
多个if的情况,同等缩进即为同一条件结构
if expression:
代码块
elif expression1:
代码块
else:
代码块
2、內建函数range()和xrange()
range(start,end,setp=1)
start起始值包含,缺省值为0,end终值不包含,step步长不能为0,缺省值为1
range函数生成的是一个列表,而xrange放回的是一个生成器
在python3中已经没有xrange函数了
3、循环结构while和for
while直到expression为假跳出循环
while expression:
代码块
for循环,常用与次数固定的情况还有迭代的情况:字符串、列表、元组、字典和文件。常用于列表解析和生成器迭代。
for i in range(0,10):
print i
列表由[]表示,如果我要生成1-10之间奇数,如果是用圆括号的返回的是生成器表达式。
[for i+1 in range(10) if i%2==0]
(for i+1 in range(10) if i%2==0)
循环的控制语句break和continue
break终止当前循环,执行循环之后的语句
continue终止当前语句,重新进入循环
循环中的else:如果循环代码从break处终止,跳出循环;如果是正常结束循环,则执行else中放入代码
for i in range(10):
print i
else:
print i
---------------
while(i<10):
i++
else:
print i
4、自定义函数
关键字def
第一行是Docstring,一般需要编写,如何查看其它函数的Docstring呢?
print range.__doc__#查看其它函数的docstring
def addMe2Me(x):
'apply operate'
return (x+x)
函数的调用括号不能少,函数的默认值,给x付给默认值,默认参数要放在参数列表的最后,参数传递时可以改变参数的位置。
def f(x=True):
if x:
print 'true'
print 'ok'
传递函数:函数可以像参数一样传递给另外一个函数
def addMe2Me(x):
'apply operate'
return (x+x)
def self(f,y):
print f(y)
self(addMe2Me,2)
lambda表达式,也就是匿名函数
r=lambda x:x+x
r(5)
10
def ma_add(x,y): return x+y
my_add=lambda x,y:x+y
5、递归
斐波那契数列
递归函数必须要有边界条件,即递归的出口。递归的话有时间比较消耗资源,但是有时间有没有明显的循环条件,而有明显的递归条件。
6、变量作用域
函数里面的是局部变量
如果全局变量等于局部变量,局部变量会覆盖全局变量
如果要在函数体内修改全局变量的值,需要使用global语句
a=2
def f(x):
global a
print a
a=9
print a+x
f(8)
print a