"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 > ¿Cuándo utiliza Python llamada por referencia y llamada por referencia de objeto?

¿Cuándo utiliza Python llamada por referencia y llamada por referencia de objeto?

Publicado el 2024-11-08
Navegar:543

When Does Python Use Call by Reference and Call by Object Reference?

Llamada de funciones de Python por referencia (duplicado)

En muchos lenguajes de programación, los parámetros se pueden pasar por valor o por referencia utilizando palabras reservadas específicas . Sin embargo, en Python, cuando se pasa un parámetro a una función, nunca modifica el valor de la variable original en la función que llama.

Ejemplo 1: llamada por valor

k = 2

def foo(n):
    n *= n
    return n

j = foo(k)
print(j)  # 4
print(k)  # 2

Aquí, el valor de k permanece sin cambios después de llamar a la función foo porque Python pasa argumentos por valor.

Ejemplo 2: llamada por global

Para modificar la variable en la función de llamada, se puede utilizar la palabra clave global.

n = 0

def foo():
    global n
    n *= n
    return n

En este caso, la palabra clave global permite modificar n dentro de la función foo y su valor se actualizará en la función de llamada.

Pasar por referencia de objeto en Python

Python, sin embargo, no sigue estrictamente la llamada por valor o la llamada por referencia. En cambio, emplea un concepto llamado pasar por referencia de objeto.

En Python, las variables se refieren a objetos, no a los objetos en sí. Como tal, cuando se pasa una variable a una función, pasa una referencia al objeto, no al objeto en sí.

Por ejemplo:

def append_one(li):
    li.append(1)

x = [0]
append_one(x)
print(x)  # [0, 1]

En este código, la función append_one agrega 1 a la lista x. Dado que la lista se pasa por referencia de objeto, cualquier cambio realizado en la lista dentro de la función se reflejará en la función de llamada.

Pasar por referencia frente a pasar por referencia de objeto

  • Pasar por referencia: El cuadro de la variable original se pasa a la función llamada, lo que permite que cualquier cambio en el contenido de la variable se refleje en la llamada. function.
  • Pasar por referencia de objeto: Se pasa una referencia al cuadro del objeto original a la función llamada. Los cambios en el objeto se reflejan tanto en la función que llama como en la llamada, pero los cambios en la variable en sí (el cuadro) no.

En conclusión, Python sigue el paso por referencia de objeto, donde las variables se refieren a objetos más que los objetos mismos. Esto permite que las funciones modifiquen los objetos que se les pasan, pero los cambios en las referencias de las variables en sí no se propagan a la función que llama.

Declaración de liberación Este artículo se reimprime en: 1729140861 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Ú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