>  기사  >  백엔드 개발  >  Python 전문가도 작성하지 못하는 몇 가지 실수를 살펴보세요.

Python 전문가도 작성하지 못하는 몇 가지 실수를 살펴보세요.

coldplay.xixi
coldplay.xixi앞으로
2021-02-05 17:25:363059검색

Python 전문가도 작성하지 못하는 몇 가지 실수를 살펴보세요.

이제 막 Pythonista를 시작하는 분들은 학습 과정에서 코드를 실행할 때 어느 정도 오류가 발생하고 처음에는 어려워 보일 수도 있습니다. 코드의 양이 쌓이면 연습이 완벽해지며 런타임 오류가 발생할 때 원래 문제를 빠르게 찾을 수 있습니다. 다음은 17가지 일반적인 오류입니다. 작성한 코드에 이러한 오류가 없으면 Python 기술이 더 높은 수준에 도달합니다. 즉, 자격을 갖춘 파이썬 개발자가 되면 "글도 못 쓴다" 같은 실수를 하지 않을 수도 있다는 것입니다.

무료 학습 권장사항: python 비디오 튜토리얼

1,

if, for, def, elif, else, class 및 기타 문 끝에 :

을 추가하는 것을 잊어버렸습니다. 다음과 같은 "SyntaxError: 잘못된 구문”:

if spam == 42  
print('Hello!')

2,

==

대신 =를 사용하면 "SyntaxError: 잘못된 구문"이 발생합니다.

=은 할당 연산자이고 ==는 동등 비교 연산입니다. . 이 오류는 다음 코드에서 발생합니다.

if spam = 42:  
print('Hello!')

3,

indentation을 잘못 사용하면

"IndentationError: 예기치 않은 들여쓰기", "IndentationError: unindent가 외부 들여쓰기 수준과 일치하지 않습니다" 및 "IndentationError: 예상된 들여쓰기"가 발생합니다. indented block”

들여쓰기 증가는 다음으로 끝나는 문 뒤에만 사용된다는 점을 기억하세요. 그런 다음 이전 들여쓰기 형식으로 복원해야 합니다. 이 오류는 다음 코드에서 발생합니다:

print('Hello!') 
print('Howdy!')

또는:

if spam == 42:  
   print('Hello!')
print('Howdy!')

4,

for 루프 문에서 len()

호출을 잊어버리면 "TypeError: 'list' 개체를 정수로 해석할 수 없습니다. "

일반적으로 목록이나 문자열의 요소를 인덱스별로 반복하려고 하는데, 이를 위해서는 range() 함수를 호출해야 합니다. 목록 대신 len 값을 반환하는 것을 기억하세요.

이 오류는 다음 코드에서 발생합니다.

spam = ['cat', 'dog', 'mouse']
for i in range(spam):  
   print(spam[i])

5,

문자열

값을 수정하려고 하면 "TypeError: 'str' 개체가 항목 할당을 지원하지 않습니다."가 발생합니다.

문자열은 변경할 수 없는 데이터입니다. 이 오류는 다음 코드에서 발생합니다.

spam = 'I have a pet cat.'
spam[13] = 'r'
print(spam)

올바른 접근 방식은:

spam = 'I have a pet cat.'
spam = spam[:13] + 'r' + spam[14:]
print(spam)

6,

문자열이 아닌 값을 문자열

과 연결하려고 하면 "TypeError: Can't 변환 ' int' 객체를 암시적으로 str로 변환합니다."

이 오류는 다음 코드에서 발생합니다.

numEggs = 12
print('I have ' + numEggs + ' eggs.')

올바른 접근 방식은 다음과 같습니다.

numEggs = 12
print('I have ' + str(numEggs) + ' eggs.')

numEggs = 12
print('I have %s eggs.' % (numEggs))

7,

문자열의 시작과 끝 부분에 따옴표를 추가하는 것을 잊어버리면

결과는 다음과 같습니다. "SyntaxError: EOL while scanning string literal"

