Python 虛擬環境是開發過程中不可或缺的工具,能有效隔離專案依賴項,避免版本衝突。透過 venv 模組,可以輕鬆建立和管理虛擬環境,確保專案在不同環境中的一致性。配合 CLI 命令列操作,能更有效率地管理檔案系統和執行開發任務。熟悉 ls、cd、mkdir、rm 等指令,能提升開發效率。Git 作為版本控制系統,則能追蹤程式碼變更、方便團隊協作和程式碼管理,其分支與合併功能更有利於程式碼的組織與開發流程。瞭解這些工具能大幅提升 Python 開發效率,是每個 Python 工程師必備的技能。

虛擬環境介紹

什麼是虛擬環境?

虛擬環境是一種隔離的工作空間,能夠讓Python函式庫安裝在特定目錄下,而不會影響到全域的Python安裝。這在不同專案需要不同版本的相同套件時特別有用,因為它能避免版本衝突。每個虛擬環境都有自己的Python二進位制檔案(與用於建立它的Python直譯器版本相符),並且可以在其網站目錄中擁有自己獨立的已安裝Python套件集合。

為什麼使用虛擬環境?

在Python開發中使用虛擬環境的主要原因包括:

  • 虛擬環境允許您為不同的專案建立隔離的空間,從而管理它們所需的依賴項。這意味著您可以為不同的專案擁有不同版本的函式庫,而不會發生衝突。
  • 使用虛擬環境可以確保所有參與專案的開發人員擁有相同的依賴項,從而減少「在我的機器上可以運作」問題的發生。
  • 將所有專案依賴項隔離在虛擬環境中,可以更清楚地瞭解需要將哪些內容佈署到應用程式中,從而減少遺漏模組的可能性。
  • 虛擬環境使您可以安全地嘗試不同的套件和更新套件版本,而不會影響到其他開發工作。

如何設定和使用虛擬環境?

設定虛擬環境涉及幾個簡單的步驟:

安裝

venv 模組是Python 3中建立虛擬環境的標準工具,並且是預先安裝的。對於Python 2,則需要另外安裝 virtualenv

建立虛擬環境

對於Python 3,請導航到專案目錄並執行:

python3 -m venv myenv

myenv 替換為您的虛擬環境名稱。

對於Python 2,在安裝 virtualenv 後,您將使用:

virtualenv myenv

啟動虛擬環境

在Linux或macOS上,透過執行以下命令來啟動虛擬環境:

source myenv/bin/activate

啟動後,虛擬環境的名稱通常會出現在終端機提示符號中,表示任何Python或pip命令都只會影響這個環境。

安裝套件

一旦環境啟動,您就可以像往常一樣使用pip安裝套件:

pip install package_name

停用

要停止使用虛擬環境並傳回全域Python環境,只需執行:

deactivate

管理依賴項

要追蹤專案的依賴項,您可以透過執行以下命令來建立 requirements.txt 檔案:

pip freeze > requirements.txt

這個檔案可以用來在另一個環境或另一台機器上安裝所有必要的套件:

pip install -r requirements.txt

最佳實踐

  • 為每個專案建立一個新的虛擬環境,以保持不同專案所需的依賴項分開。
  • requirements.txt 包含在版本控制系統中是一個好習慣,但要排除虛擬環境目錄(myenv/),以避免將大量檔案上傳到儲存函式庫。
  • 保持虛擬環境中的套件更新,以利用最近的錯誤修復和改進。

更進階的工具,如 pipenvpoetry,提供了額外的依賴項管理功能。這些工具會自動為您的專案管理虛擬環境,並以更複雜的方式處理依賴項解析,提供鎖設定檔案以確保環境的可重現性。這些工具在生產場景中特別有用,因為它們能夠確保跨不同系統和佈署的一致性。

命令列介面(CLI)基礎

命令列介面(CLI)是開發人員的重要工具,特別是在管理後端網頁應用程式的開發環境時。它允許透過文字命令而不是圖形介面與電腦進行強大、快速和靈活的互動。掌握CLI可以顯著提高生產力和效率,特別是在Linux等環境中,許多開發任務可以透過命令列更有效地處理。

