Python: 學習 Python

全面的 Python 指南

👋 歡迎來到 Stackhero 文檔!

Stackhero 提供一個即用型的 Python 雲端 解決方案,帶來多項好處,包括:

  • 只需一個簡單的 git push,即可在幾秒鐘內部署您的應用程式。
  • 使用您自己的域名,並享受 HTTPS 證書的自動配置以增強安全性。
  • 享受自動備份一鍵更新,以及簡單、透明且可預測的定價,讓您安心無憂。
  • 得益於專用的私人 VM,獲得最佳的性能和強大的安全性

節省時間簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Python 雲端託管 解決方案!

本指南提供了 Python 基本概念和語法的概覽。它既是經驗豐富的開發者的快速複習,也是初學者的友好介紹。從基本數據類型到高級功能,這份速查表涵蓋了控制流、函數、類別、對象和常見模組等主題。在進行 Python 項目時,請隨時將其作為快速參考。請記住,Python 擁有龐大的庫和框架生態系統,因此探索其他資源和文檔將幫助您深入研究專業主題。

祝編程愉快!

Python 是由 Guido van Rossum 創建並於 1991 年首次發布的多功能高級編程語言。它因其可讀性和簡單性而受到歡迎,對於初學者和經驗豐富的開發者來說都是絕佳選擇。Python 廣泛應用於網頁開發、數據分析、人工智能、機器學習和自動化等多個領域。

Python 的一些常見用例包括使用 Django 或 Flask 等框架構建網頁應用程序,使用 pandas 和 matplotlib 等庫進行數據分析和可視化,使用 TensorFlow 和 scikit-learn 等工具開發機器學習模型。

Python 的龐大標準庫和繁榮的第三方包生態系統使其成為一種強大且靈活的語言,能夠應對廣泛的編程任務。

Python 的基本數據類型包括整數(整數)、浮點數(帶小數的數字)、布爾值(真/假值)和字符串(字符序列):

  • int: 整數,例如 42
  • float: 浮點數,例如 3.14
  • bool: 布爾值,例如 TrueFalse
  • str: 字符串,例如 "hello"

例子:

integer = 42
floating_point = 3.14
boolean = True
string = "Hello, World!"

Python 提供了多種數據結構來幫助您有效地組織、存儲和操作數據。最常用的是列表、元組、字典和集合。列表和元組維持元素的有序序列,字典存儲鍵值對,集合存儲唯一元素。每種結構都有一系列針對特定用例的方法。

  • 列表:my_list = [1, 2, 3, 4]
  • 元組:my_tuple = (1, 2, 3, 4)
  • 字典:my_dictionary = {'key1': 'value1', 'key2': 'value2'}
  • 集合:my_set = {1, 2, 3, 4}

列表是可變的、有序的元素集合。它們允許重複,並且可以包含各種數據類型的元素,包括其他列表、元組、字典或集合。您可以輕鬆添加、更新和刪除元素。列表用方括號 [] 定義,元素用逗號分隔。

關於列表的要點:

  1. 可變且有序
  2. 允許重複元素
  3. 保持元素添加的順序
  4. 支持多種數據類型
  5. 提供添加、更新和刪除元素的操作

當您需要動態且可調整大小的項目集合時,列表通常會被使用。

例子:

# 創建列表
my_list = [1, 2, 3, 4, 5]

# 訪問元素
print(my_list[0])  # 輸出:1
print(my_list[-1])  # 輸出:5

# 添加元素
my_list.append(6)
print(my_list)  # 輸出:[1, 2, 3, 4, 5, 6]

# 更新元素
my_list[0] = 0
print(my_list)  # 輸出:[0, 2, 3, 4, 5, 6]

# 刪除元素
del my_list[0]
print(my_list)  # 輸出:[2, 3, 4, 5, 6]

字典是可變的、無序的鍵值對集合。每個鍵必須是唯一的,您可以使用這些鍵來訪問其關聯的值。與列表一樣,字典可以存儲各種數據類型的元素,包括嵌套集合。它們用大括號 {} 定義,鍵值對用逗號分隔,鍵和值用冒號分隔。

關於字典的要點:

  1. 可變且無序的集合
  2. 由鍵值對組成,鍵唯一
  3. 使用鍵訪問值
  4. 存儲多種數據類型

字典非常適合需要查找的任務,例如配置設置或頻率計數。

例子:

# 創建字典
my_dictionary = {'a': 1, 'b': 2, 'c': 3}

# 訪問元素
print(my_dictionary['a'])  # 輸出:1

# 添加元素
my_dictionary['d'] = 4
print(my_dictionary)  # 輸出:{'a': 1, 'b': 2, 'c': 3, 'd': 4}

# 更新元素
my_dictionary['a'] = 0
print(my_dictionary)  # 輸出:{'a': 0, 'b': 2, 'c': 3, 'd': 4}

