Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Python foo()缺少1个必需的位置参数 回溯(最近一次呼叫最后一次): 文件“test.py”,第11行,在 s、 foo(pic_路径,key_路径) TypeError:foo()缺少1个必需的位置参数:“key\u path”_Python_Python 3.x - Fatal编程技术网

Python foo()缺少1个必需的位置参数 回溯(最近一次呼叫最后一次): 文件“test.py”,第11行,在 s、 foo(pic_路径,key_路径) TypeError:foo()缺少1个必需的位置参数:“key\u path”

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

为什么??我不明白为什么这不起作用,我的错误是什么?

在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.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