python函数的使用
python函数的使用
制作人:全心全意
函数的定义
def 函数名(参数): 函数体
参数的使用
def 函数名(a): 函数体 函数名(5)
默认函数
def 函数名(a=5): 函数体 函数名(4) 函数名()
元组函数
def 函数名(a,b=5,*c): 函数体 函数名(1,2,3,4,5)
关键字函数
def 函数名(a,b=5,*c,**d): 函数体 函数名(1,2,3,4,5,t1=6,t2=7)
元组和关键字分解传参
元组函数
def 函数名(a,b,c,d): 函数体 tt = (1,2,3,4) 函数名(*tt)
关键字函数
def 函数名(a,b,c): 函数体 tt = {"a":3,"b":4,"c":5} 函数名(**tt)
如果默认值参数使用的是列表之类的可变数据类型,那么会在多次调用之间共享默认值
def 函数名(b,a=[0]): a[0] += 1 res = b + a[0] print(res) 函数名(1) #2 函数名(1) #3
闭包函数
def myfun(a): def mynest(b): return a + b return mynest f = myfun(10) print(f(20)) #30
注意示例一:
def myfun(): lists = [] for i in range(0,3): def mynest(b): return i + b #i的值为myfun执行完后的值2 lists.append(mynest) return lists funcs = myfun() print(funcs[0](10)) #12 print(funcs[1](10)) #12 print(funcs[2](10)) #12
注意示例二:(使用默认值参数)
def myfun(): lists = [] for i in range(0,3): def mynest(b,i=i): return i + b #i有默认固定的值 lists.append(mynest) return lists funcs = myfun() print(funcs[0](10)) #10 print(funcs[1](10)) #11 print(funcs[2](10)) #12
递归函数
def myfun(num): print("*"*num) if num <= 0: return myfun(num - 1) myfun(20)
高阶函数
def myfun(func,string): func(string) def myprint1(string): print(string) def myprint2(string): print(string * 2) myfun(myprint1,"nihao") #nihao myfun(myprint2,"nihao") #nihaonihao
lambda函数
lambda只能包含一个表达式
a = lambda x,y:x+y print(a(2,3)) def myfun(func,string): func(string) myfun(lambda x:print(x*3),"nihao")
使用lambda创建一个排序函数
def mysort(func,lists): for i in range(0,len(lists)): for n in range(i,len(lists)): if func(lists[i],lists[n]): lists[i],lists[n] = lists[n],lists[i] return lists lists = [3,5,9,7,9,8,10] print(mysort(lambda x,y:True if x > y else False,lists)) print(mysort(lambda x,y:True if x < y else False,lists))
函数装饰器的使用
装饰器的作用是先将传递的参数使用装饰器进行检查
以DEBUG和登录为例:
DEBUG = True def decorator_1(func): print("调试装饰器") def decorator_nest(*args,**kew): print("开始调试") print("*"*40) print(args,kew) return func(*args,**kew) if DEBUG: return decorator_nest else: return func def login_required(func): def decorator_nest(*args,**kew): print("登录装饰器") if "userid" not in kew: print("尚未登录,禁止访问") return None else: print("欢迎回来^_^") return func(*args,**kew) return decorator_nest @login_required @decorator_1 def myfun(*args,**kew): print(111) myfun("nihao","hello","hi",userid=10)