먼저 Apache와 php를 다운로드한다.


자세한 내용은 Windows에서 Apache 2.4.X 와 PHP 5.6.X 설치


위의 내용은 apache와 2.4 버전과 php 5.6버전 설치의 예입니다.


1. eclipse 상위 텝에서 [Window] -> [Preferences] 클릭.




2. PHP Servers 설정.


 [PHP] -> [Servers] 클릭후 오른쪽의 new 버튼을 클릭합니다.

 [PHP]가 없다면 eclipse 상위 tap => [Help] => [Eclipse Marketplace] => find : PHP Development Tools 검색후  install



3. PHP Servers 설정.


   New Server창이 뜨면 

   Name : php

   Base Url : http://localhost

   Local Web Root : C:\Apache24\htdocs   입력합니다.


저는 등록이 되어있기 때문에 Edit Server창이 떴습니다.



4. PHP Excutables설정.


동일 [Preferences]의 PHP Excutables를 클립하고 add 버튼을 누릅니다.


Name : php

Executable path : C:\php56\php.exe

PHP ini file (optional) : C:\php56\php.ini


ok하려는데 Zend Debugger extension is not installed. Error Zend Debugger가 설치되어있지 않다고 나옵니다.

저는 Xdebug를 설치 하겠습니다.





5. Xdebug Debugger 설치.


1. Xdebug 홈페이지

2. 저는 64비트 php56버전이라 

PHP 5.6 VC11 TS (64 bit) (SHA256: 8ac0b0e148e437abcf9acf2baf0b40b356cb1a248c53807a5b956e7f8c5acc68) 을 다운 받았습니다.




3. 다운로드 후, [C:\php56] php56버전이 있는 폴더에  php_xdebug-2.5.5-5.6-vc11-x86_64.dll파일 이동

4. C:\Windows\php.ini 파일을 열고 


파일 가장 밑에 추가

 

[XDebug]

zend_extension = "C:\php56\php_xdebug-2.5.5-5.6-vc11-x86_64.dll"

xdebug.profiler_append = 0

xdebug.profiler_enable = 1

xdebug.profiler_enable_trigger = 0

xdebug.profiler_output_dir = "C:\php56\tmp"

xdebug.profiler_output_name = "cachegrind.out.%t-%s"

xdebug.remote_enable = 1

xdebug.remote_handler = "dbgp"

xdebug.remote_host = "127.0.0.1"

xdebug.trace_output_dir = "C:\php56\tmp"

xdebug.remote_autostart=on

xdebug.remote_enable=on

xdebug.remote_connect_back=1

xdebug.remote_port=9000

xdebug.remote_mode=req

xdebug.idekey="netbeans-xdebug"


6. apache 재시작


1.cmd 관리자 권한으로 실행


2. apache stop


c:\> C:\Apache24\bin\httpd.exe -k stop


3. apache start


c:\> C:\Apache24\bin\httpd.exe -k start



7. PHP Executable 설정완료.




8. PHP project 생성.


1. PHP Explorer 텝에서 오른쪽 버튼 => [New] => [Other] => 검색창에 : [php project] 

2. 밑에 사진과 같이 입력 후 Finish

3. 완료.







'eclipse' 카테고리의 다른 글

eclipse에서 콘솔 버퍼 사이즈 늘리기  (0) 2017.09.09
이클립스[eclipse] utf-8 설정  (0) 2017.09.09

윈도우용 apache 2.4 버전을 설치 하려고 한다.


우선 윈도우용 apache 2.4 버전은


http://www.apachelounge.com/download/


위 경로에서 다운로드 받을수 있다.



아파치 2.0.X 와 2.2.X 버전도 테스트 용으로는 크게 무리가 없지만.


PHP 5.6 버전을 사용하기 위해서는 아파치 2.4를 설치해야 하는듯 하다.


apache 2.2 버전은  phpo 5.4 버전 까지만 지원하는듯 하다.


물론 리눅스는 아닌것 같고 윈도우 버전에서만 그런듯 하다.



한 3일 고생해서 겨우 겨우 깔았다.. 아이고 힘들다...


우선 기본 적으로


Aapche 2.2 와 PHP 5.3 버전의 경우는 윈도우용 설치 파일인 .msi 파일이 존재하여


쉽게 설치할수 있다.


그러나


그 이후 버전부터는 .msi 파일을 지원하지 않는다..


내가 최종적으로 사용한 버전이 딱 저거였다.. 그러니...


PHP 5.6을 사용하려고 용쓰는 작업을 여기에 적어 두기로 한다.


결론부터 말하면


PHP 5.6은 위에서도 말했다 싶이... Apache 2.4 가 아니면 윈도우용은 설치되지 않는다.



자 시작합니다.


http://www.apachelounge.com/download/


위 사이트에서 원하는 Apache 2.4 버전을 다운로드 합니다.


위 사이트 왼쪽 화면에 보시면


VC14, VC11, VC9 등이 표시되어 있습니다.


아파치나, PHP, 등이 비쥬얼C로 만들어지다보니.. 런타임 프로그램이 필요합니다.


이때 필요한 런타임 버전을 표한건데요...


VC11이 무난할듯 합니다.(쓸만한 PHP는 거의 대부분 VC11 인것 같습니다.)


저는 윈도우 32비트 버전으로 다운로드 받겠습니다.


32라고 적힌것 또는 X86 이라고 된것은 32비트 버전이구요.

(php 에서는 Win32 x86이라고 적혀 있습니다.)

(X86은 32비트 64비트 구분이 아닌 다른 의미로 사용될때도 있습니다.)


64라고 적힌건 64비트 버전입니다.


관례 같은거니깐 암기해 두면 좋겠죠? 32비트 버전은 586 이렇게 표기하는 경우도 있습니다.




http://www.apachelounge.com/download/VC11/binaries/httpd-2.4.12-win32-VC11.zip


위 주소에서 다운로드 받으면 됩니다.(오늘자 최신 안정버전 기준)



그리고 위에서 말한 런타임은


http://www.microsoft.com/en-us/download/details.aspx?id=30679



위 주소에서 다운로드 하자 비쥬얼C 2012 런타임이다.(VC11 입니다.)


우선 런타임을 다운로드 받아서 먼저 설치한뒤.




http://www.apachelounge.com/download/VC11/binaries/httpd-2.4.12-win32-VC11.zip


위 주소에서 다운로드 받은 Apahce 2.4 버전의 압축을 풉니다.


압축을 풀어서 들어가보면


Apahce24 라는 기본 폴더가 있을껍니다.(제가 다운받은 버전은 안에 폴더가 있었습니다.)


이걸


C:\ 디렉토리도 복사를 합니다


결론은


C:\Apache24 라는 폴더가 생기는 거죠


윈도우 버전은 저 기본 폴더를 사용하는듯합니다.


자 그럼 설치해 볼까요.


윈도우7의 로고 버튼을 누르고


프로그램 및 파일 검색 란에


CMD라고 입력만 하고 대기 합니다.(입력만 하고 대기 하세요.. 자동으로 찾아 줍니다.)


그럼 자동으로 프로그램을 찾아 줄껍니다.


여기서 바로 엔터키 치지 마시고 기달리면


상단에


프로그램(1)

CMD 라고 나타나는데 여기서 CMD 위에 마우스를 살짝 올리시고


마우스 오른쪽 버튼을 누르시면 관리자 권한으로 실행이 나옵니다.


네 관리자 권한으로 실행을 해주셔야 합니다


그런다음


cd C:\Apache24\bin 이라고 입력하셔서 bin 디렉토리로 이동한 다음


httpd.exe -k install 이라고 입력하면


자동으로 인스톨(설치)가 됩니다.


쉽죠?



아마도 오류 메세지 비슷한게 나올껍니다. 그냥 무시하셔도 됩니다.


서버네임이 없어서 그런 오류가 생기는 것인데.


C:\Apache24\conf\httpd.conf 파일을 열어서


#ServerName www.example.com:80 이라고 되어 있는 것의 앞의 #을 제거해 줍니다.


그리고


httpd.exe -k restart 해보시면 오류 메시지 없이 잘 작동할껍니다.

(이때로 관리자 권한으로 실행되어야 합니다. 앞서 cmd 창 닫으신분들은 다시 관리자 권한으로 실행하세요.)



네 아파치는 다 설치한 것입니다.


작동하는지 확인 하시려


익스플로서나 크롬 주소창에


localhost 라고 입력하시면


It's Work! 라는 화면을 만나실수 있습니다.



자 그럼 이제 PHP를 설치해 볼까요?


PHP도 마찬가지 입니다.


http://windows.php.net/download#php-5.6


위 사이트 주소에서 다운로드 받으면 됩니다.


여기서 다운로드 받으실때는 주의할께 VC11 앞서 설명드린것을 받으시길 권장드리구요.


그리고 하나더


Not Thread Safe 와 Thread Safe  두가지가 존재합니다.


