首页 > 解决方案 > python星号语法错误。不知道出了什么问题

问题描述

我正在尝试使用scipy.optimize.minimize. 因为我需要良好的梯度才能顺利执行局部优化,但是函数非常复杂,以便手动编写导数,我决定使用Autoptim作为中间人来处理我的优化使用自动微分包Autograd以获得梯度。

在我安装了包(以及 Autograd)之后,我打开了我的 python 终端以运行一些初步测试,以检查 scipy、autograd 和 autoptim 之间的安装和包集成是否顺利。然后 Autooptim 在导入时立即引发错误(在行import autoptim)。由于解释器给出了引发的全部异常堆栈,我去更深层查看是哪一行启动了停止解释器的级联。

我找到的行是 autoptim.py 的第 88 行:

87. optim_vars = _convert_to_tuple(optim_vars)
88. precon_optim_vars = precon_fwd(*optim_vars,*args)
89. n_args = len(args)

Python 解释器引发了一个无效的语法异常,这意味着该行中的某些内容不是“用 Python”编写的。我检查了是否有一些未闭合的括号,但事实并非如此。我正在使用 Python 3,所以我认为那行中的某些内容可能是用 Python 2 语法编写的,并且它为 Python 3 解释器注册了错误,但据我了解,两个版本之间的差异非常小并且有一些(尽管不完整)两者之间的逆向兼容性。

那么给了什么?我在这里想念什么?

那条线有什么问题?

这是python解释器中导入行的回溯

>>> import autoptim
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/autoptim/__init__.py", line 6, in <module>
    from .autoptim import minimize  # noqa
  File "/usr/local/lib/python3.4/dist-packages/autoptim/autoptim.py", line 95
    return objective_function(*optim_vars, *args)
                                           ^
SyntaxError: invalid syntax

标签: pythonpython-3.xsyntax

解决方案


直到 Python 3.5 才引入所使用的语法(请参阅PEP 448)。您正在使用 Python 3.4。

作为一种解决方法,您可以显式构建解包所需的列表:

return objective_function(*list(optim_vars + args))

推荐阅读