# 刪除元素
del my_dictionary['a']
print(my_dictionary)  # 輸出:{'b': 2, 'c': 3, 'd': 4}

元組是不可變的、有序的元素集合。它們的工作方式與列表類似,但一旦創建元組,其元素就不能更改、添加或刪除。元組用括號 () 定義,元素用逗號分隔。

關於元組的要點:

  1. 不可變且有序的集合
  2. 支持多種數據類型
  3. 固定大小的結構

當您需要不可更改的集合,或想將集合用作字典鍵時,元組很有用。

例子:

# 創建元組
my_tuple = (1, 2, 3, 4, 5)

# 訪問元素
print(my_tuple[0])  # 輸出:1
print(my_tuple[-1])  # 輸出:5

# 注意:元組是不可變的

集合是可變的、無序的集合,存儲唯一元素。它們自動刪除重複項,並且不維持順序。集合可以包含多種數據類型的元素,但不包括可變類型,如列表和字典。它們可以用大括號 {}set() 構造函數定義。

關於集合的要點:

  1. 可變且無序
  2. 僅存儲唯一元素,自動刪除重複項
  3. 排除可變類型(如列表和字典)

集合非常適合成員測試、去重和執行集合操作,如聯集、交集和差集。

# 創建集合
my_set = {1, 2, 3, 4, 5}

# 檢查成員資格
print(1 in my_set)  # 輸出:True

# 添加元素
my_set.add(6)
print(my_set)  # 輸出:{1, 2, 3, 4, 5, 6}

# 通過刪除一個元素並添加另一個元素來更新
my_set.remove(1)
my_set.add(0)
print(my_set)  # 輸出:{0, 2, 3, 4, 5, 6}

# 刪除元素
my_set.remove(0)
print(my_set)  # 輸出:{2, 3, 4, 5, 6}

條件語句允許您根據條件的真偽執行代碼。

if condition1:
  # 做某事
elif condition2:
  # 做其他事
else:
  # 做另一件事

例子:

x = 42

if x > 50:
  print("x 大於 50")
elif x < 50:
  print("x 小於 50")
else:
  print("x 等於 50")

for 循環遍歷序列,如列表或範圍,對每個元素執行一段代碼。

例子:

for i in range(5):
  print(i)

while 循環在指定條件為真時執行一段代碼。

例子:

i = 0
while i < 5:
  print(i)
  i += 1

函數將代碼封裝成可重用的塊,可以接受輸入(參數)並返回輸出。它們使用 def 關鍵字定義,可以通過名稱調用。

def function_name(argument1, argument2=default_value):
  # 做某事
  return result

例子:

def add(a, b):
  return a + b

result = add(3, 4)
print(result)  # 輸出:7

Lambda 函數,也稱為匿名函數,是使用 lambda 關鍵字創建的簡潔單表達式函數。它們通常用於短操作,通常作為 map()filter()sorted() 等函數的參數。

lambda arguments: expression

例子:

add = lambda a, b: a + b
result = add(3, 4)
print(result)  # 輸出:7

列表推導式讓您通過將表達式與循環和可選條件結合在一起,在一行中創建列表。它們非常適合轉換或過濾數據。

new_list = [expression for item in iterable if condition]

例子:

squares = [x * x for x in range(1, 6)]
print(squares)  # 輸出:[1, 4, 9, 16, 25]

異常處理使您的程序能夠優雅地管理運行時錯誤。Python 提供 tryexceptfinally 塊來捕獲和處理異常,確保您的程序順利繼續或退出。

try:
    # 可能引發異常的代碼
except ExceptionType as error_variable:
    # 處理異常
finally:
    # 無論是否發生異常都要執行的代碼

例子:

try:
  result = 10 / 0
except ZeroDivisionError:
  print("不能除以零!")

類別定義了面向對象編程(OOP)中創建對象的藍圖。對象是類別的實例,具有執行特定任務的屬性(數據)和方法(函數)。OOP 促進了結構化、可重用和可維護的代碼。

class ClassName:
  def __init__(self, attribute1, attribute2):
    self.attribute1 = attribute1
    self.attribute2 = attribute2

  def method_name(self, argument1):
    # 做某事
    return result

例子:

class Dog:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def bark(self):
    print("Woof!")

# 創建 Dog 的實例
dog1 = Dog("Buddy", 3)
dog1.bark()  # 輸出:Woof!

模組是包含 Python 代碼(如函數、類別或變量)的單獨文件。導入模組使您能夠通過使用外部庫和框架來擴展程序的功能。

import module_name
from module_name import specific_function_or_class

例子:

import math
print(math.sqrt(16))  # 輸出:4.0

文件輸入/輸出(I/O)涵蓋了在 Python 中讀取和寫入文件。這在處理數據存儲和檢索時至關重要。

with open('filename.txt', 'r') as file:
  content = file.read()
with open('filename.txt', 'w') as file:
  file.write('content to write to the file')

