파이썬

위키百科, 우리 모두의 百科事典.

파이썬
Python
패러다임 프로그래밍 패러다임 : 客體 志向 프로그래밍 , 命令形 프로그래밍 , 函數兄 프로그래밍 , 節次的 프로그래밍 , 反映
設計者 귀도 半 로섬
開發者 파이썬 소프트웨어 財團
發表日 1991年 2月 20日
最近 버전 3.12.3 [1]   위키데이터에서 편집하기
最近 버전 出市日 2024年 4月 9日 (42日 前) ( 2024年 4月 9日 )
라이선스 파이썬 소프트웨어 財團 라이선스
파일 擴張字 .py, .pyc, .pyd, .pyo
웹사이트 www .python .org
主要 具現體
C파이썬 , IronPython , 자이썬 , 마이크로파이썬 , 累바 , PyPy , 스택이스 파이썬
사이썬 , R파이썬
影響을 받은 言語
ABC , 알골 68 , C , C++ , 딜란 , 하스켈 , 아이콘 , 자바 , 리스프 , 모듈라-3 ,
影響을 준 言語
, 코브라 , 커피스크립트 , D , F# , 팰컨 , 제니 , Go , 그루비 , 자바스크립트 , 줄리아 , , 루비 , 스위프트

파이썬 [2] ( 英語 : Python )은 1991年 [3] 네덜란드系 소프트웨어 엔지니어 귀도 半 로섬 [4] 이 發表한 高級 프로그래밍 言語 로, ' 인터프리터 를 使用하는 客體志向 言語'이자 플랫폼 에 獨立的인, 動的 타이핑 (dynamically typed) 對話型 言語이다. 파이썬이라는 이름은 貴道가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다. 이름에서 古代神話에 나오는 커다란 뱀 을 聯想하는 境遇도 있겠지만 이와는 無關하다. 다만 로고에는 뱀 두마리가 形象化되어 있다. 簡潔하고 읽기 쉬운 文法이 特徵인 프로그래밍 言語 데이터 分析 , 웹 開發 , 人工知能 等 多樣한 分野에서 活用된다.

파이썬은 非營利의 파이썬 소프트웨어 財團 이 管理하는 開放型, 共同體 基盤 開發 모델을 가지고 있다.

槪要 [ 編輯 ]

파이썬을 考案한 귀도 半 로섬

파이썬은 初步者부터 專門家까지 使用者層을 保有하고 있다. 動的 타이핑 (dynamic typing) 汎用 프로그래밍 言語 로, 루비 와 자주 比較된다. 多樣한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 豐富하여, 大學 을 비롯한 여러 敎育 機關, 硏究 機關 및 産業界에서 利用이 增加하고 있다. 또 파이썬은 純粹한 프로그램 言語로서의 機能 外에도 다른 言語로 쓰인 모듈들을 連結하는 接着劑 言語 로써 자주 利用된다. 實際 파이썬은 많은 常用 應用 프로그램에서 스크립트 言語 로 採用되고 있다. 도움말 文書도 整理가 잘 되어 있으며, 유니코드 文字列을 支援해서 다양한 言語의 文字 處理에도 能하다.

構文이 强調 된 파이썬 코드 예제

파이썬은 基本的으로 解釋機(인터프리터) 위에서 實行될 것을 念頭에 두고 設計되었다.

  • 主要 特徵
    • 動的 타이핑 (dynamic typing). ( 實行 時間 에 資料型을 檢査한다.)
    • 客體 의 멤버에 無制限으로 接近할 수 있다. (屬性이나 專用의 메서드 훅을 만들어 制限할 수는 있음.)
    • 모듈, 클래스, 客體와 같은 言語의 要素가 內部에서 接近할 수 있고, 리플렉션을 利用한 技術을 쓸 수 있다.
  • 解釋 프로그램의 種類
    • Cython : C로 作成된 인터프리터.
    • 스택리스 파이썬 : C 스택을 使用하지 않는 인터프리터.
    • 자이썬 : 자바 假想 머신用 인터프리터. 過去에는 第이파이썬(JPython)이라고 불렸다.
    • IronPython : .NET 플랫폼龍 인터프리터.
    • PyPy : 파이썬으로 作成된 파이썬 인터프리터.

