# 為何要學習命令列模式 難度:☆未入門 2017台北市文山社大Python課到最後一節時,竟然還有同學問「為甚麼常叫出那個黑色框框來跑Python?」,這表示有些同學對程式執行的基本概念非常陌生。在這裡我稍為說明一下: :::success 我的習慣是文章和程式源碼post上後,會不定期檢查修改,務求文字精練準確,內容完備。本文亦不例外,內容將不斷更新。 ::: 就如同老師的解釋,那個黑色框框稱為命令列(Command line)視窗,我自己有時會叫作DOS window(其實已和DOS無關)。叫出這個視窗,除了老師教的打`cmd`之外,也可以從開始 -> 所有程式 -> 附屬應用程式 -> 「命令列提示字元」開啟。 為甚麼要叫出這個命令列視窗才能跑Python?答案是命令列的模式本來就是Windows的核心,不只是Python,事實上所有程式內部都是在這個模式上運行。也不只Windows,Linux基本上也是在命令列上執行所有功能和程式。 那又為甚麼平常我們都是在Windows的「桌面」或者從「開始」那裡用滑鼠「點選」圖示執行程式,很少在命令列上執行呢?這是因為Windows這個作業系統用了種種GUI(這老師有講噢,就是Graphical User Interfcae, 使用者圖形介面)的技術,將原來要在命令列上執行的程式,「包裝」成現在大家看到漂漂亮亮的樣子。這些GUI物件只是Windows作業系統的「殼」,是給使用者甜頭的「糖衣」,當然那不是毒藥。撕開糖衣,內部運作還是命令列。例如要跑Excel,一般我們都是點選桌面上的圖示,或點選「開始」的地方,其實也可以開一個命令列視窗,cd到Excel安裝的目錄,直接輸入'Excel'執行。 那何以Python沒有圖示可以點選,或者老師何以不採用GUI的模式教授Python,而偏偏要用命令列視窗的最原始方式呢?原因是: 1. Python的「直譯器(interpreter)」或稱「編譯器(compiler)」即Python.exe本來就是用命令列模式執行。compilerS一般都是命令列模式(在IDE上可以直接run,那也是將命令列模式的compiler包裝成GUI而已)。還有用來安裝openpyxl, wxpython, cx_Freeze等library的 pip.exe程式(此工具在安裝Python時順帶安裝),也是命令列版本。當然pip.exe可以包成GUI版,那不難,同學有興趣可以試寫一下。 2. 一般剛學習一種程式語言時,最好是focus在語言本身,而不要管那些GUI甚麼的,不然學習起來會失焦。命令列模式完全不涉及任何GUI,是比較理想的學習方法。事實上不只是Python,就算學習Java, C#等其他主流語言,如果老師循序漸進教學,大概都會從命令列模式教起吧。 所以,大家不要被GUI寵壞了,電腦內部的世界其實還是Command line喲。 ###### tags: `command line` `命令列` <style type="text/css"> /* @import url('https://fonts.googleapis.com/css?family=Inconsolata&display=swap'); */ body { } .deepRed{ color: #8B0000; } .magentaBold { color: #FF00FF; font-weight: bold; } #b { color: #00008B; } #r { color: #8B0000; } .b { color: #00008B; } #dk { color: #1E90FF; } .t { color: #FF6347; font-size: 110%; font-weight: bold; } .r { color: red; font-weight: bold; } #cg120 { color: #008248; font-weight: bold; font-size: 120%; } .classA { color: #66E141; font-weight: bold; font-size: 130%; } .classB { color: #41C6E1; font-weight: bold; font-size: 130%; } .classC { color: #E1B141; font-weight: bold; font-size: 130%; } .highlight { color: red; font-weight: bold; font-size: 120%; } .PK { color: #E6005C; font-weight: bold; font-size: 115%; } .FK { color: #FF8C69; font-weight: bold; } .dot { color: #DAA520; //#8B4513; font-weight: bold; font-size: 125%; } .smalldot { color: #4CDA21; font-weight: bold; font-size: 125%; } .hi { color: #E6005C; font-weight: bold; //font-size: 115%; } .tableTitle { color: #B22222; //000080 font-weight: bold; text-align: center; } .HeYeLv { color: #1A6840; // #008248; } .YingWuLv { color: #5BAE23; } .ShenZhuYue { color: #3C69A6; } .HaiQing { color: #22A2C3; } .lightRed { color: #DC143C; font-weight: bold; } .Bloody { color: #7E2723; } .bloody180 { color: #7E2723; //A63732; font-weight: bold; font-size: 180%; } .Fei { color: #D15B3A; } .DaHong { color: #FF2121; } .QiuHaiTangHong { color: #EC2B24; } .CuiLv { color: #20A162; } .MuGuaHuang { color: #F9C116; } .JieHuang { color: #D9A40E; } .CangHuang { color: #806332; } .ChiHong { color: #C3272B; } .Red { color: #FF0000; } .Magenta { color: #FF00FF; } .lightBack { background-color: #FFFF99; } .beginner { /* color: #008248; */ color: #20A162; font-weight: bold; } .adv { /* color: red; */ /* color: #D9A40E; */ color: #FF4C00; font-weight: bold; } .pro { /* color: #A63732; */ color: #801DAE; font-weight: bold; } .fonts { font-family: Inconsolata, Consolas, Ubuntu Mono, mononoki, Iosevka, Fantasque Sans Mono, agave, Fira Code, ProggyVector, Office Code Pro, Menlo, monospace, 華康細明體, 細明體, 微軟正黑體, 華康中圓體; } .font-Ubuntu { font-family: Ubuntu Mono, Inconsolata, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Office Code Pro, Menlo, Consolas, monospace, 華康中圓體, 微軟正黑體, 文鼎新中黑, 華康中黑體, 華康細明體, 細明體; } .titleLev1 { color: #2A2C4B; font-family: Ubuntu Mono, Inconsolata, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Office Code Pro, Menlo, Consolas, monospace, 華康中圓體, 微軟正黑體, 文鼎新中黑, 華康中黑體, 華康細明體, 細明體; font-weight: bold; font-size: 110%; text-align: center; } .titleLev2 { color: #B54C3F; font-family: Ubuntu Mono, Inconsolata, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Office Code Pro, Menlo, Consolas, monospace, 華康中圓體, 微軟正黑體, 文鼎新中黑, 華康中黑體, 華康細明體, 細明體; font-weight: bold; font-size: 120%; } .titleLev3 { color: #22A2C3; font-family: Ubuntu Mono, agave, Inconsolata, mononoki, Iosevka, Fantasque Sans Mono, Fira Code, Menlo, 華康中圓體, 微軟正黑體, 華康細明體, 細明體; font-weight: bold; font-size: 115%; } .titleLev4 { color: #7E5E83; font-family: Ubuntu Mono, Inconsolata, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Office Code Pro, Menlo, Consolas, monospace, 華康中圓體, 微軟正黑體, 文鼎新中黑, 華康中黑體, 華康細明體, 細明體; font-weight: bold; font-size: 110%; } .titleLev5 { color: #207F4C; font-family: Ubuntu Mono, Inconsolata, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Office Code Pro, Menlo, Consolas, monospace, 華康中圓體, 微軟正黑體, 文鼎新中黑, 華康中黑體, 華康細明體, 細明體; font-weight: bold; font-size: 108%; } .titleLev6 { /* color: #5E878A; */ color: #C89B40; font-family: Ubuntu Mono, Inconsolata, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Office Code Pro, Menlo, Consolas, monospace, 華康中圓體, 微軟正黑體, 文鼎新中黑, 華康中黑體, 華康細明體, 細明體; font-weight: bold; font-size: 108%; } .Walrus { color: #FF2121; font-family: Consolas, Ubuntu Mono, mononoki, Consolas, 細明體 ; font-size: 1500%; font-weight: bold; } .blockquote { color: #1BA1E2; font-size: 100%; line-height: 18px; } .great { color: #E50000; /* font-weight: bold; */ } .awful { color: #008989; /* font-weight: bold; */ } .QA { color: #1C3A90; } .myImg { margin-left: auto; margin-right:auto; display: block; } .font500 { font-weight: bold; font-size: 500%; } .font300 { font-weight: bold; font-size: 300%; } .font200 { font-weight: bold; font-size: 200%; } .font150 { font-weight: bold; font-size: 150%; } .font130 { font-weight: bold; font-size: 130%; } .font125 { font-weight: bold; font-size: 125%; } .font120 { font-weight: bold; font-size: 120%; } .font115 { font-size: 115%; } .font110 { font-size: 110%; } .font108 { font-size: 108%; } .font105 { font-size: 105%; } .font100 { font-size: 100%; } .font96 { font-size: 96%; } .font94 { font-size: 94%; } .font90 { font-size: 90%; } .font88 { font-size: 88%; } .font86 { font-size: 86%; } .font82 { font-size: 82%; } .font80 { font-size: 80%; } .font75 { font-size: 75%; } .font70 { font-size: 70%; } .font65 { font-size: 65%; } .font60 { font-size: 60%; } .font50 { font-size: 50%; } .trim { margin-left: 0px; margin-right: 0px; broder: 0px; padding: 0px; } .bold { font-weight: bold; } .blur { opacity: 0.20; } .statement { color: #22A2C3; } .func { color: #806332; } .str { color: #EC2B24; } .filename { color: #1A6840; } .codeFont { font-size: 110%; font-weight: bold; } .hiBold { font-size: 110%; font-weight: bold; color: #EC2B24; } .markdown-body code { /* inline code */ font-family: Inconsolata, Consolas, Ubuntu Mono, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Menlo, Inconsolata, monospace; font-size: 100%; /* background-color: #EEEEEE; */ background-color: #E4E4E4; } .markdown-body pre code { /* code block */ font-family: Inconsolata, Consolas, Ubuntu Mono, Iosevka, Fantasque Sans Mono, mononoki, agave, Fira Code, ProggyVector, Menlo, Inconsolata, monospace; font-size: 110%; line-height: 16px; } .markdown-body { max-width: 1500px; } .CodeMirror { font-family: Inconsolata !important; } .borderlessTable { border: 0; } .markdown-body table th, .markdown-body table td { padding: 2px 3px 2px 5px !important; // margin: 20px 30px 50px 10px !important; border: 2px solid #ddd; } ul { display: block; /* list-style-type: disc; */ margin-block-start: 0.8em; margin-block-end: 0.8em; margin-inline-start: 0px; margin-inline-end: 0px; padding-inline-start: 15px; padding: 0px; } .markdown-body ul, .markdown-body ol { padding-left: 1em !important; margin: 0 0 0 0; } </style>