En los últimos dos años, he estado usando Python como mi lenguaje de programación principal. Pensé que tal vez sea una buena razón para "profundizar" como lo hice en Preguntas difíciles de JavaScript. Algunas de las siguientes preguntas eran cuestiones que necesitaba abordar en mi trabajo actual, otras estaban inspiradas en la web.
Entonces, ¿estás listo para dejarte boquiabierto (por la pregunta de Python)?
¡Aviso 1!: Para cada pregunta, hay una respuesta con una explicación (enlace debajo de cada elemento).
¡Aviso 2!: Para cada pregunta, piense cuál será el resultado.
Pregunta 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
Ir a la respuesta 1
Pregunta 2
class Json:
def __init__(self, *args, **kwargs):
import json
def print_dict_as_json(self, obj):
print(json.dumps(obj))
example_json = Json()
example_json.print_dict_as_json({"a": "string"})
Ir a la respuesta 2
Pregunta 3
def myFun(arg1, arg3, **kwargs):
for key, value in kwargs.items():
print("%s == %s" % (key, value))
my_dict = {'arg1':1, 'arg2': 2}
myFun(**my_dict, arg3=3)
Ir a la respuesta 3
Pregunta 4
def add_to_all_1(arr):
for i in range(len(arr)):
arr[i] =1
def my_func():
arr = [1,2,3]
add_to_all_1(arr)
arr2 = arr
print(arr2)
my_func()
Ir a la respuesta 4
Si tú dijiste:
{"a": "string"}
lamentablemente estás equivocado, la respuesta es:
AttributeError: 'dict' object has no attribute 'a'
Si te gusto y viniste primero desde javascript, el diccionario de acceso (objeto en Javascript) no es por punto como en Javascript, puedes acceder solo por [], y dentro de la clave quieres establecer "a".
Volver a la pregunta 1
Si tú dijiste:
{"a": "string"}
Otra vez te equivocas, la respuesta es:
... NameError: name 'json' is not define
Es posible que conozcas las diferencias entre el alcance local y global en Python (si no, deberías leer esto: Python Scope). __init__ es una función , la importación se realiza dentro de un ámbito local, por lo que no sabe qué es json. Puedes solucionarlo importándolo globalmente de esta manera:
import json class Json: def print_dict_as_json(self, obj): print(json.dumps(obj)) example_json = Json() example_json.print_dict_as_json({"a": "string"})
O de forma más avanzada:
class Json: import json as json def print_dict_as_json(self, obj): print(self.json.dumps(obj)) example_json = Json() example_json.print_dict_as_json({"a": "string"})
Puedes ver cómo usar la importación dentro de la clase para obtener más detalles.
Volver a la pregunta 2
Si tú dijiste:
arg2 == 2
¡Tienes razón! En Python, tenemos 3 formas de pasar un argumento:
def myFun(arg1): print(arg1) myFun('arg1')
def myFun(*arg1): print(*arg1) my_tuple = ('arg1', 'arg2') myFun(my_tuple)
Volver a la pregunta 3
La respuesta es:
[2, 3, 4]
Para algunas personas que conocen los alcances y las asignaciones, puede parecer una pregunta bastante fácil. Para aquellos que no lo saben, Python guarda la memoria variable como referencia, por lo que en este caso, arr apuntará a una referencia en una memoria -> la función cambiará los valores (pero seguirá siendo la misma referencia) -> arr2 obtiene la dirección de referencia de arr pero después de que se modificaron los valores.
Volver a la pregunta 4
Gracias por leer este artículo. Espero que hayas disfrutado y aprendido cosas nuevas. Si tienes alguna pregunta o sugerencia, por favor deja un comentario.
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