2016-08-08 61 views
0

我是初學者到python和一般的編程。當我學習python時,我正試圖發展一種良好的習慣或遵循一種良好的習慣。所以讓我先解釋一下我目前的工作。使用命令行運行python腳本有什麼好處?

我使用Emacs(前奏)來執行python腳本。密鑰綁定C-cC-c評估包含python腳本的緩衝區。然後用>>>提示符獲得一個帶有Python解釋器的新緩衝區。在這個環境中,腳本中使用的所有變量都是可訪問的。例如,如果在腳本中定義了xy,我可以執行>>> x + y來評估它。

我看到很多人(如果不是最多的話)使用命令行來執行python腳本(即$ python scriptname.py)。如果我這樣做,那麼我將返回到shell提示符下,並且我無法訪問變量xy以執行x + y。所以我不確定使用命令行運行python腳本的優點。

我應該只使用Emacs作爲編輯器並使用終端(我正在使用Mac)來執行腳本?什麼是更好的做法?

謝謝!

+0

如果你想知道爲什麼你周圍的所有人都在使用命令行,你可以問他們*而不是隻能猜測他們動機的人。你的腳本完成後你做什麼?加載Emacs加載Python來運行你的腳本?你周圍的人用什麼來編輯?他們是否知道他們可以在Emacs中使用解釋器? – TessellatingHeckler

+1

你應該在他們將要運行的環境中測試你的程序。在生產中,它們不太可能從編輯器運行。在開發過程中,這是個人的品味 - 無論是什麼讓你獲得最高的生產力 – cdarke

+0

他們告訴我,使用CL是他們知道並且似乎堅持的唯一方式。他們都沒有使用Emacs。所以他們無法比較。 – zcadqe

回答

0

人們爲不同的目的使用不同的工具。

關於接口進入任何程序的一個重要問題是誰是用戶?作爲程序員,您將使用解釋器來測試程序並檢查錯誤。很多時候,用戶並不需要訪問裏面的變量,因爲他們沒有用解釋器與應用程序/腳本進行交互。例如,對於Python Web應用程序,通常有一個main.py腳本可將客戶端HTTP請求重定向到適當的處理程序。這些處理程序在客戶端請求時自動執行python腳本。該輸出然後顯示給用戶。在Python Web應用程序中,除非您是開發人員試圖消除程序中的錯誤,否則您通常不會在像main.py這樣的文件內訪問變量(事實上,讓客戶端訪問這些變量將構成安全問題在某些情況下)。由於您只需要腳本的輸出,您可以在命令行中執行該腳本函數並將結果顯示給客戶端。

關於最佳實踐:再次,取決於你在做什麼。

使用python解釋器進行計算對於較小的孤立函數測試是可以的,但對於python腳本中有更多移動部分的較大項目不起作用。如果你的python腳本達到了幾百行,你將不會記得或需要記住變量名。在這種情況下,最好在命令行中執行腳本,因爲您不需要訪問內部組件。

如果您正在爲一組任務創建該腳本,您希望創建一個新的腳本文件。例如上面的處理程序示例,main.py中的函數都適用於處理HTTP請求。對於像定義x,定義y,然後添加它的東西,你並不需要自己的文件,因爲你沒有創建將來可能需要的函數,並且添加兩個數字是一種內置方法。然而,假設你有一堆你創建的函數在內置方法中不可用(複雜的例子:softmax函數將K維向量簡化爲另一個K維向量,其中每個元素都是介於0和1之間的值並且所有元素總和爲1),您想要在腳本文件中捕獲並稍後引用該腳本的過程。在這種情況下,您需要創建自己的腳本文件並在不同的python腳本中引用它來執行。

相關問題