Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

프로그래머가 흔히 저지르는 Python 프로그래밍 실수는 무엇입니까?


다음은 프로그래머가 저지르는 가장 일반적인 파이썬 프로그래밍 실수/고치입니다. −

  • 범위 이름 조회 - Python은 LEGB(Local, Enclosing, Global, Built-in)의 순서로 범위 지정 규칙을 따릅니다. 파이썬에는 엄격한 유형 바인딩이 없기 때문에 프로그래머는 외부 범위 변수를 나중에 외부 범위에서 사용할 수 있지만 지금은 다른 값으로 대체되는 다른 값에 다시 연결할 수 있습니다.

  • is와 ==를 구별하지 않음 - 파이썬의 is 연산자는 두 객체가 동일한 메모리 주소를 참조하는지 확인합니다. ==연산자는 __eq__ 함수를 실행합니다. 이 함수는 클래스에 따라 동등성을 다르게 검사할 수 있습니다.

  • 목록을 반복하면서 수정하기 - 목록을 반복하는 동안 목록에서 요소를 제거하면 IndexError가 발생합니다. 인덱스를 줄이지 않고 목록 크기를 줄였기 때문입니다.

  • 클로저 바인딩:다음 코드를 고려하십시오 -

예시

listLambdas = [lambda x : i + x for i in range(5)]
for lam in listLambdas:
   print(lam(10))

출력

이 결과는 다음과 같습니다.

14
14
14
14
14

충격? 이것은 바인딩 인클로저 때문입니다. 이 목록의 모든 람다는 변수 i를 참조합니다. 즉, 변수가 변경되면 이 람다가 새 값을 참조하기 시작합니다.

  • 내장된 이름 충돌 - 특정 시점에서 sum이라는 변수를 생성해야 합니다. 이 경우 합계 함수에 대한 참조를 다시 할당했습니다. 이것은 이와 같은 경우에는 사소해 보이지만 패키지 이름이 그러한 방식으로 지정되면 심각한 문제를 일으킬 수 있습니다. 이로 인해 다른 패키지가 표준 클래스 대신 클래스를 가져올 수 있습니다.

  • 연산자에 대한 직관적이지 않은 구현 - Python은 클래스에 대한 연산자 함수를 오버로드하는 방법을 제공합니다. 종종 사람들은 일반적이지 않은 방식으로 이러한 연산자를 구현하고 복잡하고 직관적이지 않은 API를 만드는 경향이 있습니다.