지난 2년 동안 저는 Python을 주요 프로그래밍 언어로 사용해 왔습니다. 나는 까다로운 JavaScript 질문에서 했던 것처럼 "깊이 살펴보는" 것이 아마도 좋은 이유라고 생각했습니다. 다음 질문 중에는 현재 직장에서 다뤄야 할 문제도 있었고, 웹에서 영감을 받은 질문도 있었습니다.
그럼 (Python 질문에서) 깜짝 놀랄 준비가 되셨나요?
주의사항 1!: 각 질문에는 설명과 함께 답변이 있습니다.(각 항목 아래 링크)
주의사항 2!: 각 질문에 대해 어떤 결과가 나올지 생각해 보세요.
질문 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
답변 1로 이동
질문 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"})
답변 2로 가기
질문 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)
3번 답변으로 이동
질문 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()
4번 답변으로 이동
다음과 같이 말한 경우:
{"a": "string"}
안타깝게도 당신이 틀렸습니다. 대답은 다음과 같습니다.
AttributeError: 'dict' object has no attribute 'a'
나를 좋아하고 javascript에서 먼저 왔다면 접근 사전(Javascript의 객체)은 Javascript처럼 점으로 되어 있지 않고 []로만 접근할 수 있고, 키 안에는 "a"를 설정하고 싶다.
질문 1로 돌아가기
다음과 같이 말한 경우:
{"a": "string"}
또 틀렸습니다. 답은 다음과 같습니다.
... NameError: name 'json' is not define
Python의 로컬 범위와 전역 범위의 차이점을 알고 계실 것입니다(그렇지 않은 경우 Python 범위를 읽어보세요). __init__은 함수이며 가져오기는 로컬 범위 내에 있으므로 json이 무엇인지 알 수 없습니다. 다음과 같이 전역적으로 가져와서 문제를 해결할 수 있습니다.
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"})
또는 좀 더 발전된 방식으로:
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"})
자세한 내용은 클래스 내부에서 가져오기를 사용하여 확인할 수 있습니다.
질문 2로 돌아가기
다음과 같이 말한 경우:
arg2 == 2
당신 말이 맞아요! Python에서는 인수를 전달하는 세 가지 방법이 있습니다.
def myFun(arg1): print(arg1) myFun('arg1')
def myFun(*arg1): print(*arg1) my_tuple = ('arg1', 'arg2') myFun(my_tuple)
질문 3으로 돌아가기
답은 다음과 같습니다.
[2, 3, 4]
범위와 과제를 아는 일부 사람들에게는 매우 쉬운 질문으로 보일 수 있습니다. 모르는 사람들을 위해 설명하자면, Python은 변수 메모리를 참조로 저장하므로 이 경우 arr은 메모리의 참조를 가리킵니다 -> 함수는 값을 변경합니다(그러나 여전히 동일한 참조) -> arr2는 arr의 참조 주소를 가져오지만 값이 수정된 후에는 됩니다.
질문 4로 돌아가기
이 글을 읽어주셔서 감사합니다. 새로운 것을 즐기고 배웠기를 바랍니다. 질문이나 제안사항이 있으시면 댓글을 남겨주세요.
위 내용은 까다로운 Python 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!