2013-10-28 3 views
4

자바 스크립트처럼 파이썬 코드를 압축 할 수 있는지/사람이 읽을 수 없는지 궁금합니다. 나는 들여 쓰기가 파이썬에서 중요하다는 것을 압니다. 핵심 철학은 가독성이지만, 압축 된 파이썬 코드를 허용하는 메소드가 있습니다. Python 2.7, 그런데.파이썬 코드를 Javascript처럼 압축 할 수 있습니까?

+0

(중첩) 목록 내포/생성기 식. 자세한 내용은 다음과 같습니다. http://c2.com/cgi/wiki?ObfuscatedPython – kren470

+1

압축의 목적은 무엇입니까? –

+0

[Python 코드 난독 화] 가능한 복제본 (http://stackoverflow.com/questions/576963/python-code-obfuscation) – falsetru

답변

3

여기에서 취할 수있는 몇 가지 방법이 있습니다.

파이썬은 사실 ; 형태로 축소를위한 기회를 제공합니다. 파이썬에서 약간 알려져 있고 거의 사용되지 않는 (다행스럽게도) 구문 적 요소는 ;을 사용하면 한 줄에 여러 개의 표현식을 쓸 수 있다는 것입니다. 예를 들어

:

if x > y: 
    x += y 
    print y 
else: 
    y += x 
    print x 

가 압축 될 수 있습니다 :

if x>y:x+=y;print y; 
else:y+=x;print x; 

이 예의 톤이있다, 당신은 또한 주석을 제거하고, 원 사업자와 더 간단한 코드를 당황하게 할 수 있습니다. ;은 많은 공백을 제거하지만 더 작은 최적화가 많이 있습니다.

이 작업을 수행하는 라이브러리의 예로는 here, here 또는 here을 참조하십시오.

아무 것도 복구되지 않을 정도로 코드를 완전히 혼란스럽게 만들지는 않습니다. 충분히 동기를 부여받은 사람이라면 문서화되지 않았더라도 소스 코드를 리버스 엔지니어링 할 수 있습니다.

.pyo 또는 .pyc 개의 파일 만 배포하는 경우에도 마찬가지입니다. 파이썬 바이트 코드는 일반적으로 소스 코드를 생성하는 데 사용되는 코드보다 작지 않으며, 대부분 리버스 엔지니어링이 가능합니다. .pyc을 배포하는 것이 소스 코드를 완전히 안전하게한다고 생각하지 마십시오.

편집 : 독립 실행 형 바이너리 실행 파일로 패키지를 작성하려는 경우 cx_Freeze을 살펴볼 수 있습니다. 그것은 당신이 찾고있는 것에 더 가깝고 역 엔지니어링이 불가능하지는 않을지라도 훨씬 더 어려울 수 있습니다.

+0

+1 내가 찾고 있던 야구장에있을 수 있습니다. 감사. –

+0

cx Freeze에 연결하기위한 +1 – samrap

0

http://doughellmann.com/2009/01/pymotw-compileall.html 당시 삭제 소스 평 파일 일반적으로 브라우저에서 실행되고 우리가 원시 자바 스크립트 소스 코드를 제공해야합니다 자바 스크립트와는 달리

+0

이것은 코드를 전혀 모호하지 않으며 (파이썬은 바이트 코드에서 쉽게 리버스 엔지니어링 될 수 있습니다) 많은 많은 공간을 절약하지 않습니다. 예를 들어, stdlib에서'Decimal' 라이브러리를 컴파일하면 단지 5 %만큼 공간이 줄어 듭니다. – reem

0

.

파이썬 코드를 제공 할 필요없이 컴파일 된 이진 파일을 제공 할 수 있습니다. 예를 들어 작업을 수행 할 수있는 도구가 많이 있습니다. py2exe, Pyinstaller, cx_Freeze. 클라이언트는 파이썬을 설치하거나 파이썬에 대해 알 필요가 없기 때문에 이익을 얻습니다.

컴파일 된 파이썬 코드는 압축 된 소스 코드보다 Java, C, C++ 코드에 비해 디 컴파일 된 것이 더 쉽지만 더 쉽습니다.

관련 문제