瞭解CLI

CLI涉及將命令輸入終端機或命令提示符,以執行特定任務,例如導航檔案系統、管理檔案和目錄、安裝軟體或控制系統程式。這些命令由shell處理,shell是一種解釋命令並充當使用者和作業系統之間中介的程式。

基本CLI命令

以下是一些基本的命令,對於在Linux基礎系統上導航和管理檔案系統至關重要,這將是您的開發環境:

pwd(列印工作目錄)

此命令顯示您目前所在的目錄,幫助您瞭解自己在檔案系統中的位置。

ls(列出)

使用此命令列出目前目錄中的所有檔案和目錄。

ls -l

提供詳細清單,包括檔案許可權、連結數、擁有者、群組、大小和最後修改日期。

ls -a

列出所有條目,包括以點開頭的隱藏條目。

cd(更改目錄)

此命令更改目前目錄。

cd /path/to/directory

將您移動到指定的目錄。

cd ..

將您向上移動一層目錄。

cd 

cd ~

將您帶回主目錄。

mkdir(建立目錄)

建立一個新的目錄。

mkdir new_directory

在目前位置建立一個名為 new_directory 的新目錄。

rmdir(刪除目錄)

刪除一個空目錄。

rmdir old_directory

如果 old_directory 為空,則刪除該目錄。

rm(刪除)

刪除檔案或目錄。

rm file.txt

刪除檔案 file.txt

rm -r directory

遞迴刪除名為 directory 的目錄及其所有內容。

touch(建立檔案)

建立一個新的空檔案或更新現有檔案的時間戳記。

touch filename

建立一個名為 filename 的新檔案,如果該檔案存在,則更新其最後修改時間。

nano、vim、emacs(文字編輯器)

這些是可用於建立和編輯檔案的文字編輯器。根據您的偏好和需求選擇合適的編輯器。

圖表說明:虛擬環境工作流程

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Python虛擬環境與CLI及Git基礎操作

package "Git 版本控制" {
    package "工作區域" {
        component [工作目錄
Working Directory] as work
        component [暫存區
Staging Area] as stage
        component [本地倉庫
Local Repository] as local
        component [遠端倉庫
Remote Repository] as remote
    }

    package "基本操作" {
        component [git add] as add
        component [git commit] as commit
        component [git push] as push
        component [git pull] as pull
    }

    package "分支管理" {
        component [git branch] as branch
        component [git merge] as merge
        component [git rebase] as rebase
    }
}

work --> add : 加入暫存
add --> stage : 暫存變更
stage --> commit : 提交變更
commit --> local : 版本記錄
local --> push : 推送遠端
remote --> pull : 拉取更新
branch --> merge : 合併分支

note right of stage
  git status 查看狀態
  git diff 比較差異
end note

@enduml

此圖示說明瞭使用虛擬環境的基本工作流程,包括建立、啟動、安裝套件、管理依賴項和停用虛擬環境的步驟。透過遵循這個流程,開發人員可以有效地隔離和管理專案依賴項,從而提高開發效率和專案的可維護性。

命令列介面(CLI)基礎操作與重要指令

在Linux環境中,命令列介面(CLI)提供了強大的工具來管理系統、自動化流程和高效完成任務。熟練掌握CLI的基本指令對於後端開發人員至關重要。

開啟和編輯檔案

  • nanovimemacs 是常用的文字編輯器,可以直接在命令列中開啟檔案進行編輯。例如:
    • nano file.txt:使用Nano編輯器開啟file.txt
    • vim file.txt:使用Vim編輯器開啟file.txt
    • emacs file.txt:使用Emacs編輯器開啟file.txt

內容解密:

這些指令讓開發者能夠直接在終端機中編輯檔案,無需開啟圖形介面。選擇合適的編輯器可以提高工作效率。

檔案操作指令

  • cat:顯示檔案內容到終端機。例如:
    • cat file.txt:將file.txt的內容印在螢幕上。

內容解密:

