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)
我在 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)