"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué Python 3 da un error de sintaxis al utilizar argumentos de tupla anidados?

¿Por qué Python 3 da un error de sintaxis al utilizar argumentos de tupla anidados?

Publicado el 2024-11-10
Navegar:868

Why Does Python 3 Give a Syntax Error When Using Nested Tuple Arguments?

Argumentos anidados en Python 3

Al ejecutar código Python que incluye argumentos de tupla anidados como parámetros de función, es posible encontrar un error de sintaxis:

File "/usr/local/lib/python3.2/dist-packages/simpletriple.py", line 9
    def add(self, (sub, pred, obj)):
                  ^
SyntaxError: invalid syntax

Causas

En Python 3, se eliminó el descomprimido del parámetro tupla. Esto significa que las funciones ya no pueden aceptar tuplas como argumentos y descomprimirlas directamente en variables.

Solución: descomprimir manualmente

Para resolver el error de sintaxis, debe modificar la función para descomprimir manualmente la tupla en variables individuales. Aquí hay un ejemplo:

def add(self, sub_pred_obj): # Previous syntax: def add(self, (sub, pred, obj))
    sub, pred, obj = sub_pred_obj
    # ... rest of the function

Esta modificación descomprime la tupla sub_pred_obj en las variables individuales sub, pred y obj.

Nota adicional

Si la función es una función lambda, no es posible desembalarlo manualmente. En su lugar, considere pasar la tupla como un único parámetro y acceder a sus elementos mediante indexación:

lambda xy: (xy[1], xy[0]) # Instead of: lambda (x, y): (y, x)
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3