python中怎么设定函数形参的类型

发布网友

我来回答

1个回答

热心网友

#Python
2.5

#这个可以用修饰器来完成

#但是一般不会*参数类型

#给你个思路:

def
argfilter(*types):

def
deco(func):

#这是修饰器

def
newfunc(*args):

#新的函数

if
len(types)==len(args):

correct
=
True

for
i
in
range(len(args)):

if
not
isinstance(args[i],
types[i]):

#判断类型

correct
=
False

if
correct:

return
func(*args)

#返回原函数值

else:

raise
TypeError

else:

raise
TypeError

return
newfunc

#由修饰器返回新的函数

return
deco

#返回作为修饰器的函数

@argfilter(int,
str)

#指定参数类型

def
func(i,
s):

#定义被修饰的函数

print
i,
s

#之后你想*类型的话,
就这样:

#@argfilter(第一个参数的类名,
第二个参数的类名,
...,
第N个参数的类名)

#def
yourfunc(第一个参数,
第一个参数,
...,
第N个参数):

#
...

#

#相当于:

#def
yourfunc(第一个参数,
第一个参数,
...,
第N个参数):

#
...

#yourfunc
=
argfilter(第一个参数的类名,
第二个参数的类名,
...,
第N个参数的类名)(yourfunc)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com