cat指令常用於快速檢視檔案內容,特別是在除錯或檢查日誌檔案時非常有用。

  • cp:複製檔案或目錄。例如:
    • cp source_file destination_file:將source_file複製到destination_file
    • cp -r source_directory destination_directory:遞迴複製整個目錄。

內容解密:

使用cp指令時,務必確認來源和目標路徑正確,避免資料遺失或覆寫。

  • mv:移動或重新命名檔案或目錄。例如:
    • mv old_name new_name:將檔案或目錄從old_name重新命名為new_name

內容解密:

mv指令可用於重新命名或移動檔案和目錄,是檔案管理中的基本操作。

搜尋與許可權管理

  • grep:使用正規表示式在檔案中搜尋模式。例如:
    • grep 'pattern' file.txt:在file.txt中搜尋包含’pattern’的行。

內容解密:

grep是一個強大的文字搜尋工具,支援正規表示式,能夠快速定位特定內容。

  • chmod:更改檔案許可權。例如:
    • chmod 755 file.txt:設定file.txt的許可權為所有者可讀寫執行,群組和其他使用者可讀執行。

內容解密:

正確設定檔案許可權對於系統安全至關重要。chmod指令允許精細控制檔案的存取許可權。

使用CLI的技巧

  1. 使用Tab鍵自動補全:節省時間並減少輸入錯誤。
  2. 使用上下箭頭鍵瀏覽歷史命令:方便重複或修改之前的命令。
  3. 利用管道(|)和重定向(>,»):將命令輸出導向其他命令或檔案,組合命令以高效完成複雜任務。

版本控制與Git基礎

版本控制系統是軟體開發過程中的關鍵組成部分,使開發者能夠管理原始碼的變更。它對於協作開發、除錯和理解專案演進至關重要。Git是目前最流行的分散式版本控制系統,以其高效、靈活和強大的分支管理能力而聞名。

Git基本操作

安裝Git

在Linux上,可以透過執行以下指令安裝Git:

sudo apt-get install git

驗證安裝:

git --version

設定Git

設定使用者名稱和電子郵件地址,因為Git會將這些資訊嵌入到每次提交中:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

初始化儲存函式庫

導航到專案目錄並執行:

git init

這會建立一個名為.git的子目錄,包含所有必要的儲存函式庫檔案。

複製儲存函式庫

複製一個已存在的Git儲存函式庫:

git clone https://github.com/username/repository.git

新增和提交檔案

  1. 使用 git add <filename> 將特設定檔案的變更暫存,或使用 git add . 暫存目前目錄下的所有變更。
  2. 使用 git commit -m "Commit message" 提交暫存的檔案,並附上說明變更的訊息。

分支與合併

  • 建立新分支:git branch new-branch-name
  • 切換到新分支:git checkout new-branch-name
  • 合併分支到主分支(例如 master):先切換到 master 分支,然後執行 git merge new-branch-name

推播變更

將提交推播到遠端儲存函式庫:

git push origin master

提取更新

從遠端儲存函式庫擷取並合併變更到本地機器:

git pull

處理合併衝突

當合併分支時出現競爭性變更,Git會提示手動解決衝突。編輯檔案後,執行 git add <file> 以標示衝突已解決。

檢視提交歷史

使用 git log 檢視目前分支的提交歷史。使用 git log --oneline 獲得簡要的歷史記錄。

Python回顧:語法、資料結構和函式

Python以其易讀性和簡潔性而聞名,是初學者和經驗豐富的開發者的理想選擇。Python的語法直觀,接近人類語言。

縮排

Python使用空白來定義作用域,如迴圈、函式和類別的作用域。這種縮排要求使Python程式碼非常易讀。

if 10 > 5:
    print("10 is greater than 5")

內容解密:

Python的縮排規則強製程式碼格式化,提高了程式碼的可讀性和維護性。

變數

Python中的變數在指定時建立。Python是動態型別語言,無需在宣告變數時指定其型別。

x = 5
y = "Hello, World!"

內容解密:

動態型別使得Python程式碼更靈活,但也需要開發者注意變數型別以避免執行階段錯誤。

註解

