生成器表达式必须带括号错误

时间:2019-12-06 07:25:10

标签: python github

python(Signed jar file)的蛮力库

*brute.py*
# ...
return (
    ''.join(candidate) for candidate in
    chain.from_iterable(
        product(
            choices,
            repeat = i,
        ) for i in range(start_length if ramp else length, length + 1),
    )
)

例外

File "C:\Python37-32\lib\site-packages\brute.py", line 68
product(
^
SyntaxError: Generator expression must be parenthesized

2 个答案:

答案 0 :(得分:0)

删除最后一个for loop末尾的逗号。
for i in range(start_length if ramp else length, length + 1),->这个逗号

>>> x = 5,
>>> x
(5,)
>>>

在变量后将逗号放入一个元素的元组。
chain.from_iterable期望第一个参数是生成器而不是元组。

由于该逗号,您的代码实际上求值为
chain.from_iterable((product(choices, repeat = i) for i in range(start_length if ramp else length, length + 1)))
代替
chain.from_iterable(product(choices, repeat = i) for i in range(start_length if ramp else length, length + 1))

答案 1 :(得分:0)