Categorías
Python

Integración API en Python – Parte 1

 

Tabla de Contenidos

  • lógica booleana
  • El pitón operadores booleanos
  • Cómo el Python o WorksUsing productor o con Boole ExpressionsUsing o Con Común ObjectsMixing Expresiones booleanas y ObjectsShort-Circuito EvaluationSection Crónica
  • Usar o Con Expresiones booleanas
  • Usar o con objetos comunes
  • Mezcla de Boole expresiones y objetos
  • corto-circuito de evaluación
  • Sección Resumen
  • booleanas Contextsif Statementswhile Loops
  • si las declaraciones
  • mientras Loops Valores
  • no booleano ContextsDefault para VariablesDefault retorno ValuesMutable defecto ArgumentsZero DivisionMultiple expresiones en lambda
  • valores por defecto para variables
  • retorno Valores por defecto de
  • mutables argumentos por omisión
  • cero División
  • múltiples expresiones lambda en
  • Conclusión
  • Uso o con Boo incline Expresiones
  • Usar o con objetos comunes
  • Mezcla de Boole expresiones y objetos
  • corto-circuito de evaluación
  • Sección Resumen
  • si las declaraciones
  • mientras que los valores Loops
  • valores predeterminados para las variables
  • de retorno predeterminado
  • mutables argumentos por omisión
  • División cero

  • múltiples expresiones lambda en

Hay tres operadores booleanos en Python: AND, OR y NOT. Con ellos, puede probar las condiciones y decidir qué ruta de ejecución de sus programas tomarán. En este tutorial, aprenderá acerca de la pitón o el operador y la forma de utilizarlo.

Al final de este tutorial, se le han aprendido:

  • Cómo Python o el operador trabaja
  • Cómo utilizar el pitón o el operador de Boole y no booleano contextos
  • ¿Qué tipo de problemas de programación que puede resolver mediante el uso de o en Python
  • Cómo leer y entender el código de otras personas mejor cuando usan algunas de las características especiales de la Python u operador

Cómo el pitón o el operador trabaja

Cómo utilizar el pitón o el operador de Boole y no booleano contextos de

¿Qué tipo de problemas de programación se puede resolver mediante el uso de o en Python

Cómo leer y comprender mejor el código de otras personas cuando se utilizan algunas de las características especiales del pitón o el operador

podrás aprender a utilizar el pitón o el operador mediante la construcción de algunos ejemplos prácticos. Incluso si usted realmente no utilizar todas las posibilidades que el Python o las ofertas del operador, el dominio que le permitirá escribir mejor código. Bono

gratuito: Haga clic aquí para obtener acceso a un capítulo de trucos Python: El libro que te muestra las mejores prácticas de Python con ejemplos sencillos puede aplicar instantáneamente a escribir código más bonito + Pythonic.

lógica booleana

George Boole (1815-1864) desarrolló lo que ahora se llama el álgebra de Boole , que es el fundamento de la lógica digital detrás de hardware y lenguajes de programación. álgebra de Boole

se construye alrededor del valor de verdad de expresiones y objetos (si son cierto o falsa ) y se basa en las operaciones booleanas AND, OR y NOT. Estas operaciones se realizan a través de operadores lógicos o booleanos que permiten crear expresiones de Boole , que son expresiones que se evalúan cierto o falsa .

Con la ayuda de la lógica booleana, se puede evaluar las condiciones y decidir qué operaciones de sus programas se ejecutarán, en función del valor de verdad de esas condiciones. Esta es una importante piedra angular en la programación y le proporciona las herramientas para decidir el flujo de ejecución de sus programas.