이 오류는 다음 코드에서 발생합니다:

print(Hello!')
  print('Hello!)
myName = 'Al'
print('My name is ' + myName + . How are you?')

8,

변수 또는 함수 이름의 철자가 잘못되었습니다.

결과적으로 "NameError: name 'fooba'가 정의되지 않았습니다. "

이 오류는 다음 코드에서 발생합니다.

foobar = 'Al'
print('My name is ' + fooba)

spam = ruond(4.2)
spam = Round(4.2)

9,

메서드 이름의 철자가 틀렸습니다

로 인해 "AttributeError: 'str' object has no attribute 'lowerr'"이 발생합니다.

이 오류는 다음 코드:

spam = 'THIS IS IN LOWERCASE.'
spam = spam.lowerr()

10,

참조가 목록 최대 인덱스를 초과합니다

결과 "IndexError: 목록 인덱스가 범위를 벗어났습니다."

이 오류는 다음 코드에서 발생합니다.

spam = ['cat', 'dog', 'mouse']
print(spam[6])

11,

사용 존재하지 않는 사전 키 값

을 사용하면 "KeyError: 'spam' "이 발생합니다.

이 오류는 다음 코드에서 발생합니다.

spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam['zebra'])

12,

Python 키워드를 변수 이름으로 사용하려고 하면

결과 "SyntaxError: 잘못된 구문"

Python 키를 변수 이름으로 사용할 수 없습니다. 이 오류가 발생합니다. 다음 코드에서:

class = 'algebra' 

Python3的关键字有:and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield

13,

새 변수 정의에서 증분 연산자

를 사용하면 " NameError: 이름 'foobar'가 정의되지 않았습니다."

변수 String을 초기 값으로 선언할 때 0 또는 null 문자를 사용하지 마십시오. 그러면 증분 연산자를 사용하는 문장 spam += 1이 spam = spam + 1과 같게 됩니다. 이는 스팸이 유효한 초기 값을 지정해야 함을 의미합니다.

이 오류는 다음 코드에서 발생합니다.

spam = 0
spam += 42
eggs += 42

14,

로컬 변수를 정의하기 전에 함수에서 로컬 변수를 사용하는 경우(이때 로컬 변수와 동일한 이름의 전역 변수가 있습니다)

결과 "UnboundLocalError: 할당 전에 지역 변수 'foobar'가 참조되었습니다."

함수에서 지역 변수를 사용할 때 매우 복잡하고 동시에 같은 이름의 전역 변수가 있는 경우 사용 규칙은 다음과 같습니다. 함수에 정의되어 있으면 함수 안에만 있으면 지역 변수이고, 그렇지 않으면 전역 변수입니다.

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

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

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

15,

range()를 사용하여 정수 목록을 만들려고 하면

"TypeError: 'range' 개체가 항목 할당을 지원하지 않습니다."가 발생합니다.

가끔 정렬된 정수 목록을 얻고 싶기 때문에 range()가 이 목록을 생성하는 좋은 방법인 것 같습니다. 그러나 range()는 실제 목록 값이 아닌 "범위 객체"를 반환한다는 점을 기억해야 합니다.

이 오류는 다음 코드에서 발생합니다.

spam = range(10)
spam[4] = -1
正确写法:
spam = list(range(10))
spam[4] = -1

(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)

16、

不存在 ++ 或者 -- 自增自减操作符。

导致“SyntaxError: invalid syntax”

如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。

该错误发生在如下代码中:

spam = 1spam++
正确写法:
spam = 1spam += 1

17、

忘记为方法的第一个参数添加self参数

导致“TypeError: myMethod() takes no arguments (1 given)”

该错误发生在如下代码中:

class Foo():  
   def myMethod():      
   print('Hello!')
a = Foo()
a.myMethod()

相关免费学习推荐:python教程(视频)

위 내용은 Python 전문가도 작성하지 못하는 몇 가지 실수를 살펴보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제