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

까다로운 Python 질문

PHPz
풀어 주다: 2024-07-25 01:00:52
원래의
846명이 탐색했습니다.

지난 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