这个实参能不能传
(每道题开头都有同一段:PARENT 是类型的父子关系(int→num、float→num、num→any、str→any、bool→any);is_sub(a, b) 判 a 是不是 b 的子类型(自反);ok_arg(param, arg) 判实参能不能传给形参。)
形参要 num,实参给 int;形参要 int,实参给 num,各判一次:
PARENT = {"int": "num", "float": "num", "num": "any", "str": "any", "bool": "any"}
def is_sub(a, b):
"""a 是不是 b 的子类型:沿 PARENT 往上找,找到 b 就是(自反:a<:a)。"""
x = a
while True:
if x == b:
return True
if x not in PARENT:
return False
x = PARENT[x]
def ok_arg(param, arg):
"""实参类型 arg 能不能传给形参类型 param:arg 是 param 的子类型即可。"""
return is_sub(arg, param)
print(str(ok_arg("num", "int")) + "/" + str(ok_arg("int", "num")))
全部评论