그냥 Thread Safe 모드 받으시길 권장드리구요.

(좀더 자세한 내용은 검색해서 공부하셔도 됩니다만 머리 아프면 그냥 통과)


자 그럼 저는


http://windows.php.net/downloads/releases/php-5.6.10-Win32-VC11-x86.zip


위 주소에서 다운로드 받겠습니다.


다운로드 받아서 압축을 푼뒤


그 폴더 이름을 php56 이라고 변경하겠습니다.


그런다음


이걸 아파치와 같이


C:\php56 에 복사를 하도록 하겠습니다.(이동해도 되구요.)




자 그럼 Apache24와 연동해 볼까요?



여기서 잠깐!!!!!!!!!


앞서 Apache와 PHP를 사용하던 컴퓨터라면 앞서 인스톨 버전을 반드시 삭제 하셔야 합니다.


그리고 조금더 복잡해질수도 있습니다.(제가 그래서 엄청 해맸습니다. ㅠ.ㅠ)



자 그럼 앞서 인스톨이 되었던 안되었던 제거했다 치고 설명 드리겠습니다.


C:\Apache24\conf\httpd.conf 파일을 여세요.


ServerRoot "c:/Apache24"


위 문장을 확인하세요. 안고쳤다면 아마 저렇게 되어 있을 껍니다.


뜻은 저 디렉토리(폴더)에 깔아놨다 뭐 그런뜻입니다.


Listen 80


80번 포트를 기본 웹서버 포트로 하겠다는 뜻입니다.


저걸 만약 


Listen 8080 이렇게 고쳤다면 


익스플로러나 크롬에서(이후 웹브라우저라 통칭합니다.)


localhost:8080 이렇게 접속하시면 됩니다.


#ServerName www.example.com:80


이렇게 #으로 주석 처리된것을 #을 제거합니다.(앞서 설명 드렸습니다.)


DocumentRoot "c:/Apache24/htdocs"


위 부분을 찾으세요..


저건 html 이나 php 파일이 저곳에 있을꺼라는 뜻입니다. 유식하게 홈디렉토리라고 하구요


여러분들이 웹브라우저에서 localhost 라고치면


c:/Apache24/htdocs/index.html 파일이 보여 집니다.


현재로는 It's Work!라고 나오는 문서죠..



그리고



<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>


이렇게 된 문장을 찾으세요.


아무것도 입력안하면 기본적으로 보여질 파일명을 지정하는겁니다


위에 말씀 드린것처럼


localhost 라고면 쳐도


http://localhost/index.html 파일이 보이는 이유가 이겁니다.


근데 이걸


<IfModule dir_module>

    DirectoryIndex index.php index.html index.htm

</IfModule>


위와 같이 고쳐 두세요.


그럼 아무것도 없이


localhost 라고만 치면


제일 먼저 index.php 파일이 보여지구요. 혹시 그파일이 없다면


index.html 파일이 보여지구요. 그것도 없다면 index.htm 파일이 보여집니다.


잘 보시면 확장자가 php, html, htm으로 서로 다릅니다.



가능하면 꼭 위와같이 설정하세요. 그래야 index.php 파일이 잘 작동합니다.


나머지는 더 공부헤서 손보시기로 하구요.




제일 중요한 부분들 시작합니다.


AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz


위 두문장을 찾으세요.. 그런다음


AddType application/x-httpd-php .php .inc .bak .old .c


위 문장을 추가해 줍니다.


결론은


AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php .inc .bak .old .c


이렇게 만들라는 겁니다.


.php .inc .bak .old .c 파일은 php에서 해석해서 화면에 보여 주라는 뜻으로


Apache와 PHP를 연동하는 실제 구문입니다.



그리고 또 중요한 부분


지금 수정중인 httpd.conf 맨 마지막 줄에


#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

#PHPIniDir "C:\Program Files\PHP\"

#LoadModule php5_module "C:\Program Files\PHP\php5apache2_2.dll"

#PHPIniDir "C:\php54\"

#LoadModule php5_module "C:\php54\php5apache2_4.dll"

PHPIniDir "C:\php56\"

LoadModule php5_module "C:\php56\php5apache2_4.dll"

#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL


위 문장을 복사해서 넣으세요.


#으로 시작하는건 주석문인것 이제 아시죠?


보시는 바와 같이.


PHPIniDir "C:\php56\"

LoadModule php5_module "C:\php56\php5apache2_4.dll"


요 두줄만 작동하는데요..


php 버전을 바꾸실꺼면 주석처리 하시고 위에꺼 풀어풀어서 적절히 쓰시면 됩니다.


우리는 php 5.6 버전을 C:\php56에 풀었으니깐 저렇게 적는 겁니다.


자 이제 저장을 하겠습니다.


여기서 할일은 마무리 되었습니다.


그렇다고 연동이 끝난것은 아니구요.



이제 제가 삽질한 것은 여기서 부터 시작합니다.


우선


C:\php56\ 폴더로 이동하시면


php.ini 파일을 찾으셔야 합니다.


근데 없을 껍니다.


php.ini-development


php.ini-production


위 두파일이 존합니다.


이중 아무거나 사용하셔도 크게 문제는 없지만


우린 개발자니깐.. 테스트도 해야 하고 해서


개발자용인


php.ini-development 파일을 php.ini 파일로 변경합니다.( 이름바꾸기에서 -development 이글자를 지우라는 뜻입니다.)


자 그럼 파일을 열어 볼까요.


더블클릭하면 자동으로 안열리니깐.. 메모장에서 여시거나 연결프로그램을 메모장으로 지정하시면 되요.


자 이제 따라가면서 찾아 봅시다.


short_open_tag = Off 되어 있는 것을


short_open_tag = On 으로 변경합니다.


쇼트태그 사용하게 해주는게 정신 건강에 이롭습니다.


<?php


?> 


정식 태그아닌 

<? ?> 


이 쇼트 태그 사용 가능하게 해주는것


error_reporting


위 부분을 찾아서


error_reporting = E_ALL 이렇게 되어 있나 확인하세요.. 


모든 오류를 인정(?) 한다는 뜻입니다. 무시할만한 오류까지 싹 다 보겠다는 거지요.


display_errors  찾으셔셔


display_errors = On 되어 있는지 확인하세요.


모든 오류 메시지를 화면에 보여달라는 뜻입니다.


실 운용서버는 Off 하시는것이 바람직 할수도 있어요 오류 메시지 나올때 경로명이 나와서... 좀 지저분해 보일수도..


위에 모든 에러 다 보이게 해놨으니 미래에 없어질 함수같은것도 막 경고 해주면 귀찮을 수도 있으니 잘 선택하세요.


개발자라면 당연히 On 해서 개발합니다.


;extension_dir = "./" 라고 되어 있은 부분을 앞에 주석 ;(세미콜론) 을 제거하고


extension_dir = "C:\php56\ext"


위와 같이 적어 주세요..(php56은 우리가 설치한 경로 입니다. 딴데 설치 했다면 다르게 적으세요.)


(이거 안하면 엄청 골때립니다. 주의 하세요.)




;extension=php_bz2.dll

;extension=php_curl.dll

;extension=php_fileinfo.dll

;extension=php_gd2.dll

;extension=php_gettext.dll

;extension=php_gmp.dll

;extension=php_intl.dll

;extension=php_imap.dll

;extension=php_interbase.dll

;extension=php_ldap.dll

;extension=php_mbstring.dll

;extension=php_exif.dll      ; Must be after mbstring as it depends on it

;extension=php_mysql.dll

;extension=php_mysqli.dll

;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client

;extension=php_openssl.dll

;extension=php_pdo_firebird.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

;extension=php_pdo_sqlite.dll

;extension=php_pgsql.dll

;extension=php_pspell.dll

;extension=php_shmop.dll


위 문장을 찾아서.. 모두 주석을 제거하거나....


필요한 것만 주석을 제거하세요( ; <-- 세미콜론 제거)


저는 보통 


extension=php_bz2.dll

extension=php_curl.dll

extension=php_fileinfo.dll

extension=php_gd2.dll

extension=php_gettext.dll

extension=php_gmp.dll

extension=php_intl.dll

extension=php_imap.dll

extension=php_interbase.dll

extension=php_ldap.dll

extension=php_mbstring.dll

extension=php_exif.dll      ; Must be after mbstring as it depends on it

extension=php_mysql.dll

extension=php_mysqli.dll

extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client

extension=php_openssl.dll

;extension=php_pdo_firebird.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

;extension=php_pdo_sqlite.dll

;extension=php_pgsql.dll

;extension=php_pspell.dll

extension=php_shmop.dll


이정도 합니다. ㅎㅎㅎ



골치 아프면 다 푸는게 상책이죠, 모든 파일이 로드되면 컴에 이익이 될껀 없지만 


그렇다고 컴이 망가지거나 하는건 안니깐...