vamos a echar un vistazo a algunos de los conceptos básicos relacionados con la lógica booleana en Python:

  • booleano es un tipo de valor que puede ser verdadera o falsa. En Python, del tipo booleano es bool, que es un subtipo de int. Los valores
  • booleanas son los valores verdadero o falso (con mayúscula T y F) en Python. variables
  • booleano es una variable que puede ser verdadera o falsa. Las variables booleanas se utilizan comúnmente como banderas para indicar si existen condiciones específicas. expresión
  • booleano es una expresión que devuelve verdadero o falso.
  • contexto

  • de Boole puede ser si las condiciones y bucles while, donde espera una expresión de Python para evaluar en un valor booleano. Se puede utilizar prácticamente cualquier expresión o un objeto en un contexto booleano, y Python tratará de determinar su valor de verdad.
  • operandos son subexpresiones u objetos que participan en una expresión (Boolean o no) y conectados por un operador.
  • Boolean o operadores lógicos son Y (AND lógico o conjunción), OR (O lógico o disyunción), y NOT (NO lógico o negación). Las palabras clave AND, OR, y no son los operadores de Python para estas operaciones.

booleana es el tipo de valor que puede ser verdadera o falsa. En Python, el tipo Boolean es bool, que es un subtipo de int.

Boolean valora son los valores T rue o F alse (con un capital T y F ) en Python. variables

Un booleana es una variable que puede ser verdadera o falsa. variables Boolean s se utilizan comúnmente como banderas para indicar si existen condiciones específicas. Una expresión

booleana es una expresión que devuelve Verdadero o Falso.

contexto

booleana puede ser si las condiciones y bucles while, donde espera una expresión de Python para evaluar en un valor booleano. Se puede utilizar prácticamente cualquier expresión o un objeto en un contexto booleano , y Python tratará de determinar su valor de verdad.

Operandos son los subexpresiones u objetos que participan en una expresión (Boolean o no) y conectados por un operador.

Boolean o operat lógico o s son Y (AND lógico o conjunción), OR (O lógico o disyunción), y NOT (NO lógico o negación). El KEYW o DS y , o , y no son la Python operat o s f o estas operaciones.

Ahora que tiene un mejor contexto en la lógica booleana, vamos a proceder con algunos temas más específico de Python.

El pitón operadores booleanos

Python tiene tres operadores booleanos que se escriben como claras palabras en inglés:

Estos operadores conectan expresiones booleanas (y objetos) para crear expresiones booleanas compuestas. operadores booleanos

El Python siempre tienen dos expresiones booleanas o dos objetos o una combinación de ellos, por lo que son considerados operadores binarios .

En este tutorial, se le cubre el pitón o el operador, que es el operador que implementa la operación lógica OR en Python. Vas a aprender cómo funciona y cómo usarlo.

Cómo Python o el operador trabaja

Con el operador booleano O, puede conectar dos expresiones booleanas en una expresión compuesta. Al menos uno subexpresiones debe ser cierto para la expresión compuesto que se considera verdadero, ya que no importa cuál. Si las dos subexpresiones son falsas, entonces la expresión es falsa.

Esta es la lógica general detrás del operador OR. Sin embargo, el pitón o el operador hace todo esto y más, como se verá en las siguientes secciones.

Usar o expresiones de Boole Con

que necesitará dos subexpresiones para crear una expresión booleana utilizando el operador de Python o como un conector. La sintaxis básica de una expresión booleana con o es el siguiente:

# Syntax for Boolean expression with or in Python
exp1 or exp2

Si al menos una de las subexpresiones (exp1 o EXP2) se evalúa como TRUE, entonces la expresión se considera que es True. Si las dos subexpresiones resultado false, entonces la expresión es falsa. Esta definición se llama incluido o , ya que permite ambas posibilidades, así como tampoco.

He aquí un resumen de la Python o el comportamiento del operador:

Tabla 1. Python operador lógico OR: Tabla de verdad

Esta tabla resume el valor de verdad que resulta de una expresión booleana como exp1 o exp2 dependiendo de la valores de verdad de sus subexpresiones. de

Let ilustran los valores de verdad resultantes se muestran en la Tabla 1 codificando algunos ejemplos prácticos:

>>> exp1 = 1 == 2
>>> exp1
False
>>> exp2 = 7 > 3
>>> exp2
True
>>> exp1 or exp2 # Return True, because exp2 is True
True
>>> exp2 or exp1 # Also returns True
True
>>> exp3 = 3 < 1 >>> exp1 or exp3 # Return False, because both are False
False

