python中怎么设定函数形参的类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中怎么设定函数形参的类型相关的知识,希望对你有一定的参考价值。
python这种语言里能不能在定义函数时直接设定参数(parameter)的数据类型,比如int,float==?同时还要写出参数名字,这两个能同时实现么?
谢谢~
#这个可以用修饰器来完成
#但是一般不会限制参数类型
#给你个思路:
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)本回答被提问者采纳 参考技术B #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):
#定义被修饰的函数
i,
s
#之后你想限制类型的话,
就这样:
#@argfilter(第一个参数的类名,
第二个参数的类名,
...,
第N个参数的类名)
#def
yourfunc(第一个参数,
第一个参数,
...,
第N个参数):
#
...
#
#相当于:
#def
yourfunc(第一个参数,
第一个参数,
...,
第N个参数):
#
...
#yourfunc
=
argfilter(第一个参数的类名,
第二个参数的类名,
...,
第N个参数的类名)(yourfunc) 参考技术C python的函数定义不需要指定参数的数据类型,而是在runtime实时分析。如果你实在需要指定,可以使用默认值的方式,比如def a(x,y=3),或者在函数内部验证类型是否是你需要的类型,type(x)返回x的数据类型。 参考技术D python 的动态优越性就在于,x在设为int后,还能重新赋值为float,你要直接定类型的话比如int ,则:x = 0(或任意一个int数),就ok了,其他类型同理,若x = 0 后,你又想给x赋float值,则:x=0.0(或任意一个float数)即可
以上是关于python中怎么设定函数形参的类型的主要内容,如果未能解决你的问题,请参考以下文章