Python 知识点

1. *arg与**kwargs参数的用法

这两个是python中的可变参数,arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict.
使用时需将
arg放在**kwargs之前,否则会有“SyntaxError: non-keyword arg after keyword arg”的语法错误.

2. raise

当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行

raise语法格式如下:
raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

raise Exception("Invalid level!", level)

3. 装饰器

import functools

def statically_typed(*types):     # *types 指的是装饰器里的参数
    def decorator(func):             # func 指的是需要装饰的函数名
        @functools.wraps(func)    # 保留原有函数func的属性
        def wrapper(*args, **kwargs):   # *args, **kwargs 指的是需要装饰函数的参数
            ...
            return wrapper
        return decorator

4. yield
https://blog.youkuaiyun.com/mieleizhi0522/article/details/82142856

如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了。看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器)

5. 可迭代对象,迭代器,生成器
https://blog.youkuaiyun.com/liangjisheng/article/details/79776008
在这里插入图片描述

生成器(generator)
在Python中,这种一边循环一边计算的机制,称为生成器。
① 要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator;
② 生成器对象是通过使用yield关键字定义的函数对象,因此,生成器也是一个函数。生成器用于生成一个值得序列,以便在迭代器中使用

如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有next方法,其是迭代器。
定义可迭代对象,必须实现__iter__方法;定义迭代器,必须实现__iter__和next方法。

生成器是一种特殊的迭代器,生成器自动实现了“迭代器协议”(即__iter__和next方法),不需要再手动实现两方法。
生成器在迭代的过程中可以改变当前迭代值,而修改普通迭代器的当前迭代值往往会发生异常,影响程序的执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangle63

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值