Python使用井號(#)開始寫註解。

# This is a comment

內容解密:

註解對於解釋程式碼邏輯和提高可讀性非常重要。良好的註解習慣有助於團隊協作和後期維護。

Python 程式設計基礎與最佳實踐

Python 是一種強大且靈活的程式語言,廣泛應用於後端開發、資料分析、人工智慧等領域。掌握 Python 的基礎知識和最佳實踐對於開發高效、可讀性強且易於維護的程式碼至關重要。

資料結構

Python 提供了多種內建的資料結構,包括列表(Lists)、元組(Tuples)、集合(Sets)和字典(Dictionaries)。這些資料結構各有其特點和適用場景。

列表(Lists)

列表是有序且可變的集合,允許重複元素。可以使用索引存取列表中的元素,並使用 append() 方法在列表末尾新增新元素。

fruits = ["apple", "banana", "cherry"]
print(fruits[1])  # 輸出:banana
fruits.append("orange")  # 在列表末尾新增 "orange"

內容解密:

  • fruits = ["apple", "banana", "cherry"]:建立一個包含三個水果名稱的列表。
  • print(fruits[1]):存取列表中的第二個元素(索引從 0 開始),輸出 “banana”。
  • fruits.append("orange"):在列表末尾新增新的元素 “orange”。

元組(Tuples)

元組是有序且不可變的集合,允許重複元素。元組使用圓括號表示。

thistuple = ("apple", "banana", "cherry")
print(thistuple[1])  # 輸出:banana

內容解密:

  • thistuple = ("apple", "banana", "cherry"):建立一個包含三個水果名稱的元組。
  • print(thistuple[1]):存取元組中的第二個元素,輸出 “banana”。

集合(Sets)

集合是無序且不可索引的集合,不允許重複元素。集合適合用於成員測試和消除重複元素。

thisset = {"apple", "banana", "cherry"}
print("banana" in thisset)  # 輸出:True

內容解密:

  • thisset = {"apple", "banana", "cherry"}:建立一個包含三個水果名稱的集合。
  • print("banana" in thisset):檢查 “banana” 是否在集合中,輸出 True。

字典(Dictionaries)

字典是無序、可變且可索引的集合,不允許重複鍵。字典由鍵值對組成。

thisdict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}
print(thisdict["model"])  # 輸出:Mustang

內容解密:

  • thisdict = {...}:建立一個包含汽車資訊的字典。
  • print(thisdict["model"]):存取字典中鍵為 “model” 的值,輸出 “Mustang”。

函式

函式是將程式碼分割成模組化單元的重要方式,使程式碼更具可讀性和可重用性。Python 使用 def 關鍵字定義函式。

定義函式

def greet(name):
    return "Hello, " + name

內容解密:

  • def greet(name)::定義一個名為 greet 的函式,接受一個引數 name
  • return "Hello, " + name:傳回一個問候訊息。

呼叫函式

message = greet("Alice")
print(message)  # 輸出:Hello, Alice

內容解密:

  • message = greet("Alice"):呼叫 greet 函式並傳遞引數 “Alice”,將傳回的結果指定給 message
  • print(message):輸出問候訊息。

最佳實踐

遵循 Python 的最佳實踐對於編寫高效、可讀且易於維護的程式碼至關重要。以下是一些重要的最佳實踐:

遵循 PEP 8

PEP 8 是 Python 程式碼的風格,提供了關於命名慣例、縮排、行長度等方面的規範。遵循 PEP 8 可以提高程式碼的可讀性和一致性。

編寫檔案字串(Docstrings)

檔案字串是記錄 Python 類別、方法、函式和模組的重要工具。它們使用三重引號寫成,並出現在定義之後。

def greet(name):
    """
    Greet a person with their name.
    
    Parameters:
    name (str): The name of the person to greet.
    
    Returns:
    str: A greeting message.
    """
    return f"Hello, {name}!"

內容解密:

  • """...""":定義檔案字串,描述函式的功能、引數和傳回值。
  • return f"Hello, {name}!":使用 f-string 傳回問候訊息。

使用內建函式和函式庫

Python 提供了豐富的標準函式庫和內建函式,可以幫助開發者更高效地完成常見任務。使用這些內建功能可以使程式碼更快、更乾淨。