現代의 파이썬은 如前히 인터프리터 言語처럼 動作하나 使用者가 모르는 사이에 스스로 파이썬 소스 코드를 컴파일하여 바이트 코드(Byte code)를 만들어 냄으로써 다음에 遂行할 때에는 빠른 速度를 보여 준다.

파이썬에서는 들여쓰기 를 使用해서 블록을 區分하는 獨特한 文法을 採用하고 있다. 이 文法은 파이썬에 익숙한 使用者나 旣存 프로그래밍 言語에서 들여쓰기의 重要性을 높이 評價하는 使用者에게는 잘 받아들여지고 있지만, 다른 言語의 使用者에게서는 프로그래머의 코딩 스타일을 制限한다는 批判도 많다. 이 밖에도 實行 時間에서뿐 아니라 네이티브 李瑱 파일을 만들어 주는 C / C++ 等의 言語에 비해 遂行 速度가 느리다는 短點이 있다. 그러나 事業 分野 等 一般的인 컴퓨터 應用 環境에서는 速度가 그리 重要하지 않고, 빠른 速度를 요하는 프로그램의 境遇에도 프로토타이핑한 뒤 빠른 速度가 必要한 部分만 골라서 C 言語 等으로 모듈化할 수 있다( ctypes , SWIG , SIP 等의 래퍼 生成 프로그램들이 많이 있다). 또한 Pyrex , Psyco , NumPy 等을 利用하면 數値를 빠르게 演算할 수 있기 때문에 科學, 工學 分野에서도 많이 利用되고 있다. 漸次的인 重要性의 强調로 大韓民國에서도 漸次 그 活用度가 커지고 있다. [5]

歷史 [ 編輯 ]

파이썬은 1980年代 末 考案되어 네덜란드 CWI의 귀도 半 로섬이 1989年 12月 具現하기 始作하였다. 이는 亦是 SETL에서 靈感을 받은 ABC 言語의 後繼로서 例外 處理가 可能하고, 아메바 OS와 聯動이 可能하였다. 半 路섬은 파이썬의 主 著者로 繼續 中心的 役割을 맡아 파이썬의 方向을 決定하여, 파이썬 共同體로부터 '慈善 終身 理事'의 稱號를 附與받았다. 이 같은 例로는 리눅스의 리누스 토발즈 等이 있다.

파이썬 2 [ 編輯 ]

파이썬 2.0은 2000年 10月 16日 配布되었고, 많은 機能이 追加되었다. 그中 全面的인 쓰레기 收集期 (GC, Garbage Collector)搭載와 유니코드 智圓이 特徵的이다. 그러나 가장 重要한 變化는 開發 節次 그 自體로, 더 透明하고 共同體 支援을 받는 形態가 되었다.

2020年 1月 1日附로 파이썬 2의 支援이 終了되었다. [6] [7]

파이썬 3 [ 編輯 ]

파이썬3000(或은 파이썬3k)이라는 코드名을 지닌 파이썬의 3.0버전의 最終판이 긴 테스트를 거쳐 2008年 12月 3日子로 發表되었다. 2.x臺 버전의 파이썬과 下位互換性이 없다는 것이 가장 큰 特徵이다. 파이썬 3의 主要 機能 多數가 以前 버전과 互換되게 2.6과 2.7 버전에도 反映되기도 하였다.

파이썬 公式 文書에서는 "파이썬 2.x는 레거시(낡은 技術)이고, 파이썬 3.x가 파이썬의 現在와 未來가 될 것"이라고 要約을 했는데, 처음 배우는 프로그래머들은 파이썬 3으로 始作하는 것을 勸奬하고 있다. [8]

