如何在Python3参数中指定dict dtat类型
我试图将dict变量传递到Python 3中的函数中,然后尝试通过调用.keys()函数迭代键。但是,我不知道如何指定参数的类型如何在Python3参数中指定dict dtat类型,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我试图将dict变量传递到Python 3中的函数中,然后尝试通过调用.keys()函数迭代键。但是,我不知道如何指定参数的类型 def DisplayStock(StockDict): for key in StockDict.keys(): 我得到的错误是 for key in StockDict.keys(): AttributeError: 'function' object has no attribute 'keys' 看起来您只是在向函数传递错误的信息。从这个错误来看,
def DisplayStock(StockDict):
for key in StockDict.keys():
我得到的错误是
for key in StockDict.keys():
AttributeError: 'function' object has no attribute 'keys'
看起来您只是在向函数传递错误的信息。从这个错误来看,你似乎给了它一个函数。也许您应该将
()
放在导致错误的参数后面
通常不需要指定类型。该函数将采用任何类型
如果要检查传递的参数是否为dict,可以使用:
if isinstance(Stockdict, dict):
for key in Stockdict.keys()
但这并不是很像蟒蛇。只是不要将非dict类对象传递给函数 我想你是在问
StockDict
是参数名,dict
是参数类型。问题不在参数类型中。Python很乐意只使用一个变量名和作为原始代码,然后使用.keys方法。错误出现在代码的另一部分,我在函数调用中遗漏了括号,并将dictionary对象设置为函数引用。请详细说明,这非常不清楚。您是指参数的类型StockDict
,这样您就知道它是一本字典了吗?如果是这种情况,python将采用duck-typing
,请参阅。只要对象通过支持适当的协议,就可以把它看作字典。查看并查找SO和Internet上其他类似的问答,可能是重复的我正在传递一个dict。但是,我无法使用.keys()方法,因为解释器没有意识到这是一个dict,它似乎抛出了一个错误。。。至少我认为这是正在发生的事情!“至少我认为这是正在发生的事情!”你所说的思考是什么意思?如果您的代码没有运行,您应该会看到一个异常和堆栈跟踪,它会准确地告诉您发生了什么。请显示StockDict
type:print(type(StockDict))
请详细说明,这是一个很好的答案,尽管听起来像是重复的…If isinstance(dict):
应该是如果是instance(StockDict,dict):
我关心的不是运行时stype安全。程序无法通过解释器。我对原始问题进行了编辑,将错误包括在内,因为这可能会有帮助(我应该从一开始就这样做,糟糕的我!)我尝试了这个,但没有得到任何改变。仍然给出了相同的错误消息。@StuartMaher类型的注释实际上不是由Python强制执行的
def DisplayStock(StockDict: dict):
for key in StockDict.keys()