궁금하시면 공부해서 하나씩 설정하세요.

(지면 관계 및 지식이 짧아서 자세한 설명은 생략... 그래도 알만큼은 대충 알아요 ㅎㅎ)



그리고


;date.timezone =


윗 부분을 찾아서 주석을 제거하고


date.timezone = Asia/seoul


위와같이 아시아 서울을 추가해 줍니다.


영어 뜻과 같이 타임존인데요.. 저걸 안하면 php 5.3 이상부터는 시간 관련 함수 사용하면 워닝(?)이 나옵니다.


화면이 지저분해집니다.


꼭 설정하세요.



그외 나머지는 DB 관련 설명인데요... 그건


mysql 5 버전을 설치하면 달리 설정할 필요도 없이 기본적으로 포트 3306 에 맞추어져 있고 해서 별문제 없습니다.




자 그럼 php.in 파일을 저장합니다.


그런다음


cmd 명령을 입력한뒤 관리자 권한으로 실행


C:\Apache24\bin\httpd.exe -k restart


하면 될것 같지요?


안됩니다... 제가 여기서 또 삽질을 한것이...




저 php.ini 파일은 기본적으로


C:\windows\  디렉토리로 복사를 해주셔야 합니다.



aaa.jpg


그리고 앞서 아파치와 php를 설치한 적이 있다면


C:\windows\system32 폴더에까지 복사를 해주셔야 합니다.


aaa.jpg


보시는 그림과 같이


Configuration File(php.in) path가 기본적올 C:\Windows 로 잡혀 있습니다.


그래서 C:\windows 디렉토리에 복사를 해줍니다.


근데 그 밑에 보시면


Loaded Configuration File 라고 로드된 ini 파일 위치가 나오는데요.. 저게 처음 설치한거라면


C:\windows 라고 나오는데요


저같은 경우


Apache 2.2와 php 5.3을 .msi 파일로 설치한적이 있었는데...


뭐가 꼬였는지


Loaded Configuration File 부분에서 C:\windows\system32 라고 되어 있어서


제가 새로 설치한 php 5.6의 php.ini 파일이 안먹혔던 겁니다.


이걸로 3일을 고생했네요.


결론은... 처음 설치하는 분이면 그냥



C:\windows 디렉토리에 php.ini 파일을 복사하면 되구요.


처음이 아니신분은 가능하면


C:\windows\system32


저기도 한번더 복사를 해주시라는 겁니다.


근데 복사할때 오류가 나거나 하면 그건


현재 Apache 가 작동 중이라서 오류가 날수도 있습니다.


그러니깐


cmd 하셔서(당연히 관리자 권한입니다.)


C:\Apache24\bin\httpd.exe -k stop 하신뒤 (restart 하지마세죠. 가능하면.....)


C:\Apache24\bin\httpd.exe -k start 하시면 잘 될껍니다.


자 이제 연동이 끝났습니다.


이제

C:\Apache24\htdocs폴더에

index.php 파일 하나 만드시고


<?php

phpinfo();

?>


하신다음 저장하시고


웹 브라우저에


localhost 하고 쳐보시거나


혹시 모으니깐.....(중간에 설정을 빼먹고 하신분들을 위해서)


localhost/index.php 하시면 좀전에 위에 보신 그림 파일과 같이


보라 딩딩한 화면을 보실수 있을 껍니다.


혹시 안되시면 제글을 다시 차근 차근 읽어보세요..


그래도 안되시면 댓글 주시면 제 글이 잘못되거나 빠진거면 수정하도록 하겠습니다.


긴글 읽어 주셔서 감사합니다.



출처 : http://www.comcbt.com

'php' 카테고리의 다른 글

PHP 소개  (0) 2017.09.06
Centos에서 yum으로 php version 5.6 install 및 mysql 연동  (1) 2017.08.31

파이썬 (프로그래밍 언어)


파이썬은 A는 널리 사용되는 높은 수준의 프로그래밍 언어 를위한 범용 프로그래밍 에 의해 만들어진, 귀도 반 로섬 (Guido van Rossum) 과 처음은 1991 년에 출시 된 언어를 해석 , 파이썬 코드를 강조하는 디자인 철학이 가독성을 (특히 사용하여 공백 구분하는 들여 쓰기를 코드 블록을 오히려 중괄호 또는 키워드보다), 프로그래머가 C ++ 또는 Java 와 같은 언어에서 사용되는 것보다 적은 코드 행으로 개념을 표현할 수 있도록하는 구문이 있습니다 . [23] [24]이 언어는 작고 큰 규모로 분명한 프로그램을 작성할 수있는 구조를 제공합니다. [25]


파이썬은 동적 유형 시스템과 자동 메모리 관리 기능을 갖추고 있으며 객체 지향 , 명령형 , 함수형 프로그래밍 및 절차 스타일을 비롯한 여러 프로그래밍 패러다임을 지원 합니다. 크고 포괄적 인 표준 라이브러리가 있습니다. [26]


Python 인터프리터는 많은 운영 체제 에서 사용할 수 있으므로 Python 코드를 다양한 시스템에서 실행할 수 있습니다. 파이썬 의 레퍼런스 구현 인 CPython 은 오픈 소스 소프트웨어 이며 [27] 커뮤니티 기반의 개발 모델을 가지고있다. 거의 모든 변형 된 구현이 그러하다. CPython은 비영리 Python Software Foundation에서 관리 합니다.


역사 


파이썬은 1980 년대 후반에 생각되었다 [28] 과 그 구현은 1989 년 12 월 시작 [29] 에 의해 귀도 반 로섬 (Guido van Rossum) 에서 센트럼 Wiskunde 및 인포매티카 에서 (CWI) 네덜란드 받는 후계자로 ABC 언어 (자체에서 영감을 SETL ) [ 30] 가능한 예외 처리 및 운영 시스템과 인터페이스 아메바 . [6] Van Rossum은 Python의 주요 저자이며, Python의 방향을 결정할 때 그의 계속적인 중심 역할은 Python 공동체 인 Benevolent Dictator For Life (BDFL)에 의해 주어진 제목에 반영됩니다 .


Python의 기원에 대해 Van Rossum은 1996 년에 다음과 같이 썼다. [31]


" 6 년 전인 1989 년 12 월, 저는 크리스마스 주변의 주중에 저를 점령 할 수있는 "취미"프로그램을 찾고있었습니다. 내 사무실은 ... 폐쇄 될 것이지만, 나는 집에있는 컴퓨터를 가지고 있었고, 내 손에는별로 없었다. 필자는 최근에 생각해 보았던 새로운 스크립트 언어에 대한 통역사를 작성하기로 결정했습니다. ABC 의 자손 으로 Unix / C 해커 에게 호소합니다 . 필자는 프로젝트의 작업 제목으로 파이썬을 선택했다. 약간 불투명 한 기분 (그리고 Monty Python의 Flying Circus 팬 )이되었다. "

Python 2.0은 2000 년 10 월 16 일에 릴리스되었으며 주기 감지 가비지 컬렉터 와 유니 코드 지원을 포함하여 여러 가지 새로운 주요 기능이 추가 되었습니다 . 이 릴리스에서는 개발 프로세스가 변경되어보다 투명하고 커뮤니티 기반으로 변경되었습니다. [32]


파이썬 3.0, 주요, 이전 버전과 호환되지 않는 버전 (개발에서 그 초기 일반적 파이썬 3000 py3k로 불렸다) 12 월 3 일 2008 년 출시 된 [33] 테스트의 긴 기간 후. 주요 기능의 대부분은 한 백 포트 거꾸로 호환 파이썬의 2.6.x에 [34] 와 2.7.x 버전 시리즈.


Python 2.7의 수명 종료일 (EOL, 일몰 날짜)은 처음에 2015 년으로 설정되었고, 기존 코드의 많은 부분이 파이썬 3으로 쉽게 포팅 될 수 없다는 우려로 2020 년으로 연기되었습니다 . [35] 년 1 월 2017 년, 구글은하는 파이썬 2.7에 작품을 발표 이동 transcompiler , 기록기는 파이썬 2.7의 계획된 수명 종료에 대한 응답이었다 추측 [37] 그러나 구글이 유일한 동기 부여와 같은 동시 작업 부하 성능을 인용합니다. [38]


특징과 철학


파이썬은 인 다중 패러다임 프로그래밍 언어 : 객체 지향 프로그래밍 및 구조화 프로그래밍을 충분히 지원되며, 다양한 언어 기능 지원 함수형 프로그래밍 및 양태 지향 프로그래밍 (기준 포함한 메타 프로그래밍 [39] 과 metaobjects (매직 메써드)). [40] 계약을 통한 디자인 [41] [42] 과 논리 프로그래밍을 포함한 많은 다른 패러다임이 확장을 통해 지원 된다 . [43]