En los ejemplos anteriores, cada vez que una sub-expresión se evalúa como True, el resultado global es verdadera. Por otra parte, si las dos subexpresiones se evalúan como False, entonces el resultado global también es falso.

Usar o con objetos comunes

En general, los operandos de una expresión que implican una operación OR debe tener valores booleanos como se muestra en la Tabla 1 y devolver un valor de verdad como resultado. Cuando se trata de objetos, Python no es muy estricta sobre eso e internamente implementa un conjunto de reglas para decidir si un objeto se considera verdadero o falso:

De manera predeterminada, un objeto se considera cierto a menos que sus define la clase sea un __bool __ () método que devuelve un método __len __ () que devuelve cero Falso o, cuando se le llama con el objeto. Aquí están la mayoría de los incorporados en objetos considerados falsos: constantes

  • definidas ser falsa: Ninguno y Falso.
  • cero de cualquier tipo numérico: 0, 0,0, 0j, decimal (0), la fracción (0, 1) secuencias y colecciones vacías
  • : », (), [], {}, set (), gama ( 0)

(Fuente)

Si los operandos que intervienen en una operación o son objetos en lugar de expresiones booleanas, entonces el pitón o operador devuelve un objeto verdadero o falso, no los valores verdadero o falso como se podía esperar. El valor de verdad de este objeto se determina de acuerdo con las reglas que hemos visto antes.

Esto significa que Python no obliga el resultado de una o funcionamiento a un objeto bool. Si está probando el uso de dos objetos o en Python, entonces el operador devolverá el primer objeto que se considera verdadero o al último objeto de la expresión, independientemente de su valor de verdad:

>>> 2 or 3
2
>>> 5 or 0.0
5
>>> [] or 3
3
>>> 0 or {}
{}

En los dos primeros ejemplos, los primeros operandos (2 y 5) son verdaderas (distinto de cero), por lo que el pitón o el operador devuelve siempre la primera.

En los dos últimos ejemplos, el operando de la izquierda es falsa (un objeto vacío). El Python u operador evalúa los dos operandos y devuelve el objeto de la derecha, que puede evaluarse como verdadera o falsa.

Nota: Si realmente necesita para obtener uno de los valores Verdadero o Falso en una expresión booleana que implican objetos, entonces usted podría utilizar bool (obj), que es una función incorporada que devuelve true o false dependiendo de la valor de verdad de obj.

Puede resumir el comportamiento mostrado en el código anterior de la siguiente manera:

Tabla 2. Python o el comportamiento del operador cuando se prueba objetos en lugar de Boole Expresiones

En resumen, el operador devuelve Python o el primer objeto que se considera verdadero o al último objeto de la expresión, independientemente de su valor de verdad.

Puede generalizar este comportamiento por el encadenamiento de varias operaciones en una sola expresión como esta:

a or b or c or d

En este ejemplo, el operador devuelve Python o el verdadero primer operando se encuentra, o el último. Esta es la regla de oro para memorizar cómo o trabajos en Python.

Mezcla de Boole expresiones y objetos

También se pueden combinar expresiones booleanas y objetos Python común en una u operación. En este caso, el pitón o el operador seguirá devolviendo el primer operando verdadero o el último operando, pero el valor devuelto puede ser verdadero o falso o el objeto que se está probando:

Tabla 3. Python o del operador comportamiento cuando se prueba objetos y verificar de Boole Expresiones

Let cómo funciona este mecanismo en algunos ejemplos: se evaluó

>>> 2 < 4 or 2 # Case 1 True >>> 2 < 4 or [] # Case 2 True >>> 5 > 10 or [] # Case 3
[]
>>> 5 > 10 or 4 # Case 4
4

En Caso 1 y Caso 2 , la subexpresión 2 <4 en True y el valor devuelto era cierto. Por otro lado, en Caso 3 y Caso 4 , la subexpresión 5 > 10 se evaluó en False, por lo que fue devuelto el último operando, y tienes una lista vacía ([]) y un entero (4) en vez de Verdadero o Falso.

