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

Python에서 일반적인 프로그래밍 오류 또는 '문제'는 무엇입니까?


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

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

is와 =를 구분하지 않음: python의 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를 만드는 경향이 있습니다.