파이썬은 다이나믹 타이핑 과 참조 카운팅 과 메모리 관리를 위한 사이클 감지 가비지 컬렉터 의 혼합을 사용합니다 . 파이썬의 중요한 특징은 동적 이름 해석 ( 후기 바인딩 )입니다. 이것은 프로그램 실행 중에 메소드와 변수 이름을 바인드합니다.


파이썬의 디자인은 Lisp 전통 에서 함수형 프로그래밍 을 지원합니다 . 언어에는 ,, 및 기능이 있습니다. 목록 내포물 , 사전 및 세트; 및 발전기 표현. [44] 표준 라이브러리에는 하스켈 과 표준 ML 에서 빌린 기능적 도구를 구현하는 두 개의 모듈 (itertools와 functools)이 있습니다. [45]filter()map()reduce()


이 언어의 핵심 철학은 다음 과 같은 격언 을 포함 하는 Zen of Python ( PEP 20 ) 문서에 요약되어 있습니다 : [46]


못생긴 것보다 아름다운 것이 낫다.

암시 적보다 암시적인 것이 낫다.

단순함은 복잡한 것보다 낫다.

복잡한 것은 복잡한 것보다 낫다.

가독성 계산

Python은 원하는 모든 기능을 언어 핵심에 내장 할 필요없이 고도의 확장 성을 갖도록 설계되었습니다. Python은 프로그래밍 가능한 인터페이스가 필요한 기존 응용 프로그램에도 임베드 될 수 있습니다. 큰 표준 라이브러리와 쉽게 확장 할 수있는 통역사가있는이 작은 핵심 언어의 디자인은 처음부터 반 로섬 (Van Rossum) 이 반대 의도 를지지하는 ABC의 좌절로 인해 의도되었습니다 . [28]


코딩 방법론에서 선택의 여지를 제공하면서 파이썬 철학은 Perl 과 같은 거친 문법을 거부합니다 . 문법은 덜 깔끔하고 덜 복잡합니다. 으로 알렉스 마르텔리 넣어 : "있는 그대로 영리 것을 설명하려면 하지 파이썬 문화 칭찬 생각합니다." [47] Python의 철학은 Perl이 " 한 가지 이상 , 바람직하게는 한 가지 분명한 방법이 있어야합니다"라는 측면에서 언어 디자인에 대한 접근 방법이 여러 가지가 있음을 거부합니다 . [46]


Python의 개발자는 조기 최적화 를 피하려고 노력하며 , 또한 CPython의 중요하지 않은 부분에 대한 패치를 거부합니다. 이는 명확성을 희생시키면서 속도를 크게 향상시킵니다. [48] 속도가 중요한 경우, 파이썬 프로그래머는 C와 같은 언어로 작성된 확장 모듈에 시간이 중요한 기능을 이동하거나하여 시도 할 수 PyPy 하는 적시 컴파일러 . 파이썬 스크립트를 C로 변환하고 파이썬 인터프리터로 직접 C 레벨 API 호출을하는 Cython 도 사용할 수 있습니다.


Python 개발자의 중요한 목표는 재미있게 사용하는 것입니다. 이것은에서 오는 이름의 유래에 반영되어 몬티 파이 , [49] 및 스팸과 계란 대신 표준을 참조 예 사용하는 것과 자습서 및 참고 자료,에 가끔 장난 접근 방식에 foo에와 줄을 . [50 ]


Python 커뮤니티 의 일반적인 신조어 는 pythonic 이며 프로그램 스타일과 관련된 다양한 의미를 가질 수 있습니다. 그 코드가 파이썬이라고 말하는 것은 그것이 파이썬의 미니멀리스트 철학과 가독성에 중점을 둔다는 점에서 자연 스럽거나 언어에 유창하다는 것을 나타내는 파이썬 관용구를 잘 사용한다고 말할 수 있습니다. 대조적으로, 다른 프로그래밍 언어의 대략적인 전사처럼 이해하기 어렵거나 읽히는 코드를 unpythonic 이라고 합니다 .


파이썬 사용자, 특히 지식이 풍부하고 경험이 풍부한 사람들은 Pythonists , Pythonistas 및 Pythoneers 라고 불립니다 . [ 53]


구문과 의미 


파이썬은 매우 읽기 쉬운 언어입니다. 다른 언어에서 구두점을 사용하는 경우 영어 키워드를 사용하여 시각적 레이아웃을 정리할 수 있도록 설계되었습니다. 파이썬은 블록을 구분하기 위해 중괄호를 사용하지 않으며 많은 다른 프로그래밍 언어와 달리 세미콜론 after 문은 선택적입니다. 게다가, 파이썬은 C 나 파스칼 보다 구문 론적 예외와 특별한 경우가 적습니다 . [54]

들여 쓰기
주요 기사 : 파이썬 구문과 의미 § 들여 쓰기
파이썬은 공백 들여 쓰기를 사용하여 중괄호 나 키워드 대신 블록 을 구분 합니다. 들여 쓰기의 증가는 특정 진술 이후에옵니다. 들여 쓰기가 감소하면 현재 블록의 끝을 의미합니다. [55] 이 기능은 때로는 오프 사이드 규칙 이라고도합니다 .

문장 및 제어 흐름
파이썬의 진술 은 다음을 포함한다.

할당 문 (토큰 '=', 등호). 이것은 기존의 명령형 프로그래밍 언어와 다르게 작동 하며,이 기본 메커니즘 (Python 버전 변수 의 특성 포함 )은 언어의 다른 많은 기능을 조명합니다. 예를 들어, C의 지정은 x = 2"유형이 지정된 변수 이름 x가 숫자 값 2의 사본을 수신합니다"로 변환됩니다. (오른쪽) 값은 (왼쪽) 변수 이름 이 기호 주소 인 할당 된 저장 위치 에 복사됩니다 . 변수에 할당 된 메모리는 선언 된 유형에 대해 충분히 크다 . 동일한 예제를 사용하여 파이썬 할당의 가장 간단한 경우,x = 2, "(generic) name x는 숫자 2의 동적으로 할당 된 별도의 객체 (numeric (int) type of value 2 )에 대한 참조 를 받습니다 ." 이것은 이름을 오브젝트에 바인딩 하는 것입니다. 이름의 저장 위치 에는 표시된 값 이 없기 때문에 이름을 변수 로 부르는 것은 부적절 합니다 . 문자열, 프로 시저, 데이터 및 메서드가있는 복잡한 개체 등 다양한 유형의 개체에 언제든지 이름을 리바운드 할 수 있습니다. 예를 들어 여러 이름에 공통 값을 연속적으로 할당합니다 . ;x = 2y = 2z = 2결과적으로 저장 장치를 (최대) 3 개의 이름과 하나의 숫자 개체에 할당합니다.이 개체에는 세 개의 이름이 모두 바인딩됩니다. 이름은 일반 참조 홀더이므로 고정 데이터 유형 을 해당 참조 데이터 와 연결하는 것은 무리 입니다. 그러나 주어진 시간에 이름은 어떤 객체에 바인딩 될 것이다 . 따라서 동적 타이핑이 있습니다.
if조건과 함께, 코드 블록을 실행 문, else그리고 elif(다른-경우의 수축).
for반복 가능한 객체를 반복 하는 문으로, 첨부 된 블록에서 사용할 각 요소를 로컬 변수에 캡처합니다.
while만큼 그 조건이 참으로 코드 블록을 실행 문.
try의 연결 코드 블록에서 제기 예외를 잡아서 처리 할 수 있도록 문, except절; 또한 finally블록의 정리 방법에 관계없이 블록의 정리 코드 가 항상 실행되도록합니다.
classA를 로컬 네임 스페이스를 코드 블록을 실행하고 첨부 문, 클래스 에 사용하기 위해, 객체 지향 프로그래밍 .
def정의 문, 기능 또는 방법 .
with문 (A 획득, 예를 들어 컨텍스트 관리자 내에서 코드 블록을 둘러싸, (파이썬 2.5) 잠금 코드 블록이 실행되기 전에, 그 후 잠금을 해제하거나 열 파일을 허용 닫을 다음과) 자원 획득을 초기화 (RAII)와 유사한 동작입니다.
이 pass명령문은 NOP로 사용 됩니다. 빈 코드 블록을 작성하려면 구문 적으로 필요합니다.
assert디버깅하는 동안 사용 문, 조건을 확인하는 그 적용해야한다.
yieldA로부터 값을 돌려 문, 발전기 기능을. 파이썬 2.5에서, yield또한 연산자입니다. 이 양식은 코 루틴 을 구현하는 데 사용됩니다 .
import그 함수 또는 변수 현재 program.There에서 사용할 수있는 수입을 이용하는 두 가지 방법이 가져 오기 모듈에 사용되는 문. from <module name> import * 또는 import <module name>.
print문으로 변경 한 print()파이썬 3. 함수 [56]
파이썬은 꼬리 호출 최적화 또는 일류 지속을 지원하지 않으며 , Guido van Rossum에 따르면 결코 그렇지 않습니다 . [57] [58] 그러나 Python의 생성자 를 확장 하여 코 루틴 과 같은 기능을 더 잘 지원할 수 있습니다. [59] 2.5 전에 발전기이었다 지연 반복기 ; 정보가 발전기에서 단방향으로 전달되었습니다. 파이썬 2.5부터는 정보를 생성기 함수로 다시 전달할 수 있으며, 파이썬 3.3부터 정보는 여러 스택 레벨을 통과 할 수 있습니다. [60]

