我是Python的新手,我正在尝试基本上创建一个哈希表,检查一个键是否指向表中的值,如果不是,则将其初始化为空数组.我的代码的违规部分是行:
converted_comments[submission.id] = converted_comments.get(submission.id, default=0)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: get() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)
但是在文档(以及各种示例代码)中,我可以看到它确实采用了一个默认参数:
https://docs.python.org/2/library/stdtypes.html#dict.get http://www.tutorialspoint.com/python/dictionary_get.htm
以下是get()方法的语法:
dict.get(key,default = None)
在堆栈上没有任何关于这个,所以我认为这是一个初学者的错误?
我试图让我的代码不接受关键字参数,就像一些bulitins也是不接受的关键字参数,但是,我不能这样做.在这里,根据我的有限理解,我的想法是: -
def somefunc(a,b):
print a,b
somefunc(10,20)
Run Code Online (Sandbox Code Playgroud)
输出:
10 20
Run Code Online (Sandbox Code Playgroud)
现在,当我运行以下内容时(我知道这不是函数定义中的关键字参数,但是,查看函数调用,它似乎与调用接受关键字参数的函数时的语法相同) :
somefunc(b=10,a=20)
Run Code Online (Sandbox Code Playgroud)
输出:
20 10
Run Code Online (Sandbox Code Playgroud)
我有两个问题: -
somefunc(b=10,a=20)而不是函数定义,这似乎是对只接受普通参数的函数的调用或接受关键字参数的函数.口译员如何区分两者?为什么我要这样做呢? 我只是在检查我是否可以这样做,所以我不会错过任何深入理解python的东西.我知道python是否允许这样做.