使用def定义函数:
def fibs(num):
result=[0,1]
for i in range(num-2):
result.append(result[-2]+result[-1])
return result
如果在函数的开头写下字符串,它就会作为函数的一部分进行存储,这部分称为文档字符串
- >>> def square(x):
- 'hello world'
- return x*x
- >>> square.__doc__
- 'hello world'
- >>> square(2)
- 4
抽象的要点是隐藏更新时的繁琐的希捷,这个过程可以用函数实现,如下:
- >>> def init(data):
- data['first']={}
- data['middle']={}
- data['last']={}
-
- >>> storage={}
- >>> init(storage)
- >>> storage
- {'middle': {}, 'last': {}, 'first': {}}
把代码初始化放到函数中,函数包办了初始化的工作,让代码更加容易读。
- >>> def print_params(title,*para):
- print title
- print para
-
- >>> print_params('para',1,2,2,3)
- para
- (1, 2, 2, 3)
- >>> def print_ff(**para):
- print para
-
- >>> print_ff(x=1,y=2,z=3)
- {'y': 2, 'x': 1, 'z': 3}
- >>> def print_d(x,y,z=3,*po,**pa):
- print x,y,z
- print po
- print pa
-
- >>> priint_d(1,2,3,5,6,7,fo=1,ba=2)
- >>> print_d(1,2,3,5,6,7,fo=1,ba=2)
- 1 2 3
- (5, 6, 7)
- {'ba': 2, 'fo': 1}
一个星号的意思就是“收集其余的位置参数”,如果不提供任何收集的元素,para就是一个空元组。
两个星号的意思收集位置参数是字典。
- >>> def add(x,y):
- return x+y
- >>> para=(1,2)
- >>> add(*para)
- 3
收集的逆过程是分配它们在一端的,使用*运算时调用而不是在定义时使用。
递归:
- >>> def fa(n):
- for i in range(1,n):
- dd*=i
- return dd
- >>> def fa(n):
- if n==1:
- return 1
- else:
- return n*fa(n-1)
-
- >>> fa(3)
- 6
>>> def search(seq,num,lower,upper):
if lower==upper:
assert num==seq[upper]
return upper
else:
middle=(lower+upper)//2
if num>seq[middle]:
return search(seq,num,middle+1,upper)
else:
return search(seq,num,lower,middle)
语句用来声明某个条件或者表达式是真的,如果不是真的,则会引发。
例如,如果你非常确信某个你使用的中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么语句是应用在这种情形下的理想语句。[网络]
a=[1]
(a)==1
a.()
(a)==1,' gth not 1 ,gth is %d '%(a)
最后会出现如下错误:
: gth not 1 ,gth is 0
阅读(1362) | 评论(0) | 转发(0) |