2013-10-28 61 views
4

我想知道如果Python代碼可以像Javascript一樣壓縮/非人類可讀。我知道縮進在Python中很重要,它的核心理念是可讀性,但是在任何可能的情況下,都有允許壓縮Python代碼的方法嗎?順便說一句,Python 2.7。Python代碼可以像JavaScript一樣壓縮嗎?

+0

(嵌套)列表解析/生成器表達式。以下是更多信息:http://c2.com/cgi/wiki?ObfuscatedPython – kren470

+1

壓縮的目的是什麼? –

+0

[Python代碼混淆]的可能重複(http://stackoverflow.com/questions/576963/python-code-obfuscation) – falsetru

回答

3

你可以在這裏採取幾種不同的方法。

Python實際上提供了以;的形式提供縮小的機會。 Python中一個很少有人知道並且很少使用(幸好)的語法元素是如果使用;,多個表達式可以寫在一行上。

例如:

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

可以壓縮到:

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

這裏有很多這樣的例子,你也可以刪除註釋,並與運營商三元進一步混淆簡單的代碼。 ;擺脫了大量的空白,但是可以進行很多更小的優化。

對於爲您完成此操作的庫的某些示例,請參閱hereherehere

請記住,這些都不會完全混淆您的代碼,以至於無法恢復。任何充分動機的人都可以對源代碼進行反向工程,即使沒有文檔記錄,也是如此。

即使您只分發.pyo.pyc文件,這仍然是正確的。 Python字節碼通常不會比用於生成它的源代碼小得多,並且大部分可以很容易地進行反向工程。不要認爲分發.pyc將完全保護您的源代碼的錯誤。

編輯:如果你正在尋找打包這些作爲獨立的二進制可執行文件,你可能想看看cx_Freeze。它可能更接近你正在尋找的東西,如果不是不可能進行反向工程,則會更加困難。

+0

+1可能在我正在尋找的球場。謝謝。 –

+0

+1用於鏈接到cx凍結 – samrap

0

不像通常是由瀏覽器執行,我們必須提供原始JavaScript源代碼的JavaScript。

您不必運送python代碼,就可以發佈已編譯的二進制文件。有很多工具可以完成這項工作,例如py2exe,Pyinstaller,cx_Freeze。客戶也受益,因爲他們不需要安裝Python,甚至不需要了解Python的任何信息。

儘管編譯的Python代碼比java,c,C++代碼更容易反編譯,但是比壓縮的源代碼更好。