표현식
일부 Python 표현식 은 C 및 Java 와 같은 언어와 유사 하지만 일부는 그렇지 않습니다.

더하기, 빼기 및 곱셈은 동일하지만 나누기의 동작이 다릅니다. 파이썬은 **지수 연산을 추가했습니다 .
Python 3.5부터는 @연산자 와 직접적으로 행렬 곱셈을 지원합니다. C와 Java는 라이브러리 함수로이를 구현합니다. 이전 버전의 Python에서는 중위 연산자 대신 메서드를 사용했습니다. [61 ]
파이썬에서 ==값 수치를 비교 자바 비해, 비교 값 [63] 을 참조하여 물체. [64] (객체에 대한 자바에서의 값 비교는이 equals()메소드 로 수행 될 수있다 .) 파이썬의 is연산자는 객체 식별자를 비교하는 데 사용될 수있다 (참조에 의한 비교). 파이썬에서는 비교가 연결될 수 있습니다 a <= b <= c.
파이썬 단어를 사용 and, or, not의 부울 연산자보다는 상징적 위해 &&, ||, !자바와 C에 사용
파이썬에는 목록 이해 라는 표현 유형이 있습니다. 파이썬 2.4는 발전기 표현 이라고 불리는 좀 더 일반적인 표현으로리스트 명료화를 확장했다 . [44]
익명 함수 는 람다 식을 사용하여 구현됩니다 . 그러나 이것들은 몸이 하나의 표현 일 수 있다는 점에서 제한적이다.
파이썬의 조건식은 x if c else y[65] 와 같이 작성됩니다 (다른 c ? x : y많은 언어에서 공통적 인 연산자 와 피연산자 순서가 다릅니다 ).
파이썬은 목록 과 튜플을 구별 합니다 . 리스트는로 쓰여지고 [1, 2, 3]변경 가능하며 사전의 키로 사용할 수 없습니다 (사전 키는 Python에서 불변 이어야합니다 ). 터플은 (1, 2, 3)불변이므로 터플의 모든 요소가 불변 인 경우 사전의 키로 사용할 수 있습니다. 그러나 값은 __add __ (<다른 튜플>)을 사용하여 튜플에 추가 될 수 있습니다. 두 개의 튜플에 가입 할 수 있습니다. 간접적으로 우리는 튜플에 값을 추가 할 수 있습니다. 터플 주위의 괄호는 일부 상황에서는 선택 사항입니다. 튜플은 등호의 왼쪽에 나타날 수 있습니다. 따라서 같은 문을 x, y = y, x사용하여 두 변수를 교환 할 수 있습니다.
파이썬에는 "문자열 형식"연산자가 %있습니다. 이 함수 printf는 C의 형식 문자열 과 유사하게 작동합니다 ( 예 "spam=%s eggs=%d" % ("blah", 2):) "spam=blah eggs=2". 파이썬 3과 2.6+에서는 클래스 의 format()메소드를 보완했습니다. str예를 들어 "spam={0} eggs={1}".format("blah", 2)파이썬 3.6에 "f-strings"가 추가되었습니다 : f'spam={"blah"} eggs={2}'. [66]
파이썬에는 다양한 종류의 문자열 리터럴이 있습니다 .
문자열은 작은 따옴표 또는 큰 따옴표로 구분됩니다. Unix 셸 , Perl 및 Perl이 영향을주는 언어와 달리 작은 따옴표와 큰 따옴표는 동일하게 작동합니다. 두 종류의 문자열 모두 백 슬래시 ( \)를 이스케이프 문자 로 사용합니다 . 문자열 보간법 은 파이썬 3.6에서 "형식화 된 문자열 리터럴"로 사용 가능하게되었습니다. [66]
삼중 따옴표로 묶인 문자열로 일련의 세 개의 작은 따옴표 나 큰 따옴표로 시작하고 끝납니다. 그것들은 여러 줄에 걸쳐 있고 쉘, Perl, Ruby 에서이 문서 와 같은 기능을 합니다.
문자열 리터럴 접두사로 표시되는 원시 문자열 종류 r. 이스케이프 시퀀스는 해석되지 않습니다. 따라서 원시 문자열은 일반 표현식 이나 Windows 스타일의 경로 와 같이 리터럴 백 슬래시가 일반적 인 곳에서 유용 합니다. C #@ 에서 "- quoting"을 비교하십시오 .
파이썬은 리스트에 배열 인덱스 및 배열 슬라이싱 표현식을 a[key], a[start:stop]또는 로 표시 a[start:stop:step]합니다. 인덱스는 0 부터 시작하고 음수 인덱스는 끝에서부터 시작됩니다. 슬라이스는 시작 색인에서 중지 색인 까지의 요소를 취합니다 . step 또는 stride 라고하는 세 번째 슬라이스 매개 변수를 사용하면 요소를 건너 뛰고 뒤집을 수 있습니다. 슬라이스 인덱스는 생략 될 수 있습니다. 예를 들어 a[:]전체 목록의 복사본을 반환합니다. 슬라이스의 각 요소는 얕은 복사본 입니다.
Python에서는 Common Lisp , Scheme 또는 Ruby 와는 달리 표현식과 명령문을 구별 합니다. 이로 인해 일부 기능이 중복됩니다. 예 :

List comprehensions vs. for-loops
조건부 표현식과 if블록 비교
eval()대 exec()내장 기능 (파이썬 2, exec성명이다); 전자는 표현을위한 것이고, 후자는 진술을위한 것이다.
명령문은 표현식의 일부가 될 수 없으므로 목록 및 기타 보급 또는 람다 표현식 에는 모두 표현식이 포함될 수 없습니다. 이에 대한 특별한 경우 a = 1는 조건문의 조건식의 일부를 구성 할 수없는 것과 같은 할당 문입니다. 이것은 조건에서 =동등 연산자 ==에 대한 대입 연산자 를 오인하는 고전적인 C 오류를 피할 수있는 장점이 있습니다. if (c = 1) { ... }구문 적으로 유효하지만 (의도하지 않은) C 코드이지만 if c = 1: ...Python에서 구문 오류가 발생합니다.

방법
객체에 대한 메소드 는 객체의 클래스에 첨부 된 함수입니다 . 문법 instance.method(argument)은 일반적인 방법과 함수를 위한 구문적인 설탕 이다 Class.method(instance, argument). 파이썬 메소드는 다른 객체 지향 프로그래밍 언어 (예 : C ++ , Java , Objective-C 또는 Ruby ) 에서 암시 적 (또는 ) 과 달리 인스턴스 데이터self 에 액세스하기 위한 명시적인 매개 변수 를가 집니다. [67]selfthis

타이핑
파이썬은 오리 타이핑을 사용 하고 유형이 객체이지만 타입이 지정되지 않은 변수 이름을가집니다. 형식 제약 조건은 컴파일 타임에 확인되지 않습니다 . 오히려 객체에 대한 작업이 실패 할 수 있습니다. 이는 주어진 객체가 적절한 유형이 아님을 나타냅니다. 동적으로 타입이 지정되어 있음에도 불구하고 , Python은 강력하게 타입 지정 되며, 자동적으로 그것들을 이해하려고 시도하지 않고 잘 정의되지 않은 연산 (예 : 문자열에 숫자를 추가하는 것)을 금지합니다.

파이썬은 프로그래머가 객체 지향 프로그래밍에 가장 자주 사용되는 클래스를 사용하여 자신의 유형을 정의 할 수 있도록 합니다 . 클래스의 새 인스턴스 는 클래스 (예 : SpamClass()또는 EggsClass()) 를 호출하여 생성되며 클래스는 메타 매크로 type 의 인스턴스 (자체는 자체 인스턴스)이므로 메타 프로그래밍 및 리플렉션을 허용 합니다.

버전 3.0 이전에는 파이썬에는 구식 과 새 스타일 의 두 종류가있었습니다 . [68] 모두 스타일 구문이 동일 클래스가 존재하는지 여부의 차이 object를 직접 또는 간접적로부터 상속된다 (모든 새로운 스타일의 클래스에서 상속 object및 인스턴스 type). Python 2.2 이후 버전의 Python 2에서는 두 가지 종류의 클래스를 사용할 수 있습니다. 구식 클래스는 Python 3.0에서 제거되었습니다.

