函数参数、作用域、高阶函数、递归函数、高阶函数

匿名 (未验证) 提交于 2019-12-02 22:51:30
#-----必须参数、关键字参数、默认参数-----
 1 def user_info(name,age,sex="male"):  2     print("Nmae: %s"% name)  3     print("Age: %d" % age)  4     print("Sex:%s" % sex)  5   6 #必须参数('dream',18)  7 user_info('dream',18) #Nmae: dream Age: 18 Sex:male  8 #关键字参数(age=10,name='rise')  9 user_info(age=10,name='rise') #Nmae: rise Age: 10 Sex:male 10 #默认参数(sex="male") 11 user_info("xiaohong",12,"madam") #Nmae: xiaohong Age: 12 Sex:madam
#-----sum() 方法对系列进行求和计算-----
语法 sum(iterable[, start])参数    1、iterable -- 可迭代对象,如:列表、元组、集合。    2、start -- 指定相加的参数,如果没有设置这个值,默认为0。
#-----不定长参数使用(*args,**kwargs)-----
#-----加法器
 1 def add(*args):  2     print(args,type(args)) #((1, 2, 3, 4, 5) <class 'tuple'> #args是可迭代对象(元组)  3     sum1 = sum(args)  4     print(sum1)  5 add(1,2,3,4,5)  6   7 def print_info(name,age,**kwargs):  8     print("Nmae: %s"% name)  9     print("Age: %d" % age) 10     for i in kwargs: 11         print("%s:%s"% (i,kwargs[i])) 12  13 print_info("xiaohong",12,sex="madam",job="IT") 14  15 #结论:关于不定长参数位置:*args放在左边,**kargs 参数放在右边 16  17 def print_info(name,age,sex = "male",*args,**kwargs): 18     print("Nmae: %s"% name) 19     print("Age: %d" % age) 20     print("Sex:%s" % sex) 21     for i in args: 22         print(i) 23     for j in kwargs: 24         print("%s:%s"% (j,kwargs[j])) 25  26 print_info("xiaohong",12,"madam",1,2,job="IT",learn="python")
#-----return-----
return作用    1、结束函数    2、返回某个对象#-----注意问题:    1、函数里如果没有return,会默认返回一个None    2、如果return 多个对象,那么python会帮我们多个对象封装为成一个元组(返回一个对象)
1 def f(): 2     return 1 3 print(f()) #return 返回1(return返回给调用者) 4  5 def add(*args): 6     print(args,type(args)) #((1, 2, 3, 4, 5) <class 'tuple'> #args是可迭代对象(元组) 7     return sum(args) 8 print(add(1,2,3,4,5))
#-----作用域
#作用域:    1、L: local,局部作用域,即函数中定义的变量    2、E: enclosing,嵌套父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局作用域。    3、G: globa 全局变量,模块级别定义的变量。    4、B: built-in 系统固定模块里面的变量作用域优先级:局部作用域>外部作用域>当前模块中的全局作用域>python内置作用域
 1 count = 10  2 def outer():  3   4     # print(count) #local variable 'count' referenced before assignment  5     global count   #全局变量使用global 关键字  6     print(count) #10  7     count = 5  8     print(count) #5  9 outer() 10  11 def outer(): 12     count = 10 13     def inner(): 14         nonlocal count  #嵌套作用域变量使用nonlocal 关键字 15         print(count) #10 16         count = 20 17         print(count) #20 18     inner() 19 outer()
#-----高阶函数-----
#1、函数名可以进行赋值#2、函数名可以作为参数,函数名还可以做为函数的返回值
 1 def f(n):  2     return n*n  3 def foo(a,b,f):  4     return f(a)+f(b)  5 print(foo(2,3,f)) #13  6   7 def a():  8     def b():  9         return 6 10     return b 11 ret = a() 12 print(ret()) # 6
#-----递归函数-----
#定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身(本身),这个函数就是递归。
#-----阶乘实例
 1 def num1(n):  2     ret = 1  3     for i in range(1,n+1):  4         ret = ret * i  5     return ret  6 print(num1(4))  7   8 def num2(n):  9     if n ==  1: 10         return 1 11     return n*num2(n-1) 12 print(num2(4))
#-----斐波那契数列1 1 2 3 5 8 13
 1 def fibo(n):  2     if n <= 1:  3         return n  4     return fibo(n-1)+fibo(n-2)  5   6 print(fibo(8))  7   8 def fi(n):  9     before = 0 10     after = 1 11     for i in range(n-1): 12         before,after = after,before+after 13     return after 14 print(fi(6))
#-----内置函数-----#-----filter过滤器
1 str = ['a','b','c'] 2 def fun1(s): 3     if s != 'a': 4         return s 5  6 ret = filter(fun1,str)  #filter迭代器对象 7 print(list(ret)) #['b', 'c']
#-----map处理序列(拼接、修剪、删除)
1 str = ['a','b','c'] 2 def fun1(s): 3     if s != 'a': 4         return s+'alvin' 5 ret = map(fun1,str) # 迭代器对象 6 print(list(ret)) #[None, 'balvin', 'calvin']
#-----reduce的结果就是一个值
1 from functools import reduce 2 def add1(x,y): 3     return x + y 4  5 print(reduce(add1,range(1,101)))  #36  (1+2+3+4+5....+8+9)
#-----lambda匿名函数
1 add = lambda a,b : a+b 2 print(add(2,3)) #5
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!