赤色烙印 发表于 2018-8-10 06:50:09

Python第五周 学习笔记(1)

import inspect  def check(fn):
  def wrapper(*args,**kwargs):
  sig = inspect.signature(fn)
  params = sig.parameters #是orderedDict
  values = list(params.values()) #可迭代对象转化成列表,处理后也是有序的
  for k,v in enumerate(args): #因为values、args都有序
  if values.annotation is not inspect._empty and not isinstance(v,values.annotation):
  return '{}`s input is {} type , expected {}'.format(v,type(v),values.annotation)
  for k,v in kwargs.items(): #kwargs与params都为字典形式,键值相同
  if params.annotation is not inspect._empty and not isinstance(v, params.annotation):
  return '{}`s input is {} type , expected {}'.format(k,type(v),params.annotation)
  return fn(*args,**kwargs)
  return wrapper
  @check
  def add(x:int,y:int):
  return x + y
页: [1]
查看完整版本: Python第五周 学习笔记(1)