propias procedimientos por parametros parametro omision metodos lista funciones como comando argumento python dictionary argument-unpacking

procedimientos - lista de funciones de python



Python argumentos de palabras clave desempaquetar y devolver el diccionario (4)

Tengo una definición de función como la de abajo y estoy pasando argumentos de palabras clave. ¿Cómo puedo devolver un diccionario con el mismo nombre que los argumentos de palabras clave?

Manualmente puedo hacer:

def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None): return { ''first_name'': first_name, ''last_name'': last_name, ''birthday'': birthday, ''gender'': gender }

Pero no quiero hacer eso. ¿Hay alguna manera en que pueda hacer que esto funcione sin realmente escribir el dict?

def generate_student_dict(self, first_name=None, last_name=None, birthday=None, gender=None): return # Packed value from keyword argument.


Obtener argumentos de palabras clave en **kwargs

def generate_student_dict(self, **kwargs): # use it like # kwargs.get(''first_name'') # kwargs.get(''last_name'') # kwargs.get(''birthday'') # kwargs.get(''gender'') return kwargs


Puede utilizar la función locals() . locals() actualiza y devuelve un diccionario que representa la tabla de símbolos local actual. Las variables libres son devueltas por locals() cuando se llama en bloques de funciones, pero no en bloques de clases.


Si esa forma es adecuada para usted, use kwargs (consulte Entender kwargs en Python ) como se muestra en el siguiente fragmento de código:

def generate_student_dict(self, **kwargs): return kwargs

De lo contrario, puede crear una copia de params con built-in locals() al inicio de la función y devolver esa copia:

def generate_student_dict(first_name=None, last_name=None , birthday=None, gender =None): # It''s important to copy locals in first line of code (see @MuhammadTahir comment). args_passed = locals().copy() # some code return args_passed generate_student_dict()


Si no quieres pasar **kwargs , simplemente puedes devolver a los locals :

def generate_student_dict(first_name=None, last_name=None, birthday=None, gender=None): return locals()

Tenga en cuenta que desea eliminarse del resultado si se pasa como argumento.