A modo de ejercicio, se podría tratar de extender Tabla 3 invirtiendo el orden de las expresiones de la tercera columna, es decir, usar obj o EXP y tratar de predecir los resultados.

corto-circuito de evaluación

Python a veces puede determinar el valor de verdad de una expresión booleana antes de que haya evaluado todas las subexpresiones y objetos involucrados. El pitón o el operador, por ejemplo, se detiene la evaluación de los operandos tan pronto como se encuentra algo que se considera verdadero. Por ejemplo, la siguiente expresión es siempre verdad:

>>> True or 4 < 3 True

Si el primer operando en una o evalúa de expresión a verdadero, independientemente del valor del segundo operando (4 <3 es falsa), entonces la expresión se considera para ser verdad, y el segundo operando no se evalúa. Esto se llama cortocircuito (perezoso) Evaluación . de

Let consideran otro ejemplo:

>>> def true_func():
... print('Running true_func()')
... return True
...
>>> def false_func():
... print('Running false_func()')
... return False
...
>>> true_func() or false_func() # Case 1
Running true_func()
True
>>> false_func() or true_func() # Case 2
Running false_func()
Running true_func()
True
>>> false_func() or false_func() # Case 3
Running false_func()
Running false_func()
False
>>> true_func() or true_func() # Case 4
Running true_func()
True

En Caso 1 , Python evalúa true_func (). Ya que devuelve cierto que el siguiente operando (false_func ()) no se evalúa. Tenga en cuenta que la frase Ejecución false_func () no se imprime. Por último, toda la expresión se considera verdadera.

Caso 2 evalúa ambas funciones, debido a que el primer operando (false_func ()) es falso. A continuación, el operador devuelve el segundo resultado, es decir, el valor devuelto por true_func (), que es True.

Caso 3 evalúa ambas funciones, debido a que tanto Falso retorno. La operación devuelve el valor de retorno de la última función, que es falso, y la expresión se considera que es falso.

En Caso 4 , Python sólo evalúa la primera función, lo cual es cierto, y la expresión es verdadera.

En cortocircuito (perezoso) Evaluación , el segundo operando en una expresión booleana no se evalúa si el valor de la expresión puede determinarse a partir del primer operando solo. Python (al igual que otros idiomas) para superar esta segunda evaluación en favor del rendimiento, ya que la evaluación del segundo operando sería un gasto innecesario de tiempo de CPU.

Por último, cuando se trata de rendimiento cuando se está utilizando el pitón o el operador, considere lo siguiente:

  • Las expresiones de la parte derecha del operador Python o podrían llamar a las funciones que realizan un trabajo sustancial o importante, o tiene lado efectos que no sucederán si la regla de cortocircuito entra en vigor.
  • La condición que es más probable que sea cierto podría ser la más a la izquierda condición. Este enfoque puede reducir el tiempo de ejecución de sus programas, porque de esta manera Python es capaz de determinar si la condición es verdadera simplemente mediante la evaluación del primer operando.

Las expresiones de la parte derecha del operador Python o podrían llamar a las funciones que llevan a cabo un trabajo sustancial o importante, o tienen efectos secundarios que no sucederá si la regla de cortocircuito entre en vigor.

La condición que es más probable que sea cierto podría ser la más a la izquierda condición. Este enfoque puede reducir el tiempo de ejecución de sus programas, porque de esta manera Python es capaz de determinar si la condición es verdadera simplemente mediante la evaluación del primer operando.

Sección

Crónica

Usted ha aprendido cómo funciona el pitón o el operador ha visto algunas de sus principales características y comportamientos. Ahora ya sabe lo suficiente como para seguir subiendo de nivel, aprendiendo cómo utilizar el operador en la solución de problemas del mundo real.

