>백엔드 개발 >파이썬 튜토리얼 >까다로운 Python 질문

까다로운 Python 질문

PHPz
PHPz원래의
2024-07-25 01:00:52857검색

지난 2년 동안 저는 Python을 주요 프로그래밍 언어로 사용해 왔습니다. 나는 까다로운 JavaScript 질문에서 했던 것처럼 "깊이 살펴보는" 것이 아마도 좋은 이유라고 생각했습니다. 다음 질문 중에는 현재 직장에서 다뤄야 할 문제도 있었고, 웹에서 영감을 받은 질문도 있었습니다.

그럼 (Python 질문에서) 깜짝 놀랄 준비가 되셨나요?

Tricky Python Questions

질문

주의사항 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번 답변으로 이동

답변

질문 1에 대한 답변

다음과 같이 말한 경우:

{"a": "string"}

안타깝게도 당신이 틀렸습니다. 대답은 다음과 같습니다.

AttributeError: 'dict' object has no attribute 'a'

나를 좋아하고 javascript에서 먼저 왔다면 접근 사전(Javascript의 객체)은 Javascript처럼 점으로 되어 있지 않고 []로만 접근할 수 있고, 키 안에는 "a"를 설정하고 싶다.

질문 1로 돌아가기

질문 2에 대한 답변

다음과 같이 말한 경우:

{"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로 돌아가기

질문 3에 대한 답변

다음과 같이 말한 경우:

arg2 == 2

당신 말이 맞아요! Python에서는 인수를 전달하는 세 가지 방법이 있습니다.

  • 논쟁 자체:
def myFun(arg1):
   print(arg1)

myFun('arg1')
  • *args 사용 - 인수 목록 또는 튜플(키워드가 아닌 인수의 가변 개수를 Python 함수에 전달할 수 있음):
def myFun(*arg1):
   print(*arg1)

my_tuple = ('arg1', 'arg2')
myFun(my_tuple)
  • kwargs는 질문에서와 같이 key=value 인수를 전달할 수 있습니다(kwargs를 사용하면 가변 개수의 키워드 인수를 Python 함수에 전달할 수 있습니다). 주제에 대해 더 자세히 알고 싶다면 여기를 읽어보세요: freecodecamp - Python에서 *args 및 **kwargs를 사용하는 방법

질문 3으로 돌아가기

질문 4에 대한 답변

답은 다음과 같습니다.

[2, 3, 4]

범위와 과제를 아는 일부 사람들에게는 매우 쉬운 질문으로 보일 수 있습니다. 모르는 사람들을 위해 설명하자면, Python은 변수 메모리를 참조로 저장하므로 이 경우 arr은 메모리의 참조를 가리킵니다 -> 함수는 값을 변경합니다(그러나 여전히 동일한 참조) -> arr2는 arr의 참조 주소를 가져오지만 값이 수정된 후에는 됩니다.

질문 4로 돌아가기

이 글을 읽어주셔서 감사합니다. 새로운 것을 즐기고 배웠기를 바랍니다. 질문이나 제안사항이 있으시면 댓글을 남겨주세요.

위 내용은 까다로운 Python 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.