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

python这种语言里能不能在定义函数时直接设定参数(parameter)的数据类型,比如int,float==?同时还要写出参数名字,这两个能同时实现么?谢谢~... python这种语言里能不能在定义函数时直接设定参数(parameter)的数据类型,比如int,float==?同时还要写出参数名字,这两个能同时实现么?
谢谢~
展开
 我来答
HazyStyx
推荐于2016-05-13 · 超过28用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:0
展开全部
#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)
ddtghost
2009-09-25 · TA获得超过482个赞
知道小有建树答主
回答量:422
采纳率:0%
帮助的人:575万
展开全部
python的函数定义不需要指定参数的数据类型,而是在runtime实时分析。如果你实在需要指定,可以使用默认值的方式,比如def a(x,y=3),或者在函数内部验证类型是否是你需要的类型,type(x)返回x的数据类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白红郯问筠
2020-02-17 · TA获得超过3911个赞
知道大有可为答主
回答量:3050
采纳率:30%
帮助的人:224万
展开全部
直接写个名字就行。python的一切默认都是对象,参数没使用前,是没有类型的。甚至函数写不写行参都无所谓。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏乐尚子怀
2019-05-18 · TA获得超过3784个赞
知道大有可为答主
回答量:3202
采纳率:27%
帮助的人:201万
展开全部
#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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cb82e02
2009-09-25 · TA获得超过347个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:151万
展开全部
python 的动态优越性就在于,x在设为int后,还能重新赋值为float,你要直接定类型的话比如int ,则:x = 0(或任意一个int数),就ok了,其他类型同理,若x = 0 后,你又想给x赋float值,则:x=0.0(或任意一个float数)即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式