python自定义函数和推导

#之所以把这俩写一起,并不是因为这俩有什么关系,因为都太简单,没什么可说的

#自定义函数的格式,def开头,后面空格,在后面是函数名,接括号,括号里是入参参数

 1 #!/usr/bin/python
 2 # coding: UTF-8
 3 
 4 def abc(num):
 5   if num > 10:
 6     return
 7   print num
 8   num += 1
 9   abc(num)
10 
11 if __name__ == '__main__':
12   abc(1)

结果是1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n

说明下,这里有个递归,递归在代码里最好不要出现,因为每递归一次都会占用的内存都会累加递增,因此如果可以,尽量把递归改成循环例如这个例子,可以改成下面这样

#!/usr/bin/python
# coding: UTF-8

def abc(num):
  while num > 10:
    print num
    num += 1
  return
 
if __name__ == '__main__':
  abc(1)

这样就可以了

再看看推导,就说下for的把,其他的忘了,以后想起来再加

a = range(10)
b = []
for i in a:
  i += 1 #每个元素加1
  b.append(i) #把i加到空list,b中
print b #结果是[1,2,3,4,5,6,7,8,9,10]
#推导变成
b = [i+1 for i in a]
#还可以加入if
b = [i+1 for i in a if i > 3] #取a里面>3的数,结果是[5,6,7,8,9,10]

 lambda这个是函数的推导,先看代码

z = lambda x,y: x+y
v = z(1,2)
print(v)

这段代码的运行结果是3,再看看下面这段

def z(x,y):
  return x+y
v = z(1,2)
print(v)

其实这两段代码是一个意思,也就是lambda是def创建函数的推导

posted @ 2018-02-03 00:18  咻_python  阅读(508)  评论(0编辑  收藏  举报