Nos últimos dois anos, tenho usado Python como minha principal linguagem de programação. Achei que talvez fosse um bom motivo para "ir fundo", como fiz em Tricky JavaScript Questions. algumas das próximas perguntas eram questões com as quais eu precisava lidar em meu trabalho atual, outras inspiradas na web.
Então você está pronto para se surpreender (com a pergunta sobre Python)?
Aviso 1!: Para cada pergunta há uma resposta com uma explicação (link abaixo de cada item).
Aviso 2!: Para cada pergunta pense qual será o resultado.
Questão 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
Vá para a resposta 1
Questão 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"})
Vá para a resposta 2
Questão 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)
Vá para a resposta 3
Pergunta 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()
Vá para a resposta 4
Se você disse:
{"a": "string"}
infelizmente, você está errado, a resposta é:
AttributeError: 'dict' object has no attribute 'a'
Se você gosta de mim e veio primeiro do javascript, o dicionário de acesso (objeto em Javascript) não é por ponto como no Javascript, você pode acessar apenas por [], e dentro da chave você deseja definir "a".
Voltar à pergunta 1
Se você disse:
{"a": "string"}
Você está errado de novo, a resposta é:
... NameError: name 'json' is not define
Você deve conhecer as diferenças entre o escopo local e global em Python (se não, você deve ler isto: Python Scope). O __init__ é uma função , a importação está dentro de um escopo local então não sabe o que é json. Você pode consertar importando-o globalmente assim:
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 uma forma mais avançada:
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"})
Você pode ver usando import dentro da classe para mais detalhes.
Voltar à pergunta 2
Se você disse:
arg2 == 2
Você está certo! Em Python, temos 3 maneiras de passar um argumento:
def myFun(arg1): print(arg1) myFun('arg1')
def myFun(*arg1): print(*arg1) my_tuple = ('arg1', 'arg2') myFun(my_tuple)
Voltar à pergunta 3
A resposta é:
[2, 3, 4]
Para algumas pessoas que conhecem escopos e atribuições, pode parecer uma pergunta muito fácil. Para quem não sabe, python salva a memória variável como referência, então neste caso, o arr irá apontar para uma referência em uma memória -> a função irá alterar os valores (mas ainda a mesma referência) -> arr2 irá obtenha o endereço de referência de arr, mas depois que os valores foram modificados.
Voltar à pergunta 4
Obrigado por ler este artigo. Espero que tenham gostado e aprendido coisas novas. Se você tiver alguma dúvida ou sugestão, deixe um comentário.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3