无名 发表于 2022-5-8 18:38:26

【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]
查看完整版本: 【HC】函数进阶