장기 계획을 지원하는 점진적 입력 [69] 및 Python 3.5로서, 언어의 문법 정적 타입을 지정 허용하지만,이 기본 구현 CPython을 체크하지 않는다. 실험적으로 선택 가능한 정적 유형 검사기 인 mypy 는 컴파일 타임 유형 검사를 지원합니다. [70]

Summary of Python 3's built-in types
TypemutableDescriptionSyntax example
boolimmutableBoolean valueTrue
False
bytearraymutableSequence of bytesbytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
bytesimmutableSequence of bytesb'Some ASCII'
b"Some ASCII"
bytes([119, 105, 107, 105])
compleximmutableComplex number with real and imaginary parts3+2.7j
dictmutableAssociative array (or dictionary) of key and value pairs; can contain mixed types (keys and values), keys must be a hashable type{'key1': 1.0, 3: False}
ellipsisAn ellipsis placeholder to be used as an index in NumPy arrays...
floatimmutableFloating point number, system-defined precision3.1415927
frozensetimmutableUnordered set, contains no duplicates; can contain mixed types, if hashablefrozenset([4.0, 'string', True])
intimmutableInteger of unlimited magnitude[71]42
listmutableList, can contain mixed types[4.0, 'string', True]
setmutableUnordered set, contains no duplicates; can contain mixed types, if hashable{4.0, 'string', True}
strimmutablecharacter string: sequence of Unicode codepoints'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines"""
tupleimmutableCan contain mixed types(4.0, 'string', True)But we can append elements using __add__ .

a = (4.0, 'string' , True).__add__(('hi' ,))

now a gives (4.0, 'string', True ,'hi')



수학

파이썬은 보통 C의 산술 연산자 (가 +, -, *, /, %)를. 또한 **예를 들어 5**3 == 125, and 9**0.5 == 3.0, 그리고 새로운 행렬 곱셈 @연산자가 버전 3.5에 포함되어 있습니다. [72] 또한,는 단항 연산자 (갖는 ~본질적 한 인수의 모든 바이트 반전). 정수의 경우 이것은 의미 ~x=-x-1합니다. [73] 다른 연산자는 비트 쉬프트 연산자를 포함 x << y이행하는 x왼쪽으로 y, 장소와 동일 x*(2**y)하고, x >> y시프트되는 x오른쪽 y장소와 동일 x/(2**y). [74]


분단의 행동은 시간이 지남에 따라 크게 변했다 .


Python 2.1 및 이전 버전에서는 C 부분 동작을 사용합니다. /오퍼레이터는 달리 정수 피연산자가 모두 정수 분할 인 경우, 부동 소수점 나눗셈이다. 정수 나누기는 0, 예를 들어쪽으로 반올림 7/3 == 2하고 -7/3 == -2.

파이썬 2.2 변경 정수 나눗셈은 마이너스 무한대 등으로 반올림 7/3 == 2하고 -7/3 == -3. 바닥 분할 //연산자가 도입되었습니다. 그래서 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0와 -7.5//3 == -3.0. 추가를 from __future__ import division하면 모듈이 파이썬 3.0 규칙을 나눗셈에 사용합니다 (다음 참조).

Python 3.0 /은 항상 부동 소수점으로 변경 됩니다. 파이썬 측면에서 사전 3.0 /입니다 고전 부문 의 버전 3.0 /입니다 실제 부문 , 그리고 //이다 바닥 부문 .

대부분의 언어와 다르지만 음의 무한대로 반올림하면 일관성이 추가됩니다. 예를 들어 방정식 (a + b)//b == a//b + 1은 항상 참 이라는 의미입니다 . 또한 방정식 b*(a//b) + a%b == a이 양수 및 음수 값 모두에 유효 함을 의미합니다 a. 그러나,이 식의 유효성을 유지하는 결과의 동안을 의미 a%b하고, 예상 한대로의 반 개방 구간 [0, B ), 여기서, b는 양의 정수이고, 그 간격 (거짓말하는 B , 0] 때 b제외된다. [76]


파이썬은 float를 가장 가까운 정수로 반올림 하는 round함수를 제공합니다 . 들어 타이 브레이크 3 사용 라운드 멀리에서 제로가되기 전에, 버전 : 1.0, -1.0입니다. [77] Python 3은 round to even을 사용합니다 : 2는 2 입니다. [78]round(0.5)round(-0.5)round(1.5)round(2.5)


파이썬은 수학에서 일반적으로 사용되는 방식과 동일한 방식으로 여러 개의 동등한 관계가있는 부울 표현식을 허용합니다. 예를 들어, 발현 a < b < c실험 여부 a미만 b및 b보다 작다 c. C에서 파생 된 언어는이 표현을 다르게 해석합니다. C에서는 표현식이 먼저 평가 a < b되어 결과가 0 또는 1이되고 그 결과는 다음과 비교됩니다 c. [79] [ 필요한 페이지 ]


파이썬은 임의 정밀도 산술 을 지원합니다 . 정수는 파이썬 유형에 속한 기계 지원 최대 고정 정밀도 (대개 32 또는 64 비트) 에서 필요에 따라 int파이썬 유형에 속한 임의의 정밀도 로 투명하게 전환됩니다 long. 후자는 텍스트 표현에 "L"접미사가 있습니다. [80] (파이썬 3에서는 타입 int과 long타입 의 구분 이 제거되었으므로,이 행위는 int클래스에 의해 완전히 포함된다 .) Decimal모듈 의 타입 / 클래스 decimal(버전 2.4 이후)는 소수점 이하의 부동 소수점 수를 임의의 정밀도와 여러 라운딩으로 제공한다 모드. [81]Fraction 모듈 의 유형fractions(버전 2.6 이후)는 유리수에 대해 임의의 정밀도를 제공합니다. [82]


파이썬의 광범위한 수학 라이브러리와 원시 기능을 더욱 확장 한 써드 파티 라이브러리 인 NumPy 로 인해 숫자 데이터 처리 및 조작과 같은 문제를 돕기 위해 과학 스크립팅 언어로 자주 사용됩니다.


Library


파이썬에는 파이썬의 가장 큰 강점 중 하나로 인용 되는 커다란 표준 라이브러리가 있습니다 . [83] 많은 작업에 적합한 도구를 제공합니다. 이는 고의적이며 "배터리 포함" [26] Python 철학 으로 묘사되었습니다 . 인터넷 연결 응용 프로그램의 경우 많은 표준 형식 및 프로토콜 (예 : MIME 및 HTTP )이 지원됩니다. 생성 모듈 그래픽 사용자 인터페이스 에 연결 관계형 데이터베이스 , 생성하는 의사 난수 산술 임의 정밀도 소수점과, [84] 조작 정규식 및 고 단위 테스트 또한 포함되어 있습니다.


표준 라이브러리의 일부는 사양에 포함되어 있습니다 (예 : Web Server Gateway Interface (WSGI) 구현 wsgiref은 PEP 333 [85]를 따릅니다 ). 그러나 대부분의 모듈은 그렇지 않습니다. 이들은 코드, 내부 문서 및 테스트 스위트 (제공되는 경우)로 지정됩니다. 그러나 대부분의 표준 라이브러리는 크로스 플랫폼 Python 코드이기 때문에 변형 모듈을 수정하거나 다시 작성해야하는 모듈은 극소수입니다.


2017 년 5 월 현재 Python 용 타사 소프트웨어가 포함 된 공식 저장소 인 Python Package Index 에는 107,000 개 이상의 [86] 패키지가 포함되어있어 다음과 같은 다양한 기능을 제공합니다.


그래픽 사용자 인터페이스, 웹 프레임 워크, 멀티미디어, 데이터베이스, 네트워킹 및 통신

테스트 프레임 워크, 자동화 및 웹 스크래핑, 문서 도구, 시스템 관리

과학 계산, 텍스트 처리, 이미지 처리


개발 환경


대부분의 Python 구현 (CPython 포함)에는 REPL ( read-eval-print loop )이 포함 되어있어 사용자가 명령문을 순차적으로 입력하고 즉시 결과를받는 명령 행 해석기 로 작동 할 수 있습니다 .


다른 셸은 IDLE 및 IPython을 포함하여 기본 인터프리터의 기능을 능가하는 기능을 추가합니다 . 일반적으로 파이썬 셸의 시각적 스타일을 따르는 동안 자동 완성, 세션 상태 보존 및 구문 강조 와 같은 기능을 구현합니다 .


표준 데스크탑 통합 개발 환경 ( Python IDE ) 외에도 웹 브라우저 기반 IDE, SageMath (과학 및 수학 관련 Python 프로그램 개발 용), 브라우저 기반 IDE 및 호스팅 환경 PythonAnywhere가 있습니다. 또한 Canopy IDE는 Python 프로그램을 작성하기위한 옵션입니다. [87]


구현


