Pitón

Pasar por referencia vs. Valor en Python

Pasar por referencia vs. Valor en Python
Después de conocer Python, puede encontrar instancias en las que las funciones no alteran los argumentos en un lugar como anticiparía, particularmente si está familiarizado con muchos otros lenguajes informáticos. Muchos lenguajes usan argumentos de método como referencias, definidos como pasar por Referencia a las variables actuales. Si es un desarrollador avanzado de Python que quiere comprender la forma particular de Python de tratar los argumentos del método, entonces esta guía es realmente para usted.

Python admite pasar por referencia de objeto

El paso por referencia y el paso por valor son sin lugar a dudas las dos formas más reconocidas y fácilmente comprensibles de pasar parámetros entre lenguajes de programación. Python es, lamentablemente, 'pasar-por-objeto-referencia', ni "Pasar por valor" ni "Pasar por referencia", a menudo denominado como "Llamada por referencia de objeto", así como.”Es útil mirar más de cerca el concepto en sí dividiéndolo en segmentos mientras te sumerges en los detalles técnicos de pasar por Referencia:

Aprobar: esto significa proporcionar un método con un argumento.

Por referencia: esto significa que el argumento que pasa al método se refiere a una variable que ahora reside en el almacenamiento en lugar de una réplica diferente de esa variable.

A medida que asigna al método una referencia a una variable definida, la variable a la que corresponde se verá influenciada explícitamente por todas las operaciones en esta Referencia. Ahora consideremos un ejemplo de cómo, en la práctica, esto funciona. En este ejemplo, hemos definido una variable 'arg ' tener un valor de 4. A lo largo de este escenario, la variable 'arg ' no fue modificado en su lugar. Python parece manejar su argumento proporcionado en lugar de una referencia a una variable presente como un valor autónomo.

¿Significaría esto que en lugar de por referencia, Python mueve argumentos por valor?? Python mueve los argumentos a través de la asignación, por lo que ni por referencia ni con valor. La lógica de esto es doble:

Actualmente, el parámetro que pasa es un puntero a un objeto. Ciertos tipos de datos son mutables y algunos no lo son.

Si trasladamos un objeto mutable a una función, la función adquiere una referencia al mismo objeto para que puedas mutarlo todo a satisfacción de tu alma; sin embargo, el alcance externo no sabría nada antes de volver a unirse a la Referencia en la función. Una vez que haya terminado, la referencia externa solo apuntará al objeto real. Si mueve un objeto inmutable a una función, la referencia externa no siempre se puede volver a unir y no puede simplemente mutar el objeto. Para hacer las cosas mucho más sencillas, comprendamos una por una.

Pasar por referencia

En primer lugar, debe comprender que la variable 'mylist' en sí misma no es una lista, sino que se refiere a una lista que tiene valores. Puede llamar a la variable 'mylist' un contenedor que tiene valores dentro de él. Los valores de la lista son objetos. La variable 'mylist' se ha entregado directamente a la función con su contenido.

Tanto "lista" como "mi lista" parecen ser la misma variable de almacenamiento en el ejemplo de código a continuación y, por lo tanto, se aplican al mismo objeto de almacenamiento. Por eso, en la salida, imprime 'Saeed.'

Cualquier acción realizada en la variable o entidad se reflejará inmediatamente en el método de la persona que llama. El método puede modificar completamente el valor de la variable y apuntar a un objeto completamente distinto. Como puede ver en la función 'set_list', cambiamos el contenido de la lista e imprimimos una lista completamente nueva con el elemento 'Aqsa.'Esto se debe a que devolvimos la lista modificada y la imprimimos en la misma línea que la persona que llama.

El método también puede reasignar los elementos de la variable para obtener el mismo resultado que se muestra a continuación. Puede ver que hemos agregado un nuevo valor a la lista y el cambio se ha reflejado. Hemos agregado una cadena única a una lista y se la devolvimos a la persona que llama. Para concluir, el método y la persona que llama han estado usando la misma variable y objeto a lo largo de la relación de paso.

Pasar por valor

A través del paso por valor, el método se suministra con un duplicado del objeto de argumento que el llamador le asigna. Esto asegura que el elemento original permanezca sin cambios y que todas las modificaciones realizadas se conserven en ubicaciones de memoria separadas en una réplica del mismo objeto.

Es igualmente válido con cualquier operación ejecutada en una variable o la entidad por el método. Los duplicados de variables y objetos en el alcance del método de llamada están completamente separados para resumirlos.

Pasar objeto por referencia

A lo largo de esta situación, dado que Python es distinto, los métodos de Python obtienen una referencia de objeto muy similar en el almacenamiento a la que se refiere la persona que llama. Por el contrario, la técnica no obtiene la variable 'mylist' (el contenedor). El método de llamada almacena el mismo objeto; el método genera el contenedor de uno y genera un índice completamente nuevo para el suyo, al igual que en el paso por valor.

La persona que llama y el método hablan del mismo objeto en el almacenamiento, pero cuando el método adjunto aplica un elemento externo a una lista, la entidad de la persona que llama se modifica. Tienen varias etiquetas, pero son las mismas cosas. Ambas variables tienen un objeto muy similar. Ese es el sentido detrás de su relación con el movimiento del objeto. En el almacenamiento, el método y la persona que llama usan un objeto similar pero los atrapan a través de múltiples variables. La variable de llamada (el contenedor) no será cambiada por ninguna modificación realizada a la variable de método (el contenedor); solo se modifican los datos o el contenido.

Conclusión

Python opera independientemente de los lenguajes que aceptan el movimiento por referencia o valor de argumentos. Los argumentos del método son variables locales que se han asignado a cada valor transferido al método. Pero eso aún no le impide obtener los mismos resultados que encontraría en otros idiomas mientras mueve argumentos por proxy.

Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...
Revisión del mouse inalámbrico Microsoft Sculpt Touch
Recientemente leí sobre el Microsoft Sculpt Touch mouse inalámbrico y decidí comprarlo. Después de usarlo por un tiempo, decidí compartir mi experienc...
Trackpad en pantalla y puntero del mouse AppyMouse para tabletas Windows
Los usuarios de tabletas a menudo pierden el puntero del mouse, especialmente cuando son habituales para usar las computadoras portátiles. Los teléfon...