logo

Python에서 오리 타이핑이란 무엇입니까?

이번 튜토리얼에서는 덕 타이핑(Duck Typing)에 대해 알아봅니다. 이는 Python에서 널리 사용되는 용어이며 다음과 같은 말에서 유래되었습니다. '오리처럼 걷고, 오리처럼 헤엄치고, 오리처럼 보인다면 아마도 오리일 것입니다.'

위의 진술은 오리를 식별하는 아이디어를 제공합니다. 여기서 우리는 오리의 게놈 서열을 가질 필요가 없습니다. 우리는 그 행동과 겉모습을 통해 결론을 내립니다.

우리는 Python 프로그래밍에서 덕 타이핑(Duck Typing)이 정확히 무엇을 의미하는지 논의할 것입니다.

파이썬은 다음을 따릅니다. EAFP (허락보다는 용서를 구하는 것이 더 쉽다) 엘블리 (도약하기 전에 살펴보세요) 철학. EAFP는 '오리 타이핑' 스타일과 어느 정도 연결되어 있습니다.

동적 및 정적 입력

덕 타이핑을 사용하는 주된 이유는 동적 타이핑을 지원하기 위해서입니다. 파이썬 프로그래밍 . Python에서는 변수의 데이터 유형을 지정할 필요가 없으며 이후 코드에서 동일한 변수에 다른 데이터 유형 값을 다시 할당할 수 있습니다. 다음 예를 살펴보겠습니다.

예 -

 x = 12000 print(type(x)) x = 'Dynamic Typing' print(type(x)) x = [1, 2, 3, 4] print(type(x)) 

산출:

df.loc
 

위 코드에서 볼 수 있듯이 변수 x에 정수를 할당하여 다음과 같이 만들었습니다. 정수 유형. 그런 다음 동일한 변수에 문자열과 목록을 할당했습니다. Python 인터프리터는 동일한 변수의 데이터 유형 변경을 허용합니다. 이는 동적 타이핑 동작입니다.

Java, Swift와 같은 다른 많은 프로그래밍 언어는 정적 유형입니다. 데이터 유형을 사용하여 변수를 선언해야 합니다. 아래 예에서는 Python 대신 Swift를 사용하여 동일한 작업을 수행하려고 합니다.

예 -

 # integer value assigning in JavaScript var a = 10 # Assinging string in swift a = 'Swift language' 

Swift 언어에서는 문자열을 할당할 수 없기 때문에 위 코드를 컴파일할 수 없습니다. 변수이기 때문에 정수로 선언되었습니다.

디렉토리 제출이란 무엇입니까?

오리 타이핑의 개념

앞서 우리는 Python이 동적 유형 언어라는 것을 논의했습니다. 그러나 사용자 정의 데이터 유형에는 동적 접근 방식을 사용할 수 있습니다. 다음 예를 이해해 봅시다.

예 -

 class VisualStudio: def execute(self): print('Compiling') print('Running') print('Spell Check') print('Convention Check') class Desktop: def code(self, ide): ide.execute() ide = VisualStudio() desk = Desktop() desk.code(ide) 

산출:

 Compiling Running Spell Check Convention Check 

위의 코드에서 우리는 비주얼 스튜디오 해야 하는 수업 실행하다() 방법. 데스크탑 클래스에서는 ide를 code()의 인수로 전달했습니다. 안 간다 의 대상이다 비주얼 스튜디오 수업. ide의 도움으로 우리는 실행하다() VisualStudio 클래스의 메서드입니다.

또 다른 예를 살펴보겠습니다.

예시 - 2

 class Duck: def swim(self): print('I'm a duck, and I can swim.') class Sparrow: def swim(self): print('I'm a sparrow, and I can swim.') class Crocodile: def swim_walk(self): print('I'm a Crocodile, and I can swim, but not quack.') def duck_testing(animal): animal.swim() duck_testing(Duck()) duck_testing(Sparrow()) duck_testing(Crocodile()) 

산출:

 I'm a duck, and I can swim. I'm a sparrow, and I can swim. Traceback (most recent call last): File '', line 24, in File '', line 19, in duck_testing AttributeError: 'Crocodile' object has no attribute 'swim' 

위 코드에서 Duck 클래스의 인스턴스는 다음을 호출하여 반영됩니다. 오리 테스트 기능. 이는 또한 다음을 구현하는 Sparrow 클래스에서도 발생합니다. 수영() 기능. 그러나 Crocodile 클래스의 경우에는 다음을 구현하지 않기 때문에 오리 테스트 평가에 실패합니다. 수영() 기능.

덕 타이핑이 EAFP를 지원하는 방법

오리 타이핑은 EAFP에 가장 적합한 스타일입니다. '유형' 개체의. 우리는 그것만 처리하면 된다 행동 그리고 능력 . 다음 진술을 살펴보겠습니다.

if-else 블록이 많이 보이면 LBYL 코딩 스타일입니다.

의사코드 자바

그러나 Try-Exception 블록이 많이 보이면 EAFP 코더일 가능성이 높습니다.