Antes de eso, vamos a recapitular algunos puntos importantes sobre o en Python:

  • satisface las reglas generales que un operador booleano OR deben seguir. Si uno o los dos sub-expresión booleana es verdadera, entonces el resultado es verdadero. De lo contrario, si ambas subexpresiones son falsas, entonces el resultado es falso.
  • devuelve objetos en lugar de los valores Verdadero o Falso cuando se pone a prueba los objetos de Python. Esto significa que la expresión x o vuelve Y X si se evalúa a verdadero, y en caso contrario devuelve y (independientemente de su valor de verdad).
  • De ello se deduce un conjunto predefinido de reglas internas de Python para determinar el valor de verdad de un objeto.
  • Se detiene operandos evalúan en cuanto se encuentra algo que se considera verdadero. Esto se conoce como cortocircuito o la evaluación perezosa.

satisface las reglas generales que un operador booleano OR deben seguir. Si uno o los dos sub-expresión booleana es verdadera, entonces el resultado es verdadero. De lo contrario, si ambas subexpresiones son falsas, entonces el resultado es falso.

devuelve objetos en lugar de los valores Verdadero o Falso cuando se pone a prueba los objetos de Python. Esto significa que la expresión x o vuelve Y X si se evalúa a verdadero, y en caso contrario devuelve y (independientemente de su valor de verdad).

De ello se deduce un conjunto predefinido de reglas internas de Python para determinar el valor de verdad de un objeto.

Se detiene operandos evalúan en cuanto se encuentra algo que se considera verdadero. Esto se conoce como cortocircuito o la evaluación perezosa.

Ahora es el momento de aprender dónde y cómo se puede utilizar este operador con la ayuda de algunos ejemplos.

booleana Contextos

En esta sección, veremos algunos ejemplos prácticos de cómo utilizar el pitón o el operador, y aprender cómo tomar ventaja de su comportamiento un tanto inusual para escribir mejor código Python.

Hay dos situaciones principales donde se puede decir que está trabajando en un contexto booleano en Python:

Con una sentencia if, puede decidir ruta de ejecución de sus programas en función del valor de verdad de algunas condiciones.

Por otro lado, mientras que los bucles permiten repetir un fragmento de código, siempre y cuando una determinada condición sigue siendo cierto.

Estas dos estructuras son parte de lo que se dice estados de flujo de control . Ayudan a decidir ruta de ejecución de sus programas.

Puede utilizar el pitón o el operador para crear expresiones booleanas adecuados para su uso tanto con if y while, como se verá en las próximas dos secciones.

si digamos declaraciones

Vamos desea asegurarse de que una de las dos condiciones (o ambos) es verdadera antes de elegir un certainpath de ejecución. En este caso, se puede utilizar el operador de Python o para conectar las condiciones en una expresión, y utilizar esa expresión en una sentencia if.

Supongamos que necesita para obtener una confirmación por parte del usuario para ejecutar algunas acciones en función de la respuesta del usuario:

>>> def answer():
... ans = input('Do you...? (yes
o): ')
... if ans.lower() == 'yes' or ans.lower() == 'y':
... print(f'Positive answer: {ans}')
... elif ans.lower() == 'no' or ans.lower() == 'n':
... print(f'Negative answer: {ans}')
...
>>> answer()
Do you...? (yes
o): y
Positive answer: y
>>> answer()
Do you...? (yes
o): n
Negative answer: n

Aquí, se obtiene la entrada del usuario y asignarla a la American National Standard. A continuación, la sentencia if comienza a comprobar las condiciones de izquierda a derecha. Si al menos uno de ellos se evalúa como true, entonces se ejecuta el bloque de código si. La declaración elif hace lo mismo.

En la primera llamada a respuesta (), la entrada del usuario era Y, que satisface la primera condición, y se ejecuta el bloque de código si. En la segunda llamada, la entrada del usuario (n) satisface la segunda condición, por lo que el elif RAN bloque de código. Si la entrada del usuario no satisface ninguna condición, entonces no se ejecuta ningún bloque de código.

Otro ejemplo podría ser cuando se está tratando de determinar si un número está fuera de un rango. En este caso, también es posible utilizar el pitón o el operador. El siguiente código comprueba si x está fuera del rango de 20 a 40:

>>> def my_range(x):
... if x < 20 or x > 40:
... print('Outside')
... else:
... print('Inside')
...
>>> my_range(25)
Inside
>>> my_range(18)
Outside

