Au cours des deux dernières années, j'ai utilisé Python comme langage de programmation principal. J'ai pensé que c'était peut-être une bonne raison d'aller plus loin, comme je l'ai fait dans Tricky JavaScript Questions. Certaines des questions suivantes concernaient des problèmes que je devais résoudre dans le cadre de mon travail actuel, d'autres étaient inspirées par le Web.
Alors, êtes-vous prêt à vous époustoufler (à partir de la question Python) ?
Avis 1 ! : À chaque question, il y a une réponse avec une explication (lien sous chaque élément).
Avis 2 ! : Pour chaque question, réfléchissez à quel sera le résultat.
Question 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
Allez à la réponse 1
Question 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"})
Allez à la réponse 2
Question 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)
Allez à la réponse 3
Question 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()
Allez à la réponse 4
Si vous avez dit :
{"a": "string"}
malheureusement, vous vous trompez, la réponse est :
AttributeError: 'dict' object has no attribute 'a'
Si vous m'aimez et que vous venez d'abord de javascript, le dictionnaire d'accès (objet en Javascript) n'est pas par point comme en Javascript, vous ne pouvez y accéder que par [], et à l'intérieur de la clé vous souhaitez définir "a".
Retour à la question 1
Si vous avez dit :
{"a": "string"}
Vous vous trompez encore, la réponse est :
... NameError: name 'json' is not define
Vous connaissez peut-être les différences entre la portée locale et globale en Python (sinon, vous devriez lire ceci : Python Scope). Le __init__ est une fonction, l'importation se fait dans une portée locale donc elle ne sait pas ce qu'est json. Vous pouvez le réparer en l'important globalement comme ceci :
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"})
Ou de manière plus avancée :
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"})
Vous pouvez voir l'utilisation de l'importation dans la classe pour plus de détails.
Retour à la question 2
Si vous avez dit :
arg2 == 2
Tu as raison! En Python, nous avons 3 façons de passer un argument :
def myFun(arg1): print(arg1) myFun('arg1')
def myFun(*arg1): print(*arg1) my_tuple = ('arg1', 'arg2') myFun(my_tuple)
Retour à la question 3
La réponse est:
[2, 3, 4]
Pour certaines personnes qui connaissent les domaines d'application et les missions, cela peut sembler une question assez simple. Pour ceux qui ne le savent pas, python enregistre la mémoire variable comme référence, donc dans ce cas, l'arr pointera vers une référence dans une mémoire -> la fonction changera les valeurs (mais toujours la même référence) -> arr2 le fera obtenir l'adresse de référence de arr mais après que les valeurs aient été modifiées.
Retour à la question 4
Merci d'avoir lu cet article. J'espère que vous avez apprécié et appris de nouvelles choses. Si vous avez des questions ou des suggestions, veuillez laisser un commentaire.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3