008python路--函数

函数

概念

  1.重复代码变得简洁

  2.方便功能的修改

  3.代码一处修改,处处修改

创建

  def add(x,y):
      print('x+y=%s'%(x+y))
  add(3,4) #调用

参数

 def add( name, age ):
     print(name ,age)
 #==========================
 add( name = 'xiaohu' ,age = 12)

  默认参数--放最后

def add( name, age ,sex='male'):
    print(name ,age,sex)
#==========================
add( name = 'xiaohu' ,age = 12)

  不定长参数

 def add(*args):     #放到元组
     print(args)   #(1, 2, [5, 3],)
 add(1,2,[5,3], )
 def info(**kwargs):   #放到字典
    print(kwargs)   #{'name': 'alex', 'age': 15}
 info( name='alex',age=15)

传参

  def f(*args):
  
    print(args)
  
  f(*[1,2,3,])  #(1, 2, 3)

return

  如果返回多个值,会将值封装在一个元组

  info = {"name":age}

  return info

  接受字典,得到封装后的数据,

定义域

  count= 10
  def f():
      global count  #定义count是全局的,就能修改count的值
      print(count)
      count = 5 
  f() 
  print(count)
  #10
  #5
 变量位置不同,加的标识符也不同
  def outer():
      count =10  
      def inner():
          nonlocal count
          count = 20
          print(count)
     inner()
     print(count)
  outer()             

高阶函数

  def fm(a,b,fun):
      return fun(a)+fun(b)
  def f(n):
     return n*n
  print(fm(3,4,f))

  函数名代表地址,函数()表示内容

匿名函数

 # 普通函数
 def add(a, b):
     return a + b
 print(add(2, 3))
 
 # 匿名函数
 add = lambda a, b: a + b
 print(add(2, 3))

递归函数

 阶乘
 def f(n):
     if n == 0:return 1
     return n*f(n-1)
 print( f(5))
 斐波那契
 def f(n):
     if n==1:return 0
     if n==2:return 1
     return f(n-1)+f(n-2)
 print(f(7))

内置函数

 filter(function, sequence)
 
 str = ['a', 'b', 'c', 'd']
 def fun1(s):
     if s != 'a':
         return s
ret = filter(fun1, str) print(list(ret)) # ret是一个迭代器对象
#结果['b', 'c', 'd']
map(function, sequence) 
 
 str = ['a', 'b']
 def fun2(s):
     return s + "alvin"
 ret = map(fun2, str)
 print(list(ret))  #  map object的迭代器
#结果['aalvin', 'balvin']
 reduce(function, sequence, starting_value)
 from functools import reduce
 def add1(x, y):
     return x + y
 print(reduce(add1, range(1, 101)))  ## 4950 (注:1+2+...+99)
 print(reduce(add1, range(1, 101), 20))  ## 4970 (注:1+2+...+99+20)
posted @ 2018-10-11 18:30  zhaoweiscsuse  阅读(135)  评论(0)    收藏  举报