標籤:

作為日常使用的腳本,PowerShell Core 與 Python 各有哪些優劣?


說的好像你能用Powershell寫出來個知乎豆瓣之類的一樣。

我覺得實際是相反的,Python的設計並不足以作為日常腳本語言來用,跟Perl/Bash比起來表達能力和易用程度都差了一些,更不用說性能上還並不比bash下面各種命令+管道組合高。

Python目前做的比較好的就是,給一般人看和用的膠水語言。比如你學習ML,學習Big Data,可以拿來玩玩而不需要了解urllib為什麼要有3個版本或者Python2和Python3到底差在哪兒。在這方面也許有跟它做的一樣棒的,但普及率和接受程度比它高的沒幾個。

寫日常腳本的話,除非你是死忠粉,不然還是算了吧。

以上。


我覺得Powershell core對標的不應該是Python而是bash腳本

PowerShell Core 繼承了powershell cmdlets 命名冗長的特點,代碼信息密度較低,大概更適合做短小精悍功能單一的工具腳本,給人一種超過一百行都不想用ps來寫的感覺。

蛋疼的感覺跟bash有點類似,但似乎又有些優於bash,然而ps這另一陣營的玩意,out of box的體驗大概也只有在windows能體驗到了。

.Net Core 繼承了 .Net framework的高度集成和封裝功能的特點

對於功能密度要求較小的IT人員,如運維,可能是很趁手的腳本語言

完整的cmdlets命名風格降低了直接閱讀理解的難度,相比python的各種 magic 和語法糖來說,熟悉起來要簡單太多

以上是優缺點共存的一些方面,這些特點都同時具有顯而易見的缺點。

而至於純粹的缺點:

跨平台時,濃厚的Windows風格和*nix風格產生了巨大的撕裂感,可能需要腦子轉個彎

Module的設計跟Python基本一致,然而生態基本為零。

書寫風格終究還是局限在了Shell的感覺上,大概在更大規模的流水線工具上難以獨自解決問題,更可能當作膠水語言用

總結:這麼晚才跳出來誰還帶你玩啊哈哈哈

Python都很熟悉了,然而作為「管理工具」,在語言的設計上可能不如ps來得直接

但是如果對象換成bash腳本,就有種豁然開朗的感覺,這玩意可能....能替代bash腳本那蛋疼的感覺。


我的感覺是,如果你的一個過程:

  1. 完全是命令行的命令
  2. 命令之間不傳遞任何值
  3. 完全順序執行,並且沒有子過程

(比如用 apt-get 安裝一堆東西)

則 PowerShell 或者 BashScript 更方便。

否則 Python 更方便。


PS 感覺和 Python 適用場景差的挺遠,我覺得真的想要對比的話,PS 對的應該是 JVM 這邊的 Ammonite。

你看 Ammonite 多好,用的是 Scala 的語法,能用 Java 的庫並且還能在腳本里 import 依賴包,還能像 Python 一樣 import 其他腳本,還能像 bash 一樣寫,最重要的是有 IDEA 支持,為啥不用它呢?(逃


Python不跨平台,他只是「碰巧」能在Windows上運行

pwsh沒怎麼用過,命令太長感覺沒有IDE活不下去


都叫腳本,但是不是一個東西吧。Powershell至少也要跟Bash之類的比才對。當然這倆也是有交集的。這個交集就是Perl的業務範圍。

既然你說Powershell Core了,那你就是Linux / macOS了唄。日常也不建議使用。和Zsh相比,所有命令都重新背一遍更長的版本,Omz這些現成的東西都沒有,要重新自己寫。

日常就是簡單的Bash,複雜的用Bash調Python就好了。

Powershell主要的價值是和.net對象體系交互,除了這點就是個渣。


powershell才是終端的未來,適合做一些日常功能,批處理

python更適合寫一些功能,比如你懂的熱門技術


日常使用用powershell,寫小應用用python。


謝邀,哈哈,因為現在才開始接觸這個,個人覺得Python入門的話特別容易上手,基本上用著用著就很熟練了,然後覺得資料庫也比較多吧。


領域不同。

PowerShell和.NET切合,可以想像是一個運行在.NET上的Bash(當然實際上不是),如果你對.NET的系統熟悉,PS會是一個好選擇。

Python則有自己的生態系統,而且Python更像一個編程語言而不是腳本。如果你更需要一個編程語言,那Python會更合適。


劣勢不知道主要不常用,優勢的話powershell微軟親兒子win上的api肯定多,python的話大概就是能用的包多


推薦閱讀:

PowerShell指令為什麼都要採用 Verb-XXXX 的格式?
PowerShell 與 cmd 有什麼不同?

TAG:Python | PowerShell |