Cuando se llama a my_range () con x = 25, la sentencia if prueba 25 <20, lo cual es falso. Entonces se pone a prueba x > 40, que también es falso. El resultado final es falso, por lo que se ejecuta el bloque más.

Por otro lado, 18 <20 se evalúa en True. A continuación, el pitón o el operador hace que la evaluación de cortocircuito, y la condición se considera para ser verdad. El bloque principal se ejecuta, y el valor está fuera del intervalo.

mientras Loops

mientras que los bucles son otro ejemplo de contexto booleano donde se puede utilizar el pitón o el operador. Al utilizar o en el encabezado del bucle, puede probar varias condiciones y ejecutar el cuerpo hasta que todas las condiciones se evalúan como falso.

Supongamos que necesita para medir la temperatura de funcionamiento de algunos equipos industriales hasta que se mete en un rango de 100 ° F a 140 ° F. Para ello, puede utilizar un bucle while:

from time import sleep

temp = measure_temp() # Initial temperature measurement

while temp < 100 or temp > 140:
print('Temperature outside the recommended range')
print('New Temperature measure in 30 seconds')
sleep(30)
print('Measuring Temperature...')
temp = measure_temp()
print(f'The new Temperature is {temp} ºF')

Este es un ejemplo de juguete casi en pseudo código, pero ilustra la idea. Aquí, el bucle mientras se está ejecutando hasta que la temperatura es entre 100 ºF y 140 ºF. Si el valor de la temperatura está fuera del rango, entonces el cuerpo del bucle se ejecuta, y se le mide la temperatura de nuevo. Una vez measure_temp () devuelve un valor entre 100 ºF y 140 ºF, los acabados de bucle. La medición de temperatura se toma cada 30 segundos mediante el uso de sueño (30).

Nota: En el ejemplo de código anterior, se utiliza F-cadenas de Python para el formato de cadenas, si quieres profundizar más en f-cuerdas, a continuación, puede echar un vistazo a f-Secuencias de Python 3: El formato de cadenas Un mejorada sintaxis (Guía).

no booleano Contextos

Usted puede tomar ventaja de las características especiales del pitón o el operador de contextos de Boole. La regla de oro sigue siendo que el resultado de sus expresiones booleanas es el primer operando verdadero o el último en la línea.

en cuenta que los operadores lógicos (o incluye) son evaluados antes de que el operador de asignación (=), por lo que puede asignar el resultado de una expresión booleana para una variable de la misma manera que se hace con una expresión común:

>>> a = 1
>>> b = 2
>>> var1 = a or b
>>> var1
1
>>> a = None
>>> b = 2
>>> var2 = a or b
>>> var2
2
>>> a = []
>>> b = {}
>>> var3 = a or b
>>> var3
{}

Aquí, el operador or funciona como se espera, volviendo el primer operando verdadero o el último operando tanto si se evalúan como false.

Usted puede tomar ventaja de este comportamiento un tanto especial o en Python para implementar una solución Pythonic a algunos problemas de programación bastante comunes. Vamos a echar un vistazo a algunos ejemplos del mundo real.

valores por defecto para variables

manera Uno común usar el pitón o el operador es seleccionar un objeto a partir de un conjunto de objetos de acuerdo a su valor de verdad. Usted puede hacer esto mediante el uso de una instrucción de asignación:

>>> x = a or b or None

Aquí, asigna ax el primer verdadero objeto de la expresión. Si todos los objetos (A y B en este caso) son objetos falsos, entonces el Python o vuelve operador Ninguna, que es el último operando. Esto funciona porque el operador o vuelve uno de sus operandos en función de su valor de verdad.

También puede utilizar esta función para asignar un valor por defecto a las variables. Los siguientes ejemplos de series X para un si a es verdadero, y a los valores de otro modo:

>>> x = a or default

En el código anterior, se asigna un ax sólo si una se evalúa a verdadero. De lo contrario, x se le asigna por defecto.

Valores de retorno por defecto