참조 구현
CPython으로 명명 된 주요 Python 구현 은 C 로 작성되었으며 일부 C99 기능을 선택 하여 C89 표준을 충족합니다 . [88] 은 중간에 파이썬 프로그램을 컴파일하여 바이트 코드 , [89] 에 의해 실행되는 가상 머신 . [90] CPython은 C와 Python이 혼합 된 대형 표준 라이브러리와 함께 배포됩니다. Windows 및 최신 유닉스 계열 시스템을 포함한 많은 플랫폼 용 버전에서 사용할 수 있습니다. CPython은 거의 개념 상 크로스 플랫폼을 지향합니다. [91]

다른 구현
PyPy 는 Python 2.7 및 3.5 의 신속하고 호환되는 [92] 해석기입니다. 그것의 적시 (just-in-time) 컴파일러는 CPython에 비해 상당한 속도 향상을 제공합니다. [93] 소프트웨어 트랜잭션 메모리를 사용 하는 멀티 코어 프로세서를 이용하는 버전 이 만들어지고 있습니다. [94]

Stackless Python 은 마이크로 스레드 를 구현하는 중요한 CPython 포크입니다 . C 메모리 스택을 사용하지 않으므로 대량의 동시 프로그램을 사용할 수 있습니다. PyPy는 스택없는 버전도 가지고있다. [95]

MicroPython 은 마이크로 컨트롤러 에서 실행되도록 최적화 된 Python 3 변형입니다 .

더 이상 지원되지 않는 구현
다른 적시 컴파일러는 과거에 개발되었지만 현재 지원되지 않습니다 :

Google은 LLVM 을 사용하여 Python 인터프리터의 속도를 5 배 향상시키고 수천 개의 코어로 확장 할 수있는 멀티 스레딩 기능을 개선하기 위해 2009 년 Unladen Swallow 라는 프로젝트를 시작했습니다 . [96]
Psyco 는 CPython과 통합되고 런타임시 바이트 코드를 기계 코드로 변환 하는 JIT (just-in-time) 전문 컴파일러입니다. 방출 된 코드는 특정 데이터 유형에 특화되어 있으며 표준 Python 코드보다 빠릅니다.
2005 년 Nokia 는 PyS60 이라는 Series 60 휴대 전화 용 Python 인터프리터를 출시했습니다 . 여기에는 CPython 구현의 많은 모듈과 Symbian 운영 체제 와 통합 할 수있는 몇 가지 추가 모듈이 포함 됩니다. 이 프로젝트는 S60 플랫폼의 모든 변형을 실행하기 위해 최신 상태로 유지되었으며 몇 가지 타사 모듈을 사용할 수 있습니다. Nokia N900 은 또한 GTK 위젯 라이브러리 가있는 Python을 지원하며 , 대상 장치에서 프로그램을 작성하고 실행할 수 있습니다. [97]

다른 언어로 크로스 컴파일러
제한없는 Python, 제한된 Python 하위 집합 또는 원본 언어와 비슷한 Python과 유사한 언어 를 사용하여 상위 수준 개체 언어에 대한 여러 가지 컴파일러가 있습니다.

자이 썬 은 자바 바이트 코드로 컴파일하고 모든 자바 가상 머신 구현에 의해 실행될 수있다 . 또한 Python 프로그램에서 Java 클래스 라이브러리 함수를 사용할 수 있습니다.
IronPython 은 .NET Common Language Runtime 에서 Python 프로그램을 실행하기 위해 유사한 접근법을 따른다 .
RPython의 언어로 컴파일 할 수 있습니다 C , 자바 바이트 코드 , 또는 공통 중간 언어 , 파이썬의 PyPy 인터프리터를 구축하는 데 사용됩니다.
Pyjs는 Python을 JavaScript로 컴파일합니다 .
Cython은 Python을 C 및 C ++로 컴파일합니다 .
Pythran은 Python을 C ++로 컴파일합니다 .
다소 Pyrex (2010 년 최신 릴리스)와 Shed Skin (2013 년 최신 릴리스)은 각각 C 및 C ++로 컴파일됩니다.
Google의 Grumpy는 Python을 컴파일하여 실행 합니다 .
Nuitka는 Python을 C ++로 컴파일합니다. [98]
성능
EuroSciPy '13에서 비 숫자 (조합) 작업 부하에 대한 다양한 Python 구현의 성능 비교가 제공되었습니다. [99]

개발


파이썬의 개발은 대부분 PEP ( Python Enhancement Proposal ) 프로세스를 통해 이루어 집니다. PEP 프로세스는 주요 새로운 기능을 제안하고 문제에 대한 커뮤니티 입력을 수집하며 Python으로 들어간 디자인 결정을 문서화하기위한 기본 메커니즘입니다. [100] 뛰어난하는 PEP는 검토하고 파이썬 커뮤니티와 반 로섬, 파이썬 프로젝트에 의해에 주석 자애로운 종신 독재자 . [100]


언어의 향상은 CPython 레퍼런스 구현의 개발과 함께 진행됩니다. 메일 링리스트 인 python-dev는 언어 개발에 대한 토론을위한 기본 포럼입니다. 특정 문제는 python.org에서 유지 관리 되는 Roundup 버그 추적기 에서 논의됩니다 . [201] 2017 년 1 월 Python이 GitHub 로 옮겨 질 때까지 Mercurial을 실행 하는 자체 호스팅 소스 코드 저장소에서 개발이 이루어 졌습니다 .


CPython의 공개 릴리스에는 버전 번호의 어느 부분이 증가하는지에 따라 구분되는 세 가지 유형이 있습니다.


이전 버전과 호환되지 않는 버전으로 코드가 중단 될 것으로 예상되며 수동으로 이식 해야합니다 . 버전 번호의 첫 번째 부분이 증가합니다. 이러한 릴리스는 드물게 발생합니다. 예를 들어 버전 3.0은 2.0 이후 8 년 후에 릴리스되었습니다.

주요 기능이나 "기능"버전은 호환되지만 새로운 기능을 도입합니다. 버전 번호의 두 번째 부분이 증가합니다. 이 릴리스는 대략 18 개월마다 발생하도록 계획되어 있으며 각 주요 버전은 출시 후 몇 년 동안 버그 수정을 통해 지원됩니다. [103]

Bugfix는 새로운 기능은 없지만 버그를 수정합니다. 버전 번호의 세 번째이자 마지막 부분이 증가합니다. 이 릴리즈는 최종 릴리즈 이후로, 또는 약 3 개월마다 충분한 수의 버그가 업스트림에 고정 될 때마다 만들어집니다. 보안 취약점은 버그 수정 릴리즈에서도 패치됩니다. [104]

많은 알파, 베타 및 릴리스 후보 도 최종 릴리스 전에 미리보기 및 테스트 용으로 출시됩니다. 각 릴리스에 대해 거친 일정이 있지만 코드가 준비되지 않은 경우에는 종종 푸시 백됩니다. 개발 팀은 개발 중에 대규모 단위 테스트 슈트 를 실행 하고 BuildBot 연속 통합 시스템을 사용하여 코드 상태를 모니터링합니다 . [105]


파이썬 개발자 커뮤니티는 86,000 이상 기여하고있다 [106] (2016년 8월 20일의 같은 소프트웨어 모듈을 받는) 파이썬 패키지 색인 (PyPI), 파이썬 타사 라이브러리의 공식 저장소.


파이썬에 관한 주요 학술 대회 는 PyCon 입니다. Pyladies 와 같은 특별 멘토링 프로그램이 있습니다 .


명명


파이썬의 이름은 TV 시리즈에서 파생 몬티 파이썬의 플라잉 서커스 , [107] 그리고 예제 코드 몬티 파이썬 참조를 사용하는 것이 일반적이다. [108] 예를 들어, metasyntactic 변수 들은 파이썬 문헌에서 사용은 스팸 과 계란 대신에 기존의, foo는 및 바 . [108] [109] 또한, 공식 Python 문서 및 많은 코드 예제에는 종종 모호한 Monty Python 참조가 포함되어 있습니다. [ 111]


접두사 Py- 는 뭔가가 파이썬과 관련이 있음을 보여주기 위해 사용됩니다. 파이썬 응용 프로그램 또는 라이브러리의 이름이 접두사의 사용 예는 파이 게임 하는 바인딩 의 SDL 파이썬 (일반적으로 게임을 만드는 데 사용)에를; Symbian S60 운영 체제 용 구현 인 Python for S60 ; PyQt 와 PyGTK 는 각각 Qt 와 GTK 를 파이썬에 바인딩합니다 . 및 PyPy , 파이썬 구현은 원래 파이썬으로 작성.


용도 


