python3在函数声明里如何设置参数的类型 dict

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3在函数声明里如何设置参数的类型 dict相关的知识,希望对你有一定的参考价值。

def f(a:int,b:list[int],c:str):
pass
def f(d:?):#如果d是d=1:2,3:4
pass

dict[]和dict.get两个方法的区别吧 dict[key]:当key不存在的时候,会抛出异常 dict.get(key, defaut_value=None) 当key不存在的时候,不会抛出异常,而且会返回默认值 参考技术A def f(d:dict):

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

python这种语言里能不能在定义函数时直接设定参数(parameter)的数据类型,比如int,float==?同时还要写出参数名字,这两个能同时实现么?
谢谢~

直接写个名字就行。python的一切默认都是对象,参数没使用前,是没有类型的。甚至函数写不写行参都无所谓。 参考技术A #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)本回答被提问者采纳
参考技术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):
#定义被修饰的函数
print
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数)即可

以上是关于python3在函数声明里如何设置参数的类型 dict的主要内容,如果未能解决你的问题,请参考以下文章

『每周译Go』Go 官方出品泛型教程:如何开始使用泛型

如何声明具有在声明下方定义的类型的参数的函数?

如何将字符串从 Python3 传递给 cythonized C++ 函数

如何查看DLL中的函数信息

delphi 可以将函数做为参数吗?

Python3新特性 类型注解 以及 点点点