2.x臺 버전 과의 差異를 簡略히 要約하면 다음과 같다.

  • 事前型과 文字列型과 같은 內藏資料兄의 內部的인 變化 및 一部 求刑의 構成 要素 除去.
  • 標準 라이브러리 再配置.
  • 向上된 유니코드 支援. (2.x에서는 유니코드를 表現하기 위해 u"文字列" 처럼 유니코드 리터럴을 使用했지만 3.0부터는 모든 文字列이 유니코드이기 때문에 "文字列" 처럼 表現하면 된다.) [9]
  • 한글 變數 使用 可能.
  • print 命令文이 print() 函數로 바뀌게 되었다.

人氣 [ 編輯 ]

파이썬이 자바 를 넘어서 美 大學生들에게 프로그래밍 및 컴퓨터 工學 入門用으로 가장 널리 活用되고 있는 것으로 調査됐다고 ACM 이 밝혔다. 이 機關에 따르면 上位 10 컴퓨터 工學 部門 中 8곳이, 上位 39 學校 中 27곳이 코딩 敎育을 위해 파이썬을 利用하고 있었다.

機能과 哲學 [ 編輯 ]

파이썬은 多樣한 프로그래밍 패러다임 을 支援하는 言語이다. 客體 志向 프로그래밍 構造的 프로그래밍 을 完璧하게 支援하며 函數兄 프로그래밍 , 觀點 志向 프로그래밍 等도 主要 機能에서 支援 된다.

파이썬의 核心 哲學은

  • "아름다운 게 醜한 것보다 낫다." (Beautiful is better than ugly)
  • "明示的인 것이 暗示的인 것 보다 낫다." (Explicit is better than implicit)
  • "單純함이 복잡함보다 낫다." (Simple is better than complex)
  • "複雜함이 難解한 것보다 낫다." (Complex is better than complicated)
  • "可讀性은 重要하다." (Readability counts)

와 같이 PEP 20 文書에 잘 整理되어 있다. [10]

