Python 3:在 __init__ 范围内定义的预定义值之间使用 * 运算符时出现无效语法错误

Python 3: Invalid Syntax Error when using * operator in __init__ between pre-defined values defined in-scope

我在 Python 3.

中尝试执行以下 MCVE 时出现语法错误
HEIGHT = 26
WIDTH = 26
OTHERVAR = 5

class Foo():
    def __init__(self, OTHERVAR, HEIGHT*WIDTH):
        print (str(OTHERVAR + HEIGHT*WIDTH))

foo_inst = Foo()

错误如下

  File "a.py", line 6
    def __init__(self, OTHERVAR, HEIGHT*WIDTH):
                                       ^
SyntaxError: invalid syntax

我想知道为什么乘法 * 运算符在这种情况下是无效语法。

如果有人能解释为什么这是错误的语法并提供可能的解决方法,那就太好了。谢谢。

一个函数参数应该是一个变量,你的 HEIGHT*WIDTH 产生一个值,而不是一个变量。

您可能正在寻找这个(默认值)吗?

>>> a = 1
>>> b = 2
>>> def test(c=a*b):
...     print(c)
... 
>>> test()
2

>>> def test(c=a*b, d):
...     print(c, d)
... 
  File "<stdin>", line 1
SyntaxError: non-default argument follows default argument

>>> def test(d, c=a*b):
...     print(d, c)
... 
>>> test(10)
(10, 2)

并通过命名参数调用

>>> def test(d, c=a*b, e=20):
...     print(d, c, e)
... 
>>> test(10, e=30)
(10, 2, 30)