Python 나무위키.

https://namu.wiki/w/Python

디자인 철학

Python 에서의 들여쓰기는 의무. 들여쓰기 자체로 코드 블럭이 된다.

def factorial(x):
    if x == 0:
        return 1
    else:
        return x * factorial(x - 1)

순수 객체지향

Python에는 원시 타입(Primitive Type) 이 없다. 모든 것이 객체로 취급된다. 상수 역시 상수가 저장된 객체라고 본다. 다음과 같은 상수 할당이 있을때,

x = 10

변수 x 에 10이 할당된 것이 아니라, 10이 저장된 상수 객체를 가리키는 것을 의미. 즉, 내부적으로는 C의 포인터 연산과 같은 동작이 행해지는 것이다.

x = 10
x = 20

이렇게 x에 대입되는 값을 변경할 경우, x가 가리키는 대상이 10이 저장된 상수 객체에서 20이 저장된 상수 객체로 바뀐 것이다.

파이썬의 객체는 변경 불가능한 객체 (Immutable Object)와 변경 가능한 객체(Mutable Object)로 나뉘며, 변경 불가능한 객체에는 상수, 문자열, 그리고 튜플이 있다. 이 세가지를 제외한 나머지 객체는 모두 변경 가능한 객체이며, 값을 수정 할 수 있다. 변경 불가능한 객체의 값을 수정할 때는 바뀐 값이 저장된 새로운 객체를 생성하고 해당 객체를 참조한다. 이와 같은 특징 때문에 파이썬은 순수 객체지향 언어라고 할 수 있고, 이와 같은 순수 객체지향 언어의 또다른 예로는 Ruby 가 있다.

함수의 매개변수로 Immutable 객체를 넘겼냐 Mutable 객체를 넘겼냐에 따라서 함수 바까에 있는 인자의 값도 수정할 수 있는지 없는지가 달라진다. Immutable 객체를 넘겼으면, 값의 복사만 일어나고 함수 바깥에는 영향을 주지 못하므로 ‘Call by Va;lue’ 가 될 것이며, Mutable 객체를 넘겼으면, 함수 바깥에 까지 영향을 줄 수 있으므로, ‘Call by Reference’ 가 될 것이다. 파이썬 공식 문서에서는 파이썬의 인자 전달 방식을 ‘Call byAssignment’ 또는 ‘Call by Object Reference’ 라고 명시 하고 있다.

반복 가능한 객체

파이썬의 가장 큰 특징 중 하나. 파이썬은 반복 가능한 객체(iterable)라는 강력한 기능을 제공한다. 이 객체는 집합, 문자열, 리스트, 튜플, 딕셔너리, 그리고 함수 까지도 반복이 가능하며, 이것을 for 구문에서 사용할 수 있게 해준다. 리스트와 튜플 등은 좀 편해지는 정도라 할 수있지만, 함수의 값을 반복할 수 있다는 것은 큰 장점이다. 그 예로, n의 배수를 구하는 f(n) 함수가 있을 때,

def f(n):
    x = 1
    while 1:
        yield n*x
        x += 1

와 같은 함수를 만드는 것도 가능하다. 함수를 호출하고 나서도 함수가 완전히 끝나기 전까지는 지역 변수가 남아있으며, 함수가 끝나야 지역변수가 삭제된다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.