파이썬은 言語의 核心에 모든 機能을 넣는 代身, 使用者가 언제나 必要로 하는 最小限의 機能만을 使用하면서 擴張해나갈 수 있도록 디자인되었다. 이것은 TIMTOWTDI ( there's more than one way to do it - '問題를 解決하는 方法은 單 한 가지가 아니다') 哲學과는 對照的인 것이며, 파이썬에서는 다른 使用者가 썼더라도 同一한 일을 하는 프로그램은 大體로 모두 비슷한 코드로 收斂한다. 라이브러리는 基本 機能에 없는 많은 機能을 提供한다.

또, 파이썬에서는 프로그램의 文書化가 매우 重視되고 있어 言語의 基本 機能에 包含되어 있다. 파이썬은 元來 敎育用으로 設計되었기 때문에 읽기 쉽고, 그래서 效率的인 코드를 되도록 簡單하게 쓸 수 있도록 하려는 哲學이 구석 구석까지 浸透해 있어, 파이썬 커뮤니티에서도 알기 쉬운 코드를 選好하는 傾向이 强하다.

라이브러리 [ 編輯 ]

파이썬에는 「乾電池 包含("Battery Included")」이란 基本 槪念이 있어, 프로그래머가 바로 使用할 수 있는 라이브러리와 統合 環境이 이미 配布版과 함께 提供된다. 이로써 파이썬의 標準 라이브러리는 매우 忠實하다. 여기에는 正規 表現式 을 비롯해 運營 體制의 시스템 呼出이나 XML 處理, 直列火, HTTP ,FTP 等의 各種 通信 프로토콜, 電子 메일이나 CSV 파일의 處理, 데이터베이스 接續, 그래픽 使用者 인터페이스, HTML, 파이썬 코드 構文 分析 道具 等을 包含한다.

서드파티 라이브러리度 豐富하며, 行列 演算 패키지 넘피(NumPy)이나 이미지 處理를 위한 필로우(Pillow), SDL 래퍼인 파이게임(PyGame), HTML/XML 파싱 라이브러리人 뷰티풀수프(Beautiful Soup) 等은 잘 알려져 있다. 다만, 가장 낮은 水準의 라이브러리까지 包含하면 너무 많아서 堪當하기 쉽지 않으므로, 最近 파이썬 패키지 인덱스, 곧 PyPI (Python Packages Index)로 불리는 라이브러리의 貯藏所(repository)를 管理하는 公式 器具를 새롭게 導入하게 되었다. 2018年 1月 基準으로 파이썬 패키지 인덱스는 125,762 個의 다양한 機能을 가진 패키지를 管理하고 있다.

文法 [ 編輯 ]

파이썬의 文法에서 가장 잘 알려진 特徵은 들여쓰기를 利用한 블록 構造를 들 수 있다. 이것은 普通 C 等에서 쓰이는 括弧를 利用한 블록 構造를 代身한 것으로 줄마다 처음 오는 空白으로 눈에 보이는 블록 構造가 論理的인 制御 構造와 一致하게 하는 方式이다. 아래는 C와 파이썬으로 再歸 呼出을 使用한 繼承 을 計算하는 函數를 定義한 것이다.

파이썬
 def
 factorial
(
x
):

     if
 x
 ==
 0
:

         return
 1

     else
:

         return
 x
 *
 factorial
(
x
 -
 1
)

들여쓰기가 잘 된 C
 int
 factorial
(
int
 x
)
 {

     if
(
x
 ==
 0
)
     {

         return
 1
;

     }

     else
     {

         return
 x
 *
 factorial
(
x
 -
 1
);

     }

 }

이렇게 比較해 보면 파이썬과 "整理되어 들여쓰기가 된" C 言語와는 差異가 거의 없어 보인다. 그러나 여기서 重要한 것은 위쪽의 C 形式은 可能한 여러 스타일 가운데 하나일 뿐이라는 事實이다.

卽, C로는 똑같은 構文을 다음과 같이 쓸 수도 있다.

읽기 어렵게 쓰인 C
 int
 factorial
(
int
 x
)
 {

  if
(
x
 ==
 0
)
 {
return
 1
;}
 else

  {
return
 x
 *
 factorial
(
x
 -
 1
);
 }
 }

파이썬으로는 이렇게 쓰는 것을 許容하지 않는다. 파이썬에서 들여쓰기는 한 가지 스타일이 아니라 必須的인 文法에 屬한다. 파이썬의 이러한 嚴格한 스타일 制限은 쓰는 사람에 關係 없이 統一性을 維持하게 하며, 그 結果 可讀性이 向上될 수 있는 長點이 있지만 다른 한便으로는 프로그램을 쓰는 스타일을 選擇할 自由를 制約하는 것이란 意見도 있다.

C와 다르지만 아래와 같이 줄바꿈을 하지 않고 使用할 수도 있다.

다음과 같이 한줄로 作成하여 表現하는 것을 'pythonic 하다'라고 말할 수 있다.

def
 factorial
(
x
):

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

資料型 [ 編輯 ]

파이썬은 다음과 같은 資料型들을 갖고 있다.

  • 基本 資料型:
    • 정수형
    • 긴 정수형(long integer) - 메모리가 許諾하는 한 無制限의 자릿數로 精髓를 計算할 수 있다. 파이썬 3 버전에서는 사라지고, 代身 整數形의 範圍가 無制限으로 늘어났다.
    • 浮動小數點
    • 複素數
    • 文字形
    • 유니코드 文字形
    • 函數
    • 論理型(boolean)
  • 集合型 資料型:
    • 리스트型 - 內部의 값을 나중에 바꿀 수 있다.
    • 튜플(tuple)型 - 한 番 값을 定하면 內部의 값을 바꿀 수 없다.
    • 社典型 - 內部의 값을 나중에 바꿀 수 있다.
    • 集合型 - 重複을 許諾하지 않는다. 變更 可能하게도, 變更 不可能하게도 만들 수 있다.

또 많은 客體 志向 言語와 같이, 使用者가 새롭게 自身의 兄을 定義할 수도 있다.

파이썬은 動的 타이핑 의 一種인 德 타이핑 을 使用하는 言語이기 때문에, 變數가 아닌 값이 타입을 가지고 있고, 變數는 모두 값의 參照( C++ 의 參照)이다.

파이썬 3의 內臟 資料型 要約
種類 說明 文法 예
int 이뮤터블 (immutable) 精髓 로서 크기는 無制限. 42
float 이뮤터블(immutable) 浮動小數點 수 (시스템 정의 精密度). 3.14159265358979
complex 이뮤터블(immutable) 複素數 . (失手와 虛數) 3+2.7j
bool 이뮤터블(immutable) 眞理값 . (불린) True
False
str 이뮤터블 (immutable) 文字列 : 一連의 유니코드 코드포인트. 'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines"""
bytes 이뮤터블(immutable) 一連의 바이트 . b'Some ASCII'
b"Some ASCII"
bytes([119, 105, 107, 105])
bytearray 뮤터블(mutable) 一連의 바이트 . bytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
list 뮤터블(mutable) 目錄, 리스트 .

混合 形態를 包含할 수 있다.

[4.0, 'string', True]
tuple 이뮤터블(immutable) (不變) 目錄.

混合 形態를 包含할 수 있다.

(4.0, 'string', True)
set ,

frozenset

뮤터블(mutable),

이뮤터블(immutable).

順序가 定해지지 않은

集合. 重複 許容 안 函.

{4.0, 'string', True}
frozenset([4.0, 'string', True])
dict 뮤터블(mutable) 聯關 配列 目錄 . (키와 값 目錄) {key1: value1, key2: value2}

動作하는 플랫폼 [ 編輯 ]

첫 파이썬 버전은 매킨토시 에서 使用할 目的으로 開發되었지만, 只今은 다양한 플랫폼에서 動作한다. 하지만 안드로이드 / iOS 에서는 動作하지 않는다.

또한 動作이 되도록 만들 可能性도 적어보인다.

한글 다루기 [ 編輯 ]

元來 파이썬은 美國 地域에서 開發되었기 때문에 한글이나 漢字와 같은 2바이트 文字를 支援하지 않았다. 그러나 파이썬 2.0에서 유니코드 文字形을 새로 導入하여 여러 나라의 言語를 다룰 수 있게 되었다. 다른 스크립트 言語와 달리 파이썬에서는 文字의 인코딩과 內部 유니코드 表現을 明確하게 區別한다. 유니코드 文字는 메모리 에 貯藏되는 抽象的인 個體이다. 畵面에 나타내거나 파일 入出力을 할 때는 變換 코덱 의 힘을 빌려서 特定 인코딩으로 變換한다. 또, 소스 코드의 文字 코드를 認識하는 機能이 있어, 다른 文字 코드로 쓰여진 프로그램의 動作이 달라질 危險을 줄여 준다. 파이썬 2.4에서는 韓中日 코덱이 標準으로 配布版에 包含되었으므로 이제 한글 處理에 問題는 거의 없다. 例를 들어 윈도우 판의 IDLE에서 한글 入出力을 잘 支援한다.

使用 現況 [ 編輯 ]

파이썬은 많은 製品이나 企業 및 硏究機關에서 쓰이고 있다. 代表的인 몇 가지는 다음과 같다.

파이썬으로 作成된 自由-오픈 소스 소프트웨어 [ 編輯 ]

파이썬을 內部的으로 使用하는 소프트웨어 [ 編輯 ]

  • softimage|xsi (3D 애니메이션 소프트웨어)
  • 잉크스케이프 (Inkscape)
  • 페인트샵 프로 (Paint Shop Pro)
  • 文明 IV
  • 셰이드(Shade)
  • TRIBON (3D CAD 소프트웨어)
  • 오토데스크 摩耶 (3D 애니메이션 소프트웨어)
  • MotionBuilder (3D 애니메이션 소프트웨어)
  • Softimage (3D 애니메이션 소프트웨어)
  • Cinema 4D (3D 애니메이션 소프트웨어)
  • BodyPaint 3D (3D 애니메이션 소프트웨어)
  • Blender 3D (3D 애니메이션 소프트웨어)
  • Sidefx Houdini (3D 애니메이션 소프트웨어)
  • Abaqus (有限要素解釋 소프트웨어)
  • TORRENT (共有프로그램)
  • Rhino 3D CAD (3D 모델링 소프트웨어)
  • 카카오톡 (모바일/PC 메신저)
  • MODO 3D (3D 모델링 소프트웨어)

파이썬을 利用하고 있는 企業·政府 機關 [ 編輯 ]

實行 速度 向上 關聯 [ 編輯 ]

IDE 目錄 [ 編輯 ]

批評 [ 編輯 ]

파이썬은 들여쓰기에 對해 批評을 받아왔는데, 파이썬의 들여쓰기는 非正規的이고 自動化가 不可能하다. [11] 또, 空白의 量에 따라 워드의 意味가 바뀔 수 있다. 들여쓰기에만 依支할 境遇 潛在的으로 危險해질 수도 있는데, 感知하지 못하는 論理的인 버그를 만들어낼 수 있기 때문이다. [12]

빌드 [ 編輯 ]

파이썬은 汎用 빌드 시스템 크로스 플랫폼 의 應用소프트웨어를 위한 훌륭한 資源으로 使用하는데 많은 컴퓨터 엔지니어들은 파이썬의 持續的인 發展에서 이를 매우 肯定的으로 받아들이고 있다. 이러한 持續的인 影響力은 파이썬이 여러 컴퓨터科學 分野에서 文法의 普遍的인 可讀性과 모듈의 分離 및 再結合의 容易性 等 그 活用面에서 應用의 廣範圍한 可能性을 示唆한다고 볼 수 있다. [13] [14] [15]

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. “Python 3.12.3 and 3.13.0a6 released” (英語). 2024年 4月 9日 . 2024年 4月 9日에 確認함 .  
  2. 外來語 表記法 에 따르면 Python은 英語를 基準으로 할 때 한글로 '파이線'으로 적어야 하나, 正式으로 採擇된 한글 表記는 파이썬 이다. [ 出處 必要 ]
  3. “「Python History」, Python Foundation” . 2016年 2月 17日에 原本 文書 에서 保存된 文書 . 2008年 1月 14日에 確認함 .  
  4. 韓國語 表記에 對해서는 귀도 半 로섬#表記 參考
  5. TIOBE 프로그래밍 커뮤니티 인덱스 TIOBE Programming Community Index (Monthly) 에 따르면 파이썬은 C , 자바 , 오브젝티브-C , C++ , PHP , C# , 비주얼 베이직 에 이어 大略 8番째로 많은 關心을 받는 言語로 알려져 있다.
  6. “Update Python 2.7 EOL date #344” .  
  7. “Python 2.7 Countdown” .  
  8. “Python2orPython3 - Python Wiki” . 2018年 1月 4日에 確認함 .  
  9. “What’s New In Python 3.0 ? Python 3.6.4 documentation” . 2018年 1月 4日에 確認함 .  
  10. “PEP 20 -- The Zen of Python” (英語) . 2018年 1月 4日에 確認함 .  
  11. “Syntax Design: Python's Indentation vs Nesting” . 2015年 11月 18日 . 2017年 7月 10日에 確認함 .  
  12. “How Coding in Python Might Be Bad For You” . lenkaspace.net. 2016年 10月 4日 . 2017年 7月 10日에 確認함 .  
  13. [참고](The Incredible Growth of Python ,David Robinson , September 6, 2017 ) https://stackoverflow.blog/2017/09/06/incredible-growth-python/
  14. [참고](PEP 453 -- Explicit bootstrapping of pip in Python installations) https://www.python.org/dev/peps/pep-0453/
  15. [참고](PEP 518 -- Specifying Minimum Build System Requirements for Python Projects) https://www.python.org/dev/peps/pep-0518/

外部 링크 [ 編輯 ]