【人工智能概论】 Python标准库——typing(类型标注)、 assert断言、 @property装饰器、setter装饰器
文章目录
【人工智能概论】 Python标准库——typing(类型标注)、 assert断言、 @property装饰器、setter装饰器 一. typing(类型标注)简介 二. assert断言 三. @property装饰器、setter装饰器
一. typing(类型标注)简介
众所周知,Python是弱类型语言,大多情况下函数参数类型或返回值类型是难以知晓的,这可能导致一段时间后忘记了函数需要传什么参数,返回什么类型的结果,造成不必要的麻烦,而typing模块可以很好的解决这个问题。 typing的主要功能有:
作为开发文档附加说明,方便使用者使用时了解传入和返回的参数类型。 类型检查,防止运行时出现参数、返回值类型不符的情况,模块加入不会影响程序的运行,不会报正式的错误,pycharm支持typing检查错误时会出现黄色警告。
def 函数名( 参数名: 数据类型) - > 返回值类型:
pass
变量名: 数据类型 = 变量值
Union :并集,Union[X, Y]即变量(参数)要么是X类型、要么是Y类型。 Optional : Optional[X]与Union[X, None]等价,即它默认允许变量(参数)为None类型。 Tuple : 举例:person: Tuple[str, int, float] = (‘Mike’, 22, 1.75),表示person是个元组,其内部元素类型分别为str,int,float。 List : 举例:var: List[int or float] = [2, 3.5],表示var是个列表,其内部元素可以是int或float类型;var: List[List[int]] = [[1, 2], [2, 3]],很明显组合使用罢了。 Dict: 举例: dic: Dict[str, int],表示dic是键为str类型,值为int类型的字典。 Sequence:可能在某些情况下,并不需要严格区分一个变量或参数到底是列表 list 类型还是元组 tuple 类型,此时就可以使用一个更为泛化的类型,叫做 Sequence,其用法类似于 List。
二. assert断言
assert通常在代码调试中被使用,被用来判断紧随其后的代码的正确性,如果满足条件(正确),程序自动向后执行,如果不满足条件(错误),便中断当前程序并产生一个AssertionError错误。 举例:
a = - 1
assert a < 0
assert a > 0
三. @property装饰器、setter装饰器
Python 提供@property装饰器、setter装饰器
,被装饰的方法,可被当作属性来用 举例:定义一个Exam
类,为避免直接对内部属性_score
进行操作,通过property装饰器、setter装饰器
提供的方法实现间接控制属性,这样便起到封装的作用,把一些不想对外公开的属性隐蔽起来,而只是提供方法给用户操作,在方法里面,可以检查参数的合理性等。
class Exam ( object ) :
def __init__ ( self, score) :
self. _score = score
@property
def score ( self) :
return self. _score
@score. setter
def score ( self, val) :
if val < 0 :
self. _score = 0
elif val > 100 :
self. _score = 100
else :
self. _score = val
if __name__ == '__main__' :
e = Exam( 60 )
print ( e. score)
e. score = 90
print ( e. score)
e. score = 200
print ( e. score)