python从零开始到放弃_python入门到放弃:函数

1|0闭包函数

def f1():

x = 10 def f2():

print(x) # 10

x = 1000

f1() # 10

print(x) # 1000

def f1():

x = 10 def f2():

print(x) # 10

return f2

f = f1() # f2 f() # f2()

把函数和变量一起打包拿出去了

def f1(x): def f2():

print(x) # 10

return f2

f3 = f1(10) # f2 f3() # f2() # 10 f3() # 10 f3() # 10 f4 = f1(5) f4() # 5 f4() # 5

2|0装饰器不改变函数体代码,并且不改变函数调用方式,它本质就是一个函数

def f1(x): def f2():

print(x) # 10

return f2 f2 = f1() f2() # f2()完善装饰器

def login_deco(func): def wrapper(*args,**kwargs): login_judge = login() if login_judge: res = func(*args,**kwargs) return res return wrapper @login_deco def shopping(): pass # shopping = deco(shopping) # shopping()

3|0三层装饰器

def sanceng(x,y): def login_deco(func): print(x,y) def wrapper(*args,**kwargs): login_judge = login() if login_judge: res = func(*args,**kwargs) return res return wrapper return login_deco @sanceng(10,20) def shopping(): pass day20 # shopping = login_deco(shopping) # shopping()

4|0迭代器可迭代对象:具有iter方法的对象(Python中一切皆对象)

迭代器对对象:具有iter和next方法迭代器对象一定是可迭代对象,可迭代对象不一定是迭代器对象(f)

5|0三元表达式

6|0列表推导式

7|0字典生成式

8|0生成器表达式

9|0生成器

自定义的迭代器,函数内部使用yield关键,有yield关键字的函数只要调用,这个调用后的函数就是生成器yield:接收函数返回值,但是会继续执行函数体代码

return:接收函数返回值,但是会终止函数

def f1(): yield 1 g = f1() # 变成生成器 for i in g: print(i) # 1

10|0递归

递归本质上就是函数调用函数本身,必须得有结束条件,并且在递归的过程中,问题的规模必须都不断缩小

10|1二分搜索

def find_num(num,lis): if len(lis) == 1 and lis[0] != num: print('没找到') return mid_ind = int(len(lis) / 2) # 中间索引 mid_num = lis[mid_ind] # 中间值 if num < mid_num: lis = lis[:mid_ind] find_num(num,lis) elif num > mid_num: lis = lis[mid_ind + 1:] find_num(num, lis) else: print('find') lis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] find_num(20,lis)

11|0匿名函数

lamdbda 参数 : 逻辑代码匿名函数使用一次就失效了,一般不单独使用,与max最大值/min最小值/sorted排序/map映射/filter过滤 连用

max(dic,key=lambda name: dic[name]) max(dic) max(lis/se/tup)内置函数(有空看一看,没空抄一抄)

12|0面向过程编程

类似于工厂的流水线,机械式的一步一步完成一个项目,把完成步骤具体细分,这样步骤与步骤之间互不干涉

缺点:扩展性差,只要有一个步骤断了,项目就崩溃了

优点:清晰优雅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值