Python foo()缺少1个必需的位置参数 回溯(最近一次呼叫最后一次): 文件“test.py”,第11行,在 s、 foo(pic_路径,key_路径) TypeError:foo()缺少1个必需的位置参数:“key\u path”
为什么??我不明白为什么这不起作用,我的错误是什么?在s.foo()调用中缺少一个参数。foo函数需要3个参数,而您只传递了2个Python foo()缺少1个必需的位置参数 回溯(最近一次呼叫最后一次): 文件“test.py”,第11行,在 s、 foo(pic_路径,key_路径) TypeError:foo()缺少1个必需的位置参数:“key\u path”,python,python-3.x,Python,Python 3.x,为什么??我不明白为什么这不起作用,我的错误是什么?在s.foo()调用中缺少一个参数。foo函数需要3个参数,而您只传递了2个 Traceback (most recent call last): File "test.py", line 11, in <module> s.foo(pic_path, key_path) TypeError: foo() missing 1 required positional argument: 'key_path' test.f
Traceback (most recent call last):
File "test.py", line 11, in <module>
s.foo(pic_path, key_path)
TypeError: foo() missing 1 required positional argument: 'key_path'
test.foo()
接受三个参数:pic\u path
、enc\u path
和key\u path
。您仅使用两个参数调用它:pic\u path
和key\u path
。您缺少它们之间的enc\u路径
在本例中,test.foo()
不关心要传递的变量的名称。它只知道你用两个参数而不是三个参数来调用它。在你对foo
的定义中,你需要三个参数:pic\u path
,enc\u path
,和key\u path
,但是,当您调用foo时,您只传递了其中的两个。您传递的是两个位置参数pic\u path
和key\u path
pic_路径
被解释为pic_路径
和key_路径
被解释为enc_路径
调用该类时,必须将enc_path作为第二个位置参数传递。或者您可以将它们作为关键字参数传递(例如,s.foo(enc_path=enc_path,pic_path=pic_path,key_path=key_path
)如果您希望只使用两个参数调用foo,可以将foo设置为:
class test:
def foo(self, pic_path, enc_path, key_path):
return pic_path, enc_path, key_path
if __name__ == "__main__":
s = test()
pic_path = "pic.png"
key_path = "keys.txt"
enc_path = "asd.sc"
s.foo(pic_path,enc_path, key_path)
print("done")
尽管您首先需要使用@sp4c38的关键字参数解决方案来传递它们
(见中的8.6)
编辑:修复以避免下面声明的语法错误。(您也可以默认将它们全部设置为None
,尽管这可能会产生您不想要的副作用)您还记得您在定义enc\u path
参数时所说的foo
需要的参数吗?他们确实提供了enc\u path
。他们忘记的是key\u path
参数。这是一个语法错误:默认参数后不能有非默认参数。
class test:
def foo(self, pic_path, enc_path, key_path):
return pic_path, enc_path, key_path
if __name__ == "__main__":
s = test()
pic_path = "pic.png"
key_path = "keys.txt"
enc_path = "asd.sc"
s.foo(pic_path,enc_path, key_path)
print("done")
def foo(self, pic_path, key_path, enc_path=None):
return pic_path, enc_path, key_path