se puede manipular el valor de retorno de algunas funciones incorporadas en el tiempo de atención. Las funciones como máximo () y min (), que tienen un iterable como un argumento y devuelven un solo valor, podría ser su candidato perfecto para este tipo de truco.

Si usted proporciona una iterables vacío a max () o cant (), entonces obtendrá un ValueError. Sin embargo, se puede modificar este comportamiento utilizando el pitón o el operador. Vamos a echar un vistazo al código siguiente:

>>> lst = [] # Empty list to test max() and min()
>>> max(lst)
Traceback (most recent call last):
File "", line 1, in
max(lst)
ValueError: max() arg is an empty sequence
>>> min(lst)
Traceback (most recent call last):
File "", line 1, in
min(lst)
ValueError: min() arg is an empty sequence
>>> # Use Python or operator to modify this behavior
>>> max(lst or [0]) # Return 0
0
>>> min(lst or [0]) # Return 0
0

El comportamiento predeterminado de máx () y min () es elevar un ValueError si los llama con un iterable vacía. Sin embargo, mediante el uso de la pitón o el operador, proporciona un valor de retorno por defecto para estas funciones y anular su comportamiento por defecto.

Nota: En el ejemplo de código anterior, que vio cómo Python lanza excepciones cuando se producen algunos problemas. Si desea saber más acerca de las excepciones en Python, a continuación, puede echar un vistazo a las excepciones Introducción Python.

mutables argumentos por omisión

Un problema común principiante Python cara programadores es tratar de utilizar los objetos mutables como argumentos por defecto a las funciones.

mutable valores de los argumentos por defecto pueden retener estado entre las llamadas. Esto es a menudo inesperado. Esto ocurre porque los valores por defecto de los argumentos se evalúan y se guardan sólo una vez, es decir, cuando se ejecuta la instrucción DEF, no cada vez que la función resultante se llama. Es por eso que hay que tener cuidado acerca de cómo cambiar los valores predeterminados mutables dentro de funciones.

Consideremos el siguiente ejemplo:

>>> def mutable_default(lst=[]): # Try to use a mutable value as default
... lst.append(1) # Change same object each time
... print(lst)
...
>>> mutable_default(lst=[3, 2]) # Default not used
[3, 2, 1]
>>> mutable_default() # Default used
[1]
>>> mutable_default() # Default grows on each call
[1, 1]
>>> mutable_default()
[1, 1, 1]

Aquí, cada llamada a mutable_default () añade 1 al final de lst, porque lst contiene una referencia al mismo objeto (el valor predeterminado []). Usted no consigue una nueva lista cada vez que la función se llama como era de esperar.

Si ese no es el comportamiento que desea, a continuación, la solución tradicional (y más seguro) es mover el defecto en el cuerpo de la función:

>>> def mutable_default(lst=None): # Use None as formal default
... if lst is None:
... lst = [] # Default used? Then lst gets a new empty list.
... lst.append(1)
... print(lst)
...
>>> mutable_default(lst=[3, 2]) # Default not used
[3, 2, 1]
>>> mutable_default() # Default used
[1]
>>> mutable_default()
[1]

Con esta aplicación, usted está asegurando que LST se establece en una lista vacía cada vez se llama a mutable_default () sin argumentos, basándose en el valor por defecto para LST.

La sentencia if en este ejemplo casi podría sustituirse por la asignación lst = lst o []. De esta manera, si no hay argumento se pasa a la función, entonces sería LST defecto en Ninguno y el pitón o el operador devolvería la lista vacía a la derecha:

>>> def mutable_default(lst=None): # Use None as formal default
... lst = lst or [] # Default used? Then lst gets an empty list.
... lst.append(1)
... print(lst)
...
>>> mutable_default(lst=[3, 2]) # Default not used
[3, 2, 1]
>>> mutable_default() # Default used
[1]
>>> mutable_default()
[1]

Sin embargo, esto no es exactamente lo mismo. Por ejemplo, si una lista vacía se pasa, entonces el o la operación causaría la función para modificar e imprimir una lista de nueva creación, en lugar de modificar e imprimir el pasado en la lista originalmente como el caso de la versión haría.

