我们从Python开源项目中,提取了以下1个代码示例,用于说明如何使用_ast.Add()。
def optimize_binop(self, node): """Optimize BinOps with string Const nodes on the lhs. This fixes an infinite recursion crash, where multiple strings are joined using the addition operator. With a sufficient number of such strings, astroid will fail with a maximum recursion limit exceeded. The function will return a Const node with all the strings already joined. Return ``None`` if no AST node can be obtained through optimization. """ ast_nodes = [] current = node while isinstance(current, _ast.BinOp): # lhs must be a BinOp with the addition operand. if not isinstance(current.left, _ast.BinOp): return if (not isinstance(current.left.op, _ast.Add) or not isinstance(current.op, _ast.Add)): return # rhs must a str / bytes. if not isinstance(current.right, _TYPES): return ast_nodes.append(current.right.s) current = current.left if (isinstance(current, _ast.BinOp) and isinstance(current.left, _TYPES) and isinstance(current.right, _TYPES)): # Stop early if we are at the last BinOp in # the operation ast_nodes.append(current.right.s) ast_nodes.append(current.left.s) break if not ast_nodes: return # If we have inconsistent types, bail out. known = type(ast_nodes[0]) if any(type(element) is not known for element in ast_nodes[1:]): return value = known().join(reversed(ast_nodes)) newnode = nodes.Const(value) return newnode