![为什么列表理解中的元组需要括号?[重复],第1张 为什么列表理解中的元组需要括号?[重复],第1张](/aiimages/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%88%97%E8%A1%A8%E7%90%86%E8%A7%A3%E4%B8%AD%E7%9A%84%E5%85%83%E7%BB%84%E9%9C%80%E8%A6%81%E6%8B%AC%E5%8F%B7%EF%BC%9F%5B%E9%87%8D%E5%A4%8D%5D.png)
Python的语法是LL(1),这意味着它在解析时仅向前看一个符号。
[(v1, v2) for v1 in myList1 for v2 in myList2]
在这里,解析器看到这样的内容。
[ # An opening bracket; must be some kind of list[( # Okay, so a list containing some value in parentheses[(v1[(v1,[(v1, v2[(v1, v2)[(v1, v2) for # Alright, list comprehension
但是,如果没有括号,则必须更早地做出决定。
[v1, v2 for v1 in myList1 for v2 in myList2][ # List-ish thing[v1 # List containing a value; alright[v1, # List containing at least two values[v1, v2 # Here's the second value[v1, v2 for # Wait, what?
众所周知,回溯的解析器通常很慢,因此LL(1)解析器不会回溯。因此,模棱两可的语法是被禁止的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)