上下文管理器有助於管理資源,如文件或網絡連接,確保它們被正確獲取和釋放。使用上下文管理器可確保您的代碼更清晰且更具容錯性。

with resource as alias:
  # 使用 resource 作為 alias

例子:

with open('file.txt', 'r') as file:
  content = file.read()
  print(content)  # 輸出:Hello, World!

裝飾器允許您在不更改源代碼的情況下擴展或修改函數或類別的行為。它們包裝另一個函數,並在執行包裝的函數之前或之後添加一些功能。

def decorator_function(func):
  def wrapper(*args, **kwargs):
    # 在調用函數之前做某事
    result = func(*args, **kwargs)
    # 在調用函數之後做某事
    return result
  return wrapper

@decorator_function
def my_function():
  # 做某事

例子:

def greet_decorator(func):
  def wrapper(name):
    return "Hello, " + func(name) + "!"
  return wrapper

@greet_decorator
def get_name(name):
  return name

print(get_name("John"))  # 輸出:Hello, John!

Itertools 模組提供了創建和使用迭代器的函數。它包括無限迭代器(如 count、cycle 和 repeat)、有限迭代器(如 accumulate、chain、compress)和組合迭代器(如 product、permutations 和 combinations)。

例子:

import itertools

for i in itertools.count(5, 5):
  if i > 20:
    break
  print(i)  # 輸出:5, 10, 15, 20

Collections 模組提供了可以改進您的程序的專門容器數據類型。

from collections import namedtuple, defaultdict, Counter, deque

例子:

from collections import namedtuple, deque, Counter, OrderedDict, defaultdict

# namedtuple
Person = namedtuple('Person', 'name age')
person1 = Person("Alice", 30)
print(person1.name, person1.age)  # 輸出:Alice 30

# deque
dq = deque([1, 2, 3, 4, 5])
dq.append(6)
dq.appendleft(0)
print(dq)  # 輸出:deque([0, 1, 2, 3, 4, 5, 6])

# Counter
count = Counter("hello world")
print(count)  # 輸出:Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

# OrderedDict
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
print(od)  # 輸出:OrderedDict([('a', 1), ('b', 2), ('c', 3)])

# defaultdict
dd = defaultdict(int)
dd['a'] += 1
dd['b'] += 2
print(dd)  # 輸出:defaultdict(<class 'int'>, {'a': 1, 'b': 2})

正則表達式使強大的文本處理和操作成為可能。re 模組提供了 match、search、findall、finditer、split 和 sub 等函數。

例子:

import re

pattern = r'\d+'
result = re.findall(pattern, "There are 10 cats and 5 dogs.")
print(result)  # 輸出:['10', '5']

處理日期和時間是常見需求,尤其是數據分析或計劃任務時。datetime 模組提供了處理日期、時間和間隔的類別和函數。

import datetime

# datetime, date, time, timedelta, timezone

例子:

from datetime import datetime, timedelta

# 當前日期和時間
current_time = datetime.now()
print("當前日期和時間:", current_time)

# 自定義日期和時間
custom_date = datetime(2022, 12, 31, 23, 59, 59)
print("自定義日期和時間:", custom_date)

# 將字符串轉換為 datetime
date_str = "2023-01-01 00:00:00"
date_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("字符串轉換為 datetime:", date_obj)

# 將 datetime 轉換為字符串
date_str2 = date_obj.strftime("%Y-%m-%d %H:%M:%S")
print("Datetime 轉換為字符串:", date_str2)

# 日期和時間算術
one_day = timedelta(days=1)
yesterday = current_time - one_day
tomorrow = current_time + one_day
print("昨天:", yesterday)
print("明天:", tomorrow)

列表切片允許您通過指定開始、結束和可選步長值來提取列表或其他序列類型的一部分。此功能對於提取子序列非常有用。

my_list[start:end:step]

例子:

my_list = [0, 1, 2, 3, 4, 5]
sub_list = my_list[1:4]
print(sub_list)  # 輸出:[1, 2, 3]

字符串格式化是將靜態文本與動態值結合的過程。Python 提供了多種格式化方法,包括 %-格式化、str.format() 方法和 f-strings(Python 3.6+),這些方法允許您輕鬆生成格式化字符串。

print("Hello, %s" % name)
print("Hello, {}".format(name))
print(f"Hello, {name}")

例子:

name = "John"
age = 30
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)  # 輸出:My name is John and I am 30 years old.

命令行參數允許您在從命令行執行 Python 腳本時傳遞輸入值。sys.argv 列表提供對這些參數的訪問,使其易於在腳本中解析和使用。

import sys

arguments = sys.argv

例子:

# 將此代碼保存到名為 "cmd_args.py" 的文件中
# 使用以下命令運行:python cmd_args.py Alice
# 預期輸出:Hello, Alice!
import sys

if len(sys.argv) > 1:
  print(f"Hello, {sys.argv[1]}!")
else:
  print("未提供參數。")