TypeError:execute()缺少1个必需的位置参数:'args' [关闭]

分享于2022年07月17日 python typeerror 问答
【问题标题】:TypeError:execute()缺少1个必需的位置参数:'args' [关闭](TypeError: execute() missing 1 required positional argument: 'args' [closed])
【发布时间】:2022-01-27 04:36:57
【问题描述】:

如果这个问题之前被问过,我们深表歉意。 我正在尝试创建一个函数,该函数使用参数 func (要执行的函数)和 args (函数的参数)返回另一个函数的输出。 恼人的是,我不断收到错误消息。

TypeError: execute() missing 1 required positional argument: 'args'

我不确定问题是什么,因为我看不到定义或函数调用有任何错误。如果有帮助,这里是定义;

def execute(func, args):
 return func(args)

还有我调用函数的那一行:

print(function)
print(argument)
execute((function, argument))

完整的输出是:

print
Hello world
Traceback (most recent call last):
  File "C:\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\__main__.py", line 45, in 
    cli.main()
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py", line 430, in main
    run()
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py", line 267, in run_file
    runpy.run_path(options.target, run_name=compat.force_str("__main__"))
  File "C:\Python39\lib\runpy.py", line 268, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "C:\Python39\lib\runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "C:\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\willd\source\repos\code executer\code_executer.py", line 52, in 
    execute((function, argument))
TypeError: execute() missing 1 required positional argument: 'args'

如果有帮助,我正在使用 Microsoft Visual Studio 2019 社区。 提前谢谢!

  • 执行(函数,参数)
  • (function, argument) 是一回事 - 一个有两个值的元组。

【解决方案1】:

你只给 python 一个参数,它是一个由括号形成的元组。 要正确调用执行,您需要删除括号,因为 python 将它们解释为元组。 元组是不可变的。

execute(function, arguments) 调用使用 2 个参数执行, 相当于 execute(func=function, args=arguments)

execute((function, arguments)) 仅使用 1 个参数调用“执行”。 这相当于 execute(func=(function, arguments)) 并且缺少“参数”。

建议: 如果您想避免传递参数,请查看部分。

如果函数有多个位置参数,你应该把你的代码改成类似的,否则你会再次遇到同样的问题。:

def execute(function, *args):
    return function(*args)