Linux平臺下Python腳本編程入門(一)
眾所周知,系統管理員需要精通一門腳本語言,而且招聘機構列出的職位需求上也會這么寫。大多數人會認為 Bash (或者其他的 shell 語言)用起來很方便,但一些強大的語言(比如 Python)會給你帶來一些其它的好處。
首先,我們會使用 Python 的命令行工具,還會接觸到 Python 的面向對象特性(這篇文章的后半部分會談到它)。
學習 Python 可以助力于你在桌面應用開發及數據科學領域的職業發展。
容易上手,廣泛使用,擁有海量“開箱即用”的模塊(它是一組包含 Python 語句的外部文件),Python 理所當然地成為了美國計算機專業大學生在一年級時所上的程序設計課所用語言的不二之選。
在這個由兩篇文章構成的系列中,我們將回顧 Python 的基礎部分,希望初學編程的你能夠將這篇實用的文章作為一個編程入門的跳板,和日后使用 Python 時的一篇快速指引。
Linux 中的 Python
Python 2.x 和 3.x 通常已經內置在現代 Linux 發行版中,你可以立刻使用它。你可以終端模擬器中輸入 python 或 python3 來進入 Python shell, 并輸入 quit() 退出。
- $ which python
- $ which python3
- $ python -v
- $ python3 -v
- $ python
- >>> quit()
- $ python3
- >>> quit()
在 Linux 中運行 Python 命令
如果你希望在鍵入 python 時使用 Python 3.x 而不是 2.x,你可以像下面一樣更改對應的符號鏈接:
- $ sudo rm /usr/bin/python
- $ cd /usr/bin
- $ ln -s python3.2 python # Choose the Python 3.x binary here
刪除 Python 2,使用 Python 3
順便一提,有一點需要注意:盡管 Python 2.x 仍舊被使用,但它并不會被積極維護。因此,你可能要考慮像上面指示的那樣來切換到 3.x。2.x 和 3.x 的語法有一些不同,我們會在這個系列文章中使用后者。
另一個在 Linux 中使用 Python 的方法是通過 IDLE (Python 集成開發環境(the Python Integrated Development Environment)),這是一個為編寫 Python 代碼而生的圖形用戶界面。在安裝它之前,你***查看一下適用于你的 Linux 發行版的 IDLE 可用版本。
- # aptitude search idle [Debian 及其衍生發行版]
- # yum search idle [CentOS 和 Fedora]
- # dnf search idle [Fedora 23+ 版本]
然后,你可以像下面一樣安裝它:
- $ sudo aptitude install idle-python3.2 # I'm using Linux Mint 13
安裝成功后,你會看到 IDLE 的運行畫面。它很像 Python shell,但是你可以用它做更多 Python shell 做不了的事。
比如,你可以:
- 輕松打開外部文件 (File → Open);
- 復制 (Ctrl + C) 和粘貼 (Ctrl + V) 文本;
- 查找和替換文本;
- 顯示可能的代碼補全(一個在其他 IDE 里可能叫做“智能感知”或者“自動補完”的功能);
- 更改字體和字號,等等。
Python Shell
最厲害的是,你可以用 IDLE 創建桌面應用。
我們在這兩篇文章中不會開發桌面應用,所以你可以根據喜好來選擇 IDLE 或 Python shell 去運行下面的例子。
Python 中的基本運算
就像你預料的那樣,你能夠直接進行算術操作(你可以在你的所有運算中使用足夠多的括號!),還可以輕松地使用 Python 拼接字符串。
你還可以將運算結果賦給一個變量,然后在屏幕上顯示它。Python 有一個叫做拼接 (concatenation) 的實用功能——給 print 函數提供一串用逗號分隔的變量和/或字符串,它會返回一個由你剛才提供的變量依序構成的句子:
- >>> a = 5
- >>> b = 8
- >>> x = b / a
- >>> x
- 1.6
- >>> print(b, "divided by", a, "equals", x)
注意,你可以將不同類型的變量(數字,字符串,布爾符號等等)混合在一起。當你將一個值賦給一個變量后,你可以隨后更改它的類型,不會有任何問題(因此,Python 被稱為動態類型語言)。
如果你嘗試在靜態類型語言中(如 Java 或 C#)做這件事,它將拋出一個錯誤。
學習 Python 的基本操作
面向對象編程的簡單介紹
在面向對象編程(OOP)中,程序中的所有實體都會由對象的形式呈現,并且它們可以與其他對象交互。因此,對象擁有屬性,而且大多數對象可以執行動作(這被稱為對象的方法)。
舉個例子:我們來想象一下,創建一個對象“狗”。它可能擁有的一些屬性有顏色、品種、年齡等等,而它可以完成的動作有 叫()、吃()、睡覺(),諸如此類。
你可以看到,方法名后面會跟著一對括號,括號當中可能會包含一個或多個參數(向方法中傳遞的值),也有可能什么都不包含。
我們用 Python 的基本對象類型之一——列表來解釋這些概念。
解釋對象的屬性和方法:Python 中的列表
列表是條目的有序組合,而這些條目所屬的數據類型并不需要相同。我們像下面一樣來使用一對方括號,來創建一個名叫 rockBands 的列表:
你可以向 rockBands 的 append() 方法傳遞條目,來將它添加到列表的尾部,就像下面這樣:
- >>> rockBands = []
- >>> rockBands.append("The Beatles")
- >>> rockBands.append("Pink Floyd")
- >>> rockBands.append("The Rolling Stones")
為了從列表中移除元素,我們可以向 remove() 方法傳遞特定元素,或向 pop() 中傳遞列表中待刪除元素的位置(從 0 開始計數)。
換句話說,我們可以用下面這種方法來從列表中刪除 “The Beatles”:
- >>> rockBands.remove("The Beatles")
或者用這種方法:
- >>> rockBands.pop(0)
如果你輸入了對象的名字,然后在后面輸入了一個點,你可以按 Ctrl + space 來顯示這個對象的可用方法列表。
列出可用的 Python 方法
列表中含有的元素個數是它的一個屬性。它通常被叫做“長度”,你可以通過向內建函數 len 傳遞一個列表作為它的參數來顯示該列表的長度(順便一提,之前的例子中提到的 print 語句,是 Python 的另一個內建函數)。
如果你在 IDLE 中輸入 len,然后跟上一個不閉合的括號,你會看到這個函數的默認語法:
Python 的 len 函數
現在我們來看看列表中的特定條目。它們也有屬性和方法嗎?答案是肯定的。比如,你可以將一個字符串條目轉換為大寫形式,并獲取這個字符串所包含的字符數量。像下面這樣做:
- >>> rockBands[0].upper()
- 'THE BEATLES'
- >>> len(rockBands[0])
- 11
總結
在這篇文章中,我們簡要介紹了 Python、它的命令行 shell、IDLE,展示了如何執行算術運算,如何在變量中存儲數據,如何使用 print 函數在屏幕上重新顯示那些數據(無論是它們本身還是它們的一部分),還通過一個實際的例子解釋了對象的屬性和方法。
下一篇文章中,我們會展示如何使用條件語句和循環語句來實現流程控制。我們也會解釋如何編寫一個腳本來幫助我們完成系統管理任務。
你是不是想繼續學習一些有關 Python 的知識呢?敬請期待本系列的第二部分(我們會在腳本中將 Python 和命令行工具的優點結合在一起),你還可以考慮購買我們的《*** Python 編程》系列教程(這里有詳細信息)。
像往常一樣,如果你對這篇文章有什么問題,可以向我們尋求幫助。你可以使用下面的聯系表單向我們發送留言,我們會盡快回復你。