012函数

#函数定义
def  f():
    print('love Q')
f()

##参数
#形参和实参
def add(a,b):
    print(a+b)
add(7,5)

def  print_info(name,age):
    print('name:%s' % name)
    print('age:%d' % age)
print_info('xia',21)                         #必须参数
print_info(age = 20,name = 'qiu') #关键字参数

#默认参数,
def  print_info(name,age,sex='male'):
    print('name:%s'%name)
    print('age:%d'%age)
    print('sex:%s'%sex)
print_info('xia',21)
print_info('qing',20,'female')


#不定长的的参数,用个*加一个变量名是保存在元组里面,**两个是在字典里面
def  print_info(*args,**kwargs):
    for  i  in  args:                    #这个是元组
        print(i)
    for  x  in  kwargs:               #这个是字典
        print(x,kwargs[x])
print_info('xia',21,'male',job='it',lover='qing')      位置不能错
把列表的各个元素传进去,在列表前面加个*  ,eg:*[1,2,3]
把字典的各个元素传进去,在字典前面加**,eg:**{'name':'xia','lover':'q'}                         ##在后面的jango会经常使用

#这里默认参数放左边
def  print_info(sex='male',*args,**kwargs):
    print(sex)
    for  i  in  args:#这个是元组
        print(i)
    for  x  in  kwargs:#这个是字典
        print(x,kwargs[x])
print_info('female','xia',21,'male',job='it',lover='qing')

##return
和其他语言基本一样
不同的是,python可以返回多个对象,只是放在元组里面

##高阶函数(假的):函数的形参有函数,通过函数调用函数
def  my_func(a,b,f):
    return   f(a)+f(b)
def  f(n):
    return  n * n
print(my_func(3,4,f))
函数名也是一个变量,可以赋值给其他变量


###作用域

LEGB

x=int(2.9)    #built_in
局部变量不能改变全局变量,要改变就+Global
嵌套作用域的的使用nonlocal关键字

函数的阶乘与递归,因为和c语言还有Java都是一样,我很清晰,所以就不再总结了,重在使用,经典:汉诺塔问题。
递归注意,必须有一个结束条件


##内置函数
python里面就有的函数
#filter(function, iterable) 函数   #实现对迭代器过滤

#map函数实现对迭代器的操作
str=['q','h']
def  func(s):
    return''.join([s,'xia'])
ret=map(func,str)
print(list(ret))


#reduce函数
from  functools  import  reduce
def  add1(x,y):
    return   x+y
print(reduce(add1,range(1,11)))           ##实现的过程是先取前面两个操作,然后返回去,再从里取两个操作
也可以实现阶乘


#lambda函数
a=1;b=2
mysum=lambda   a,b:  a+b          #实现了a+b,用法lambda+空格+参数+冒号+空格+操作
和reduce配合使用


 

posted @ 2017-12-21 01:22  Alos403  阅读(192)  评论(0编辑  收藏  举报