2003 년 이래로 Python은 TIOBE Programming Community Index 에서 측정 한 가장 인기있는 프로그래밍 언어 상위 10 위 안에 지속적으로 선정되었습니다 . 2017 년 3 월 현재이 언어는 5 번째로 많이 사용되는 언어입니다. [112] 그것은 2007 년과 2010 년의 올해의 프로그래밍 언어로 선정되었습니다. [113] 문법적 구문 이 주로 C에 기반하지 않는 세 번째로 인기있는 언어입니다 ( 예 : C ++, Objective-C (참고, C # 및 Java는 중괄호 사용과 같이 C와 부분적으로 유사한 구문 유사성을 가지며 C보다 서로 유사합니다.


경험적 연구에 따르면 Python과 같은 스크립팅 언어는 문자열 조작 및 사전 검색과 관련된 프로그래밍 문제로 인해 C 및 Java와 같은 기존 언어보다 생산성이 높아졌습니다. 메모리 소비는 종종 "Java보다 좋았고 C 나 C ++보다 훨씬 나빴습니다." [114]


파이썬의 사용을 대규모 조직을 포함 위키피디아 , 구글 , [115] 야후! , [116] CERN , [117] NASA , [118] 와 같은 일부 작은 엔티티 ILM , [119] 및 ITA . [120] 소셜 뉴스 네트워킹 사이트 인 Reddit 은 전적으로 파이썬으로 작성되었습니다.


파이썬은 아파치 웹 서버를 위한 mod_wsgi 같은 웹 어플리케이션을 위한 스크립팅 언어의 역할을 할 수있다 . [121] 와 웹 서버 게이트웨이 인터페이스 , 표준 API는 이러한 응용 프로그램을 촉진하기 위해 진화했다. Django , Pylons , Pyramid , TurboGears , web2py , Tornado , Flask , Bottle 및 Zope 와 같은 웹 프레임 워크 는 복잡한 응용 프로그램의 설계 및 유지 보수를 지원합니다. Pyjs 및IronPython 은 Ajax 기반 애플리케이션의 클라이언트 측 개발에 사용될 수 있습니다. SQLAlchemy 는 관계형 데이터베이스에 대한 데이터 맵퍼 로 사용될 수 있습니다 . Twisted 는 컴퓨터 간의 통신을 프로그래밍하는 프레임 워크이며 Dropbox에 의해 (예를 들어) 사용됩니다 .


같은 라이브러리 NumPy와 , SciPy 및 하기 matplotlib은 과학적 컴퓨팅 파이썬의 효과적인 사용을 허용 [122] [123] 등의 특수 라이브러리와 바이오 파이썬 과 Astropy은 도메인 특정 기능을 제공한다. SageMath 는 파이썬으로 프로그래밍 가능한 " 노트북 "을 갖춘 수학 소프트웨어 입니다 .이 라이브러리는 대수학 , 조합론 , 수치 수학 , 수론 및 미적분학을 포함하여 수학의 여러 측면을 다루고 있습니다.. Java 플랫폼 에서 재 구현 된 파이썬 언어 는 DMelt 프로젝트에 의한 2D / 3D 시각화와 함께 수치 및 통계 계산에 사용됩니다 . [124 ]


Python은 Abaqus 와 같은 유한 요소 방법 소프트웨어 , FreeCAD 와 같은 3D 매개 변수 모델러 , 3ds Max , Blender , Cinema 4D , Lightwave , Houdini , Maya , modo 와 같은 3D 애니메이션 패키지를 비롯하여 많은 소프트웨어 제품에 스크립팅 언어로 성공적으로 포함되었습니다. , 모션 빌더 , 소프트 이미지 , 시각 효과 합성기 누크 등에 2D 영상 프로그램 GIMP , [126] 잉크 스케이프 , Scribus에 및 프로 숍 페인트 , [127] 와 악보 같은 프로그램 악보 작성 프로그램 과 아카펠라를 . GNU Debugger 는 Python을 예쁜 프린터 로 사용 하여 C ++ 컨테이너와 같은 복잡한 구조를 보여줍니다. Esri 는 ArcGIS 에서 스크립트를 작성하기위한 최상의 선택으로 Python을 권장 합니다. [128] 또한 여러 비디오 게임에 사용 된, [129] [130] 과 세 가지의 처음으로 채택 된 프로그래밍 언어 에서 구글 앱 엔진 , 인 다른 두 개의 자바 와 이동합니다 . [131]파이썬은 또한 알고리즘 거래 및 양적 금융에 사용됩니다. [132] Python은 래퍼를 사용하여 다른 언어로 실행되는 온라인 중개 API의 API로 구현 될 수도 있습니다. [133]


파이썬은 인공 지능 작업 에 사용되었습니다 . [134] [ 137 ] [137] 모듈 아키텍처, 간단한 구문 및 리치 텍스트 처리 도구를 갖춘 스크립팅 언어로서, 파이썬은 종종 자연어 처리 작업에 사용됩니다. 또한,


많은 운영 체제에는 Python이 표준 구성 요소로 포함되어 있습니다. 언어는 대부분의 Linux 배포판 , AmigaOS 4 , FreeBSD , NetBSD , OpenBSD 및 macOS 와 함께 제공되며 터미널에서 사용할 수 있습니다. 많은 리눅스 배포판은 Python으로 작성된 설치 프로그램을 사용합니다 : Ubuntu 는 Ubiquity 설치 프로그램을 사용하고 Red Hat Linux 와 Fedora 는 Anaconda 설치 프로그램을 사용합니다 . Gentoo Linux 는 패키지 관리 시스템 인 Portage 에서 Python을 사용합니다 .


파이썬은 또한 악용 개발을 포함 하여 정보 보안 업계 에서 광범위하게 사용됩니다 . [139 ]


Sugar Labs 에서 개발 된 Child XO 당 One Laptop 용 Sugar 소프트웨어의 대부분은 Python으로 작성되었습니다. [141]


라즈베리 파이 싱글 보드 컴퓨터 프로젝트는 주요 사용자 프로그래밍 언어로 파이썬을 채택했다.


LibreOffice 는 Python을 포함하며 Python으로 Java를 대체하고자합니다. 파이썬 스크립팅 제공자는 핵심 기능입니다 [142] 버전 4.0 이후 2013년 2월 7일에서.


파이썬의 영향을받은 언어


파이썬의 디자인과 철학은 다음과 같은 여러 프로그래밍 언어에 영향을 미쳤습니다.

Boo 는 들여 쓰기, 유사한 문법 및 유사한 객체 모델을 사용합니다. 그러나 Boo는 정적 타이핑 (및 선택적 오리 타이핑 )을 사용하며 .NET Framework 와 밀접하게 통합되어 있습니다. 또한,
코브라 는 들여 쓰기와 비슷한 구문을 사용합니다. Cobra의 "Acknowledgements"문서는 파이썬을 영향을 미치는 언어 중 첫 번째로 나열합니다. [144] 그러나 Cobra는 계약 별 설계 , 단위 테스트 및 선택적 정적 유형 지정을 직접 지원합니다 . [145]
CoffeeScript 는 JavaScript로 크로스 컴파일하는 프로그래밍 언어입니다. Python에서 영감을 얻은 구문을 사용합니다.
ECMAScript는 반복자 , 생성자 및 파이썬의 목록 이해력 을 빌렸다 . [146]
Go 는 "Python과 같은 동적 언어로 작업하는 개발 속도"를 통합하는 것으로 설명됩니다. [147]
Groovy 는 Python 디자인 철학을 Java 로 가져 오려는 바람에 자극 받았습니다 . [148]
줄리아 는 " 진정한 매크로 로 파이썬과 같은 일반 프로그래밍에 쓸모있게 설계되었습니다 ." [20] 줄리아에서 또는 줄리아로 전화하는 것이 가능합니다. to PyCall.jl 과 Python 패키지 pyjulia를 사용하면 Python 에서 다른 방향으로 호출 할 수 있습니다.
OCaml 은 Python과 Haskell 에서 영감을 얻은 twt (The Whitespace Thing)라는 선택적 구문을 사용합니다 . [149]
루비 의 창시자 마츠모토 유키히로 (Yukihiro Matsumoto )는 "필자는 Perl보다 강력하고 스크립팅 언어가 Python보다 객체 지향적 이길 원했기 때문에 내 자신의 언어를 디자인하기로 결정했다"고 말했다. [150]
스위프트 는 애플이 발명 한 프로그래밍 언어이다. 파이썬에서 영감을 얻은 구문을 가지고 있습니다. [151]
파이썬의 개발 관행 또한 다른 언어로 에뮬레이션되었습니다. Python의 영향 때문에 Tcl [152] 과 Erlang [153] 에서 언어 변경의 근거를 기술 한 문서 (Python의 경우 PEP)를 요구하는 관행이 사용됩니다 .

파이썬은 TIOBE 지수에 의해 측정 된 1 년 동안 인기가 가장 높은 언어에 주어지는 TIOBE 프로그래밍 언어 올해의 상을 두 번 (2007 년과 2010 년) 수상했습니다 . [154]


'python' 카테고리의 다른 글

python print  (1) 2017.09.24
python exe 실행파일 만들기  (0) 2017.09.05

+ Recent posts