Idioma de Python para aplicar una función solo cuando el valor no es Ninguno

Una función está recibiendo una serie de valores que son todas cadenas que deben analizarse de varias formas, por ejemplo

vote_count = int(input_1) score = float(input_2) person = Person(input_3) 

Todo esto está bien, excepto que las entradas también pueden ser None y, en este caso, en lugar de analizar los valores, me gustaría terminar con None asignada al lado izquierdo. Esto se puede hacer con

 vote_count = int(input_1) if input_1 is not None else None ... 

pero esto parece mucho menos legible, especialmente con muchas líneas repetidas como esta. Estoy considerando definir una función que simplifique esto, algo como

 def whendefined(func, value): return func(value) if value is not None else None 

que podría ser utilizado como

 vote_count = whendefined(int, input_1) ... 

Mi pregunta es, ¿hay un idioma común para esto? Posiblemente usando funciones incorporadas de Python? Incluso si no, ¿hay un nombre comúnmente usado para una función como esta?

En otros idiomas, existe la opción Escribir , que es un poco diferente (resuelve el problema con un sistema de tipos), pero tiene la misma motivación (¿qué hacer con los nulos)?

En Python hay más de un enfoque en la detección de tiempo de ejecución de este tipo de cosas, por lo que puede envolver la función con una protección de detección de Ninguno (en lugar de los datos, que es lo que hace la Opción de tipos).

Podría escribir un decorador que solo ejecute una función si el argumento no es Ninguno:

 def option(function): def wrapper(*args, **kwargs): if len(args) > 0 and args[0] is not None: return function(*args, **kwargs) return wrapper 

Probablemente debería adaptar esa tercera línea para que sea más adecuada para el tipo de datos con los que está trabajando.

En uso:

 @option def optionprint(inp): return inp + "!!" >>> optionprint(None) # Nothing >>> optionprint("hello") 'hello!!' 

y con un valor de retorno

 @option def optioninc(input): return input + 1 >>> optioninc(None) >>> # Nothing >>> optioninc(100) 101 

o envolver una función de construcción de tipo

 >>> int_or_none = option(int) >>> int_or_none(None) # Nothing >>> int_or_none(12) 12 

Si puede tratar con seguridad los valores falsos (como 0 y la cadena vacía) como Ninguno, puede usar boolean y:

 vote_count = input_1 and int(input_1) 

Como parece que estás tomando cadenas para la entrada, esto podría funcionar; no se puede convertir una cadena vacía en un int o flotar (o persona) de todos modos. No es demasiado legible para algunos, aunque el lenguaje se usa comúnmente en Lua.