Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python3参数中指定dict dtat类型_Python_Python 3.x_Dictionary - Fatal编程技术网

如何在Python3参数中指定dict dtat类型

如何在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' 看起来您只是在向函数传递错误的信息。从这个错误来看,

我试图将dict变量传递到Python 3中的函数中,然后尝试通过调用.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()