【HC】函数进阶
有参装饰器def login_auth(func): def wrapper(func): def inner(*args, **kwargs): res = func(*args, **kwargs) return res return inner return wrapper@login_auth('vip用户')def index(): pass12345678910无参装饰器def wrapper(func): def inner(*args,**kwargs): res = func(*args, **kwargs) return res return inner@wrapperdef index(): pass12345678生成器生成器的本质:yield生成器是自定义的迭代器,本质是迭代器生成器的定义:在函数体自定义yield,调用函数时函数体内代码不会执行,当通过__next__()取值时才会执行函数体内代码,并且yield会返回一个结果(可以返回多次);yield的特点: 1.yield只能在函数体内定义 2.每次都往生成器添加一个值 3.可以保持暂停状态yield和return的区别:相同点:都有返回值不同点:return只能返回一次值(一次值可以是空,一个,多个),yield一次只能返回一个值,但可以返回多次。演练list1 = list = list1.__iter__() print(list.__next__())通过__next__()取值才会执行函数体内代码def func(): print('from func') yield 'tank' print(func().__next__())def func(): yield 1 yield 2 yield 3 yield 4 yield 5 yield 6res = func()__next__()直接通过func()取值,只能取第一个,必须通过func()对象res才能实现迭代全部print(res.__next__())......print(res.__next__())迭代器内部自动优化stopiteration报错def range_me(start, end, move=1): while start < end:# yield start# start += move# res = range_me(1,5)for line in res: print(line) for line in range_me(1,5,1): print(line)12345678910111213141516171819202122232425262728293031面向过程编程面向过程编程自白:面向过程编程核心是’过程’二字,类似工厂流水线,即先做什么后做什么。优点: 复杂的问题流程化、简单化。缺点: 可扩展性差,牵一发而动全身。def get_user_pwd(): while True: username = input('请输入用户名:').strip() if username.isalpha(): break else: print('名字不合法') while True: password = input('请输入密码').strip() re_password = input('请确认密码').strip() if password == re_password: http://cdn.u1.huluxia.com/g3/M03/45/23/wKgBOV3PoO2AJavoAAB7c6R6rKQ956.jpg
页:
[1]