Si usted es bastante seguro de que sólo se va a utilizar objetos de la lista no vacía, entonces usted puede utilizar este enfoque. De lo contrario, se adhieren a la versión si. división

Cero División

cero puede ser un problema común cuando se trata con cálculos numéricos. Para evitar este problema, lo más probable es que se acaba de comprobar si el denominador es igual a 0 o no mediante el uso de una sentencia if. La toma del

dejar que un vistazo a un ejemplo:

>>> def divide(a, b):
... if not b == 0:
... return a / b
...
>>> divide(15, 3)
5.0
>>> divide(0, 3)
0.0
>>> divide(15, 0)

Aquí, probó si el denominador (b) no es igual a 0, y luego se devuelve el resultado de la operación de división. Si b == 0 se evalúa como True, y luego dividir () implícitamente devuelve None. Vamos a ver cómo conseguir un resultado similar, pero esta vez utilizando el pitón o el operador:

>>> def divide(a, b):
... return b == 0 or a / b
...
>>> divide(15, 3)
5.0
>>> divide(0, 3)
0.0
>>> divide(15, 0)
True

En este caso, el pitón o el operador evalúa la primera subexpresión (b == 0). Sólo si este subexpresión es Falso, se evalúa la segunda subexpresión (a / b), y el resultado final será la división de a y b.

La diferencia con el ejemplo anterior es que, si b == 0 se evalúa en True, a continuación, dividir () devuelve verdadero en lugar de la implícita Ninguno.

múltiples expresiones lambda en

Python proporciona expresiones lambda, que le permiten crear funciones anónimas simples. Los parámetros de expresión lambda: la expresión se obtiene un objeto de función. Este tipo de función puede ser útil si se quiere definir devolución de llamada simple y funciones de las teclas.

El patrón más común para que usted escriba una función lambda es utilizar una sola expresión como valor de retorno. lambda

>>> lambda_func = lambda hello, world: print(hello, end=' ') or print(world)
>>> lambda_func('Hello', 'World!')
Hello World!

Con este ejemplo, que ha obligado a ejecutar dos expresiones (impresión (hola, final =' ') y de impresión (mundial): Sin embargo, puede cambiar esta situación y dejar lambda ejecutar varias expresiones utilizando el pitón o el operador ). Pero, ¿cómo funciona este código? Bueno, aquí lambda dirige una expresión booleana, donde se ejecutan dos funciones. Cuando

o evalúa la primera función, recibe Nada, que es el valor de retorno implícito para la impresión (). Dado que ninguno se considera que es falsa, o continúa para evaluar su segundo operando, y finalmente lo devuelve como resultado de la expresión booleana.

En este caso, el valor devuelto por la expresión booleana es también el valor devuelto por lambda:

>>> result = lambda_func('Hello', 'World!')
Hello World!
>>> print(result)
None

Aquí, resultado se mantiene una referencia al valor devuelto por lambda, que es el mismo valor devuelto por la expresión booleana.

Conclusión

Ahora ya sabe cómo el pitón o el operador de obras, así como la manera de utilizarlo para resolver algunos problemas comunes de programación en Python.

Ahora que ya conoce los conceptos básicos del pitón o el operador, usted será capaz de:

  • Uso del pitón o el operador de Boole y contextos no booleanas
  • resolver varios tipos de problemas de programación utilizando efectivamente el Python o operador
  • escribir mejor y más código Pythonic mediante el aprovechamiento de las características un tanto especiales de o en Python
  • Leer y entender mejor el código de otras personas cuando hacen uso del pitón o el operador

uso del pitón o el operador de Boole y no booleano contextos

resolver varios tipos de problemas de programación utilizando efectivamente el pitón o el operador

escribir mejor y más código Pythonic mediante el aprovechamiento de las características un tanto especiales de o en Python

Leer y entender mejor el código de otras personas cuando se hacer uso de la Python u operador

Además, hemos aprendido un poco acerca de la lógica booleana, como hemos ll como algunos de sus principales conceptos en Python.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *