이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 13564|회답: 1

[통신] 초보자를 위한 17가지 일반적인 Python 런타임 오류

[링크 복사]
게시됨 2015. 12. 5. 오후 1:08:56 | | |

파이썬을 배울 때, 에러 메시지의 의미를 이해하는 것이 다소 복잡할 수 있습니다. 다음은 프로그램이 크래시되는 일반적인 런타임 오류 목록입니다.


1) if, elif, else, for, while, class, def def def 마지막에 :( 추가하는 걸 깜빡했어요.

        오류는 다음과 같은 코드에서 발생합니다:

if spam == 42
    인쇄("안녕하세요!")

2) == 대신 = 사용(이로 인해 "SyntaxError: invalid syntax")

        = 는 할당 연산자이고, == 는 비교 연산과 같습니다.오류는 다음과 같은 코드에서 발생합니다:

스팸 = 42 경우:
    인쇄("안녕하세요!")

3) 들여쓰기 사용이 잘못됨. (이로 인해 "들여쓰기오류:예상치 못한 들여쓰기", "들여쓰기오류:들여쓰기 없는 단어가 어떤 외부 설명 수준과 일치하지 않는다", "들여쓰기오류:들여쓰기 블록이 기대된다"가 나타난다)

        들여쓰기는 다음에 다음과 같이 끝나는 문장 이후에만 사용되며, 그 이후에는 들여쓰기 형식을 이전 들여쓰기 형식으로 되돌려야 한다는 점을 기억하세요. 오류는 다음과 같은 코드에서 발생합니다:

인쇄("안녕하세요!")
    인쇄체("안녕하세요!")
또는:
if spam == 42:
    인쇄("안녕하세요!")
  인쇄체("안녕하세요!")
또는:
if spam == 42:
인쇄("안녕하세요!")

4) for 루프 문에서 len()을 호출하지 않는 ("TypeError: "list" 객체가 정수로 해석될 수 없음" 발생)

보통 리스트나 문자열 요소를 인덱스를 통해 반복 처리해야 하는데, 이 경우 range() 함수를 호출해야 합니다. 이 리스트를 반환하지 말고 len 값을 반환하는 것을 잊지 마세요.

        오류는 다음과 같은 코드에서 발생합니다:

spam = ["고양이", "개", "마우스"]
범위 내 I(스팸):
    인쇄(스팸)

5) 문자열 값을 수정하려고 시도하는 경우("TypeError: "str" 객체가 아이템 할당을 지원하지 않음)

        문자열은 변경 불가능한 데이터 타입이며, 오류는 다음과 같은 코드에서 발생합니다:

Spam = "저는 애완 고양이를 키우고 있습니다."
spam[13] = "r"
인쇄(스팸)

그리고 실제로 이렇게 해야 합니다:

Spam = "저는 애완 고양이를 키우고 있습니다."
Spam = 스팸[:13] + "R" + 스팸[14:]
인쇄(스팸)

6) 비문자열 값과 문자열을 연결하려고 시도 ("TypeError: Can"t convert to str implicly" 발생)

        오류는 다음과 같은 코드에서 발생합니다:

수계자 = 12
print("I have " + numEggs + "eggs.")

그리고 실제로 이렇게 해야 합니다:

수계자 = 12
print("I have " + str(numEggs) + "eggs.")
또는:
수계자 = 12
프린트("나는 %s 알을 가지고 있어." % (숫자 달걀))

7) 문자열의 시작과 끝에 인용 부호를 붙이는 것을 잊음 (이로 인해 "SyntaxError: Search String literal 중 EOL" 발생)

        오류는 다음과 같은 코드에서 발생합니다:

인쇄(안녕하세요!)
또는:
인쇄("안녕하세요!)
또는:
myName = "알"
print("내 이름은 " + 내 이름 + . 잘 지내?")

8) 변수 또는 함수 이름의 오타 ("NameError: 이름 "fooba" 정의되지 않음" 발생)

        오류는 다음과 같은 코드에서 발생합니다:

foobar = "알"
인쇄("내 이름은 " + fooba)
또는:
Spam = ruond(4.2)
또는:
스팸 = 라운드(4.2)

9) 메서드 이름의 오타 ("AttributeError: "str" 객체에 속성 "lowerr"가 없음)

        오류는 다음과 같은 코드에서 발생합니다:

SPAM = "이것은 소문자입니다."
spam = spam.lowerr()

10) 참조가 리스트 최대 인덱스를 초과함 ("IndexError: list index out of range" 발생)

        오류는 다음과 같은 코드에서 발생합니다:

spam = ["고양이", "개", "마우스"]
print(스팸[6])

11) 존재하지 않는 사전 키 값을 사용하는 경우("KeyError: 'spam'" 발생)

        오류는 다음과 같은 코드에서 발생합니다:

spam = {"cat": "조피", "dog": "바질", "마우스": "Whiskers"}
print("내 애완 얼룩말 이름은 " + spam["얼룩말"]입니다)

12) Python 키워드를 변수 이름으로 사용하려고 시도 ("SyntaxError: invalid syntax"가 발생)

        Python 키는 변수 이름으로 사용할 수 없으며, 오류는 다음과 같은 코드에서 발생합니다:

클래스 = "대수"

Python3 키워드는 다음과 같습니다: and, as, assert, break, classe, continue, def, del, elif, else, exbut, False, finally, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, 맞아, 시도해, 함께, 양보해


13) 정의된 새 변수에서 부가 연산자를 사용할 때("NameError: name "foobar" 정의되지 않음" 발생)

        변수를 선언할 때 0이나 null 문자열을 초기값으로 사용하지 마세요. 자기 증가 연산자를 사용한 문장 스팸 += 1은 spam = spam + 1과 같아지므로, 스팸은 유효한 초기 값을 지정해야 합니다.

        오류는 다음과 같은 코드에서 발생합니다:

스팸 = 0
스팸 += 42
알+= 42

14) 함수에서 로컬 변수를 사용하기 전에 로컬 변수를 사용하세요 (이 경우 로컬 변수와 같은 이름을 가진 전역 변수가 있습니다) (이로 인해 "UnboundLocalError: 할당 전에 참조된 로컬 변수 "foobar"가 발생합니다)

        전역 변수와 같은 이름을 가진 함수에서 로컬 변수를 사용하는 것은 복잡하며, 사용 규칙은 다음과 같습니다: 함수에 정의된 것이 있으면 함수에서만 사용되면 국소 변수이며, 그 반대도 마찬가지입니다.

        즉, 정의하기 전에는 함수에서 전역 변수로 사용할 수 없습니다.

        오류는 다음과 같은 코드에서 발생합니다:

someVar = 42
def myFunction():
    print(someVar)
    someVar = 100
myFunction()

15) range() 로 정수 리스트를 생성하려 시도 ("TypeError: "range" 객체가 항목 할당을 지원하지 않음)

        때로는 정수 순서가 정해진 리스트를 원할 때가 있는데, range()가 이 리스트를 생성하는 좋은 방법인 것 같습니다. 하지만 range()는 실제 리스트 값이 아니라 "range 객체"를 반환한다는 점을 기억해야 합니다.

        오류는 다음과 같은 코드에서 발생합니다:

spam = 범위(10)
스팸[4] = -1

아마 이게 당신이 하고 싶은 일일 수도 있어요:

SPAM = list(range(10))
스팸[4] = -1
(참고: spam = range(10)는 Python 2에서 작동하는데, Python 2에서는 range()가 리스트 값을 반환하지만, Python 3에서는 위의 오류가 발생하기 때문입니다.)

16) ++ 또는 -- 자기 증가 연산자. (결과적으로 "SyntaxError: invalid syntax")

        C++, Java, PHP 등 다른 언어에 익숙하다면 ++나 변수를 증축하고 빼는 방식을 사용해 보는 것도 좋습니다. 파이썬에는 그런 연산자가 없습니다.

        오류는 다음과 같은 코드에서 발생합니다:

스팸 = 1
spam++

아마 그게 당신이 하고 싶은 일일지도 모릅니다:

스팸 = 1
스팸 += 1

17) 메서드의 첫 번째 인자에 자기 매개변수를 추가하는 것을 깜빡했음(이로 인해 "TypeError: myMethod() 인수를 받지 않음 (1 주어짐)"이 발생함)

        오류는 다음과 같은 코드에서 발생합니다:

클래스 푸():
    def myMethod():
        인쇄("안녕하세요!")
a = Foo()
a.myMethod()





이전의:WiFi 무선 크래킹 소프트웨어 + 튜토리얼 (물방울)
다음:【iOS 개발 시리즈 튜토리얼, 여름에 공개됨】iOS 프로젝트 소스 코드
게시됨 2015. 12. 5. 오후 1:34:16 |
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com