programing

Python 객체가 "서브스크립트 가능"인지 아닌지는 무엇을 의미합니까?

goodsources 2022. 10. 11. 22:54
반응형

Python 객체가 "서브스크립트 가능"인지 아닌지는 무엇을 의미합니까?

"서브스크립트 가능" 도메인에 속하는 개체 유형은 무엇입니까?

이는 기본적으로 객체가 실장되어 있다는 것을 의미합니다.__getitem__()방법.즉, "컨테이너"인 객체를 설명합니다. 즉, 다른 객체를 포함합니다.여기에는 문자열, 목록, 튜플 및 사전이 포함됩니다.

즉석에서 다음과 같은 기능만 탑재되어 있습니다.

string:  "foobar"[3] == "b"
tuple:   (1,2,3,4)[3] == 4
list:    [1,2,3,4][3] == 4
dict:    {"a":1, "b":2, "c":3}["c"] == 3

하지만 Mipadi의 답은 정확합니다.__getitem__서브스크립트 가능

스크립트 가능한 개체는 수행된 작업을 기록하는 개체로, 재생 가능한 "스크립트"로 저장할 수 있습니다.

를 들어 Application Scripting Framework를 참조하십시오.

만약 Alistair가 그가 무엇을 물어봤는지 몰랐다면, 그리고 (다른 사람이 편집한 것처럼) 정말 "설명할 수 있는" 개체를 의미했다면, (mipadi도 대답했듯이) 이것이 올바른 것입니다.

서브스크립트 가능한 오브젝트는 다음 명령어를 구현하는 오브젝트입니다.__getitem__특별한 방법(사고 목록, 사전)

컴퓨팅에서 서브스크립트의 의미는 다음과 같습니다.「어레이의 요소 중 하나를 지정하기 위해서, 단독 또는 다른 프로그램과 함께 사용하는 기호(주로 서브스크립트로 쓰이지만, 실제로는 그렇지 않습니다).

여기서 @user2194711에 의해 제시된 간단한 예에서는 다음 두 가지 이유로 추가 요소가 목록의 일부가 될 수 없음을 알 수 있습니다.

1) 실제로 메서드를 부가하는 것은 아닙니다.메서드는 필요하기 때문입니다.()불러야죠.

2) 오류는 함수 또는 방법을 사용할 수 없음을 나타냅니다. 즉, 목록 또는 시퀀스처럼 색인화할 수 없음을 의미합니다.

자, 이걸 보세요.-

>>> var = "myString"
>>> def foo(): return 0
... 
>>> var[3]
't'
>>> foo[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'function' object is not subscriptable

즉, 서브스크립트나 say 요소가 존재하지 않습니다.function마치 그것들이 순차적으로 일어나는 것처럼; 그리고 우리는 우리가 하는 것처럼, 도움을 받아 그들에게 접근할 수 없다.[].

또한, mipadi가 그의 답변에서 말한 것처럼; 그것은 기본적으로 객체가 다음을 구현한다는 것을 의미합니다.__getitem__()방법.(서브스크립트 가능한 경우).따라서 다음과 같은 오류가 발생했습니다.

arr.append["HI"]

TypeError: 'builtin_function_or_method' 개체를 사용할 수 없습니다.

저도 같은 문제가 있었어요.하고 있었어요

arr = []
arr.append["HI"]

그래서 사용하다[에러의 원인이 되고 있습니다.그럴 것 같네요.arr.append("HI")

여기서 앞서 말한 답변에 따라 목록(또는 dict 또는 기타 첨자 가능한 개체)이 있다고 생각되는 경우가 많습니다.

예를 들어, 목록을 반환해야 하는 함수가 있다고 가정합니다.

def gimme_things():
    if something_happens():
        return ['all', 'the', 'things']

했을 때, '이러다'는something_happens()인지 이 오지 True아, 아, 아, 아, 아, 아, 아, 아, 아?ifgimme_thingsreturnanything 으로 '무엇이든'이.그러면 사실상 암묵적으로return None음음음음음:

things = gimme_things()
print("My first thing is {0}".format(things[0]))

실패하다, 실패하다.NoneType할 수 「부록할 수 없습니다」라고 하는 입니다.thingsNone.None[0]이 오류 메시지가 무엇을 의미하는지 알 수 없습니다.

의 이 에는 2가지가 있습니다 번째 방법은 입니다.첫 번째는 에러가 발생하지 않도록 .첫 번째 방법은 다음을 체크함으로써 오류를 회피하는 것입니다.things합니다.

things = gimme_things()
if things:
    print("My first thing is {0}".format(things[0]))
else:
    print("No things")  # or raise an error, or do nothing, or ...

하게 ""을 트랩합니다.TypeError예외

things = gimme_things()
try:
    print("My first thing is {0}".format(things[0]))
except TypeError:
    print("No things")  # or raise an error, or do nothing, or ...

입니다.gimme_things항상 목록을 반환할 수 있도록 합니다.이 경우, 비슷한 버그가 있는 곳이 많으면 심플하고 습관적으로 버그를 유지할 수 있기 때문에, 아마 그것이 더 심플한 디자인일 것입니다.

def gimme_things():
    if something_happens():
        return ['all', 'the', 'things']
    else:  # make sure we always return a list, no matter what!
        logging.info("Something didn't happen; return empty list")
        return []

이 안에 넣는 은요, 이죠.else:브랜치는 사용 사례에 따라 달라집니다. 당신은 로 하는 것이 것이다.something_happens()실제로 어떤 일이 잘못됐는지 더 명확하고 명확하게 알 수 없는 경우?자신의 코드에 예외를 추가하는 것은, 무엇인가 장해가 발생했을 때, 무엇이 일어나고 있는지를 정확하게 알 수 있는 중요한 방법입니다.

, 버그가되지 않는 ).(「」, 「」, 「」, 「」, 「」)를 시도할 수 없게 .서브스크립트 시행을 방해합니다.Nonethings[0] 미완성이다IndexErrorthings아아아아아아아아아아아아아아아아아아아아아아아아.「 」가 try 수 있다except (TypeError, IndexError)함정에 빠뜨릴 수 있습니다.

언급URL : https://stackoverflow.com/questions/216972/what-does-it-mean-if-a-python-object-is-subscriptable-or-not

반응형