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
아, 아, 아, 아, 아, 아, 아, 아, 아?if
gimme_things
return
anything 으로 '무엇이든'이.그러면 사실상 암묵적으로return None
음음음음음:
things = gimme_things()
print("My first thing is {0}".format(things[0]))
실패하다, 실패하다.NoneType
할 수 「부록할 수 없습니다」라고 하는 입니다.things
None
.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()
실제로 어떤 일이 잘못됐는지 더 명확하고 명확하게 알 수 없는 경우?자신의 코드에 예외를 추가하는 것은, 무엇인가 장해가 발생했을 때, 무엇이 일어나고 있는지를 정확하게 알 수 있는 중요한 방법입니다.
, 버그가되지 않는 ).(「」, 「」, 「」, 「」, 「」)를 시도할 수 없게 .서브스크립트 시행을 방해합니다.None
things[0]
미완성이다IndexError
때things
아아아아아아아아아아아아아아아아아아아아아아아아.「 」가 try
수 있다except (TypeError, IndexError)
함정에 빠뜨릴 수 있습니다.
언급URL : https://stackoverflow.com/questions/216972/what-does-it-mean-if-a-python-object-is-subscriptable-or-not
'programing' 카테고리의 다른 글
"테이블 메타데이터 잠금 대기" 상태의 원인이 되고 있는 트랜잭션을 확인하려면 어떻게 해야 합니까? (0) | 2022.10.11 |
---|---|
MySQL 테이블에 행이 있는지 테스트하는 가장 좋은 방법 (0) | 2022.10.11 |
표 크기 - MariaDB Columnstore 대 InnoDB (0) | 2022.10.11 |
JavaScript에서 바이트 단위의 크기를 KB, MB, GB로 변환하는 올바른 방법 (0) | 2022.10.11 |
Rxandroid SubscribeOn과 ObservateOn의 차이점은 무엇입니까? (0) | 2022.10.11 |