快速掌握Python編程基礎

干貨分享,感謝您的閱讀!備注:本博客將自己初步學習Python的總結進行分享,希望大家通過本博客可以在短時間內快速掌握Python的基本程序編碼能力,如有錯誤請留言指正,謝謝!(持續更新)

一、快速了解 Python 和 環境準備

(一)Python 快速介紹

Python 是一種 簡潔、強大、易讀 的編程語言,廣泛應用于 Web 開發、數據分析、人工智能、自動化運維 等領域。它由 Guido van Rossum 在 1991 年設計,因其清晰的語法和強大的生態系統,迅速成為全球最受歡迎的編程語言之一。

2017 年底Stack Overflow 發布的數據顯示,Python 已經超越 JavaScript 成為了該平臺上提問流量最多的編程語言。

(二)Jupyter Notebook:從夢想到行業標配

Jupyter Notebook 的誕生源于創始人 Fernando Pérez一個大膽的想法:打造一個能整合 Julia(Ju)、Python(Py)和 R(ter) 這三種科學計算語言的通用計算平臺。但目前Jupyter 早已超越最初的設想,成為一個支持幾乎所有編程語言的多功能計算環境。

2017 年起,北美頂尖高校紛紛全面擁抱 Jupyter Notebook:

學術界:斯坦福的 CS231N《計算機視覺與神經網絡》 課程2017 年便完全遷移到 Jupyter Notebook、UC Berkeley 的 《數據科學基礎》 課程也在同年改用 Jupyter 作為唯一的作業平臺。

工業界: Facebook盡管大型后端開發仍依賴傳統 IDE,但幾乎所有 內部分析、機器學習訓練和數據探索 都基于 Jupyter Notebook 運行。同時 Google 的 AI Research 部門 Google Brain,也是清一色地全部使用 Jupyter Notebook(改進定制版,叫 Google Colab)。

(三)Mac 上安裝 Python 和 Jupyter Notebook 的步驟

步驟命令說明
1. 安裝 Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Mac 的包管理工具(如果未安裝)
2. 安裝 Python 3brew install python安裝最新的 Python 3
3. 驗證 Python 版本python3 --version確保安裝成功,顯示 Python 3.x.x
4. 安裝 Jupyter Notebookpip3 install jupyter通過 pip3 安裝 Jupyter
5. 檢查 Jupyter 是否可用jupyter --version確保 Jupyter 已正確安裝
6. 啟動 Jupyter Notebookjupyter notebook打開 Jupyter Notebook,瀏覽器自動打開

這樣,我們就可以在 Mac 上使用 Jupyter Notebook 進行 Python 開發了!

備注:

如果你不習慣也可以直接idea,畢竟這么多年習慣了java開發,我就是兩個都安裝了,無所謂!

如果不想安裝也可以在線使用:Jupyter 官方在線工具

二、Python 基礎:變量、數據類型與輸入輸出

Python 以其 簡潔、易讀 的語法受到歡迎,而理解變量、數據類型和輸入輸出是學習 Python 的第一步。這部分內容構成了 Python 編程的基石。這部分代碼我寫的時候都是直接在idea中,網絡版本有時很慢。Jupyter 官方在線工具

(一)變量:數據的存儲與引用

變量(Variable)是用于存儲數據的容器,在 Python 中變量不需聲明類型,直接賦值即可創建。

1. 變量的定義與賦值

x = 10  # 整數變量
name = "Alice"  # 字符串變量
pi = 3.14159  # 浮點數變量
is_python_fun = True  # 布爾變量

Python 是動態類型語言,變量的類型是根據賦值內容自動推導的。

2. 變量命名規則

  • 變量名必須 以字母或下劃線(_)開頭,不能以數字開頭。

  • 變量名只能包含 字母、數字和下劃線,不能包含空格或特殊符號。

  • 變量名區分大小寫(ageAge 是不同的變量)。

  • 推薦使用 小寫字母+下劃線snake_case)風格,如 user_name,符合 Python 代碼規范(PEP 8)。

示例:正確與錯誤的變量命名

valid_name = "OK"  # 正確
_valid_123 = 42  # 正確
2nd_value = "wrong"  # ? 錯誤:不能以數字開頭
user-name = "error"  # ? 錯誤:不能包含 `-`

(二)數據類型(Data Types)

Python 具有豐富的數據類型,主要包括:

數據類型示例說明
整數(int)x = 42存儲整數,如 10, -5, 1000
浮點數(float)pi = 3.14存儲小數,如 3.1415, -0.5
字符串(str)name = "Alice"存儲文本,如 "hello"
布爾值(bool)is_valid = True只有 TrueFalse
列表(list)nums = [1, 2, 3]有序可變的集合
元組(tuple)colors = ('red', 'blue')有序不可變的集合
字典(dict)person = {"name": "Alice", "age": 25}鍵值對存儲
集合(set)unique_nums = {1, 2, 3}無序不重復元素集合

Python 提供 type() 函數來查看變量的數據類型:

x = 42
print(type(x))  # 輸出:<class 'int'>

Python 允許不同類型之間的轉換:

age = "25"  
age = int(age)  # 將字符串轉換為整數
pi = 3.14
pi_str = str(pi)  # 將浮點數轉換為字符串

(三)輸入與輸出(Input & Output)

1. 標準輸入(input)

input() 用于從用戶獲取輸入,所有輸入默認是 字符串類型

name = input("請輸入你的名字: ")
print("你好,", name)

如果需要數值類型,需要進行 類型轉換

age = int(input("請輸入你的年齡: "))  # 輸入默認是字符串,需要轉換成整數
print("你明年就", age + 1, "歲了!")

基本驗證:

2. 標準輸出(print)

print() 用于向控制臺輸出內容:

name = "Alice"
age = 25
print("姓名:", name, "年齡:", age)  # 多個參數用逗號分隔

格式化輸出(推薦使用 f-string,Python 3.6+ 支持):

print(f"姓名: {name}, 年齡: {age}") # 推薦的寫法

? 小練習題

嘗試自己編寫代碼練習以下問題:(后面我單獨出一篇博客將答案附上)

  1. 定義一個變量 temperature,存儲 36.6,并使用 print() 輸出 "體溫: 36.6 攝氏度"

  2. 編寫一個程序,提示用戶輸入姓名和年齡,并打印 "你好,XX!你今年 YY 歲"(其中 XXYY 由用戶輸入)。

Python 的變量、數據類型和輸入輸出構成了編程的基礎,熟練掌握這些概念后,就可以進行更復雜的邏輯編寫了!

三、控制流:讓代碼具備決策能力

在編程中,控制流 決定了代碼的執行順序,使程序能夠做出決策(條件判斷),或重復執行任務(循環)。通過 布爾值、邏輯運算、if 語句、for 和 while 循環,我們可以讓 Python 代碼變得更加智能和高效。這部分我會總結下這些關鍵概念,其是構建更具邏輯性程序的基礎。

(一)布爾值與邏輯判斷

在 Python 中,布爾值(Boolean) 是控制程序邏輯的基礎。它用于 條件判斷、循環控制和邏輯運算,讓代碼具備決策能力。

1. 布爾值(Boolean)

布爾值只有兩個取值:

True  # 代表 "真"
False  # 代表 "假"

布爾值本質上是整數的特殊形式,其中:

True == 1  # 結果為 True
False == 0  # 結果為 True
布爾值的基本使用
is_python_fun = True
is_raining = Falseprint(is_python_fun)  # 輸出:True
print(type(is_python_fun))  # 輸出:<class 'bool'>

2. 比較運算符(Comparison Operators)

比較運算符用于比較兩個值,返回 TrueFalse

運算符含義示例結果
==等于5 == 5True
!=不等于5 != 3True
>大于10 > 3True
<小于2 < 8True
>=大于等于5 >= 5True
<=小于等于3 <= 2False
代碼示例
a = 10
b = 5print(a > b)   # True
print(a == b)  # False
print(a != b)  # True

3. 布爾運算符(Boolean Operators)

Python 提供了 andornot 三種邏輯運算符,用于組合多個布爾表達式。

運算符含義示例結果
and邏輯與(都為 True 時才為 TrueTrue and FalseFalse
or邏輯或(只要一個為 True 就是 TrueTrue or FalseTrue
not邏輯非(取反)not TrueFalse
3.1 and 邏輯與
x = 5
y = 10
print(x > 0 and y > 5)  # True,因為兩個條件都成立
print(x > 0 and y < 5)  # False,因第二個條件不成立
3.2 or 邏輯或
x = 5
y = 10
print(x > 0 or y < 5)  # True,只要有一個條件為 True 即可
print(x < 0 or y < 5)  # False,兩個條件都為 False
3.3 not 邏輯非
is_python_fun = True
print(not is_python_fun)  # False,因為取反了

4. 混合布爾運算(優先級)

運算符的 優先級 從高到低依次為:not(最高)、and、or(最低)

print(True or False and False)  
# 等價于 True or (False and False) → True or False → Trueprint(not True or False)  
# 等價于 (not True) or False → False or False → False

5. 布爾值與其他數據類型的轉換

在 Python 中,所有數據類型 都可以轉換為布爾值:

  • 以下情況視為 False

    • 0(整數 0)

    • 0.0(浮點數 0)

    • ""(空字符串)

    • [](空列表)

    • {}(空字典)

    • None(特殊值,表示“空”)

  • 其他情況均為 True

5.1 使用 bool() 進行類型轉換
print(bool(0))       # False
print(bool(""))      # False
print(bool([]))      # False
print(bool(42))      # True
print(bool("hello")) # True
5.2 在 if 語句中使用
name = "Alice"if name:  # 相當于 if bool(name) == Trueprint("名字有效")  
else:print("名字為空")

輸出:

名字有效

? 小練習題

練習 1:布爾運算

判斷以下表達式的結果:

  • True and False or True

  • not (False or True)

  • (10 > 5) and (3 != 3)

練習 2:用戶輸入比較

讓用戶輸入兩個數字,比較它們的大小,并輸出 "第一個數字更大""第二個數字更大"

# 提示:使用 input() 和 if 語句

布爾值和邏輯判斷是 條件判斷和循環 的基礎,熟練掌握它們后,代碼將更加智能化! 🚀

(二)🌟 條件判斷(if 語句)

在編程中,我們經常需要根據不同條件來執行不同的代碼。這就要用到 條件判斷語句(if statement)。Python 中使用 ifelifelse 關鍵字來實現條件分支。

1. 基本 if 語句

語法結構:

if 條件:語句塊

? 當“條件”為 True 時,語句塊才會被執行。

示例:

age = 20if age >= 18:print("你已經成年了")

輸出:

你已經成年了

2.?if-else 結構(兩分支選擇)

用于處理“要么這樣,要么那樣”的情況。

語法結構:

if 條件:語句塊1
else:語句塊2

示例:

temperature = 15if temperature > 20:print("北京天氣今天很暖和")
else:print("北京天氣今天有點冷")

輸出:

北京天氣今天有點冷

3. if-elif-else 結構(多分支選擇)

用于處理多個條件判斷的情況(相當于“多項選擇”)。

語法結構:

if 條件1:語句塊1
elif 條件2:語句塊2
elif 條件3:語句塊3
else:默認語句塊

示例:

score = 85if score >= 90:print("優秀")
elif score >= 80:print("良好")
elif score >= 60:print("及格")
else:print("不及格")

輸出:

良好

💡 elif 是 "else if" 的縮寫。Python 中沒有 switch 語句,if-elif-else 是推薦的替代方案。

4. 嵌套 if 語句

嵌套 指的是在一個 if 塊內部再寫 if 判斷。可以用來表示更復雜的邏輯結構。

示例:

age = 25
is_student = Trueif age < 30:if is_student:print("你是年輕的學生")else:print("你是年輕的上班族")

輸出:

你是年輕的學生

?? 注意縮進層級,Python 是靠縮進來識別代碼塊的!

5. 條件表達式(三元運算符)

Python 支持一種簡潔的寫法:在一行中完成 if-else 判斷

語法:

變量 = 值1 if 條件 else 值2

示例:

age = 16
status = "成年" if age >= 18 else "未成年"
print(status)

輸出:

未成年

適合用于 根據條件選擇一個值賦給變量 的情況。

? 小練習題

練習 1:分數等級判斷器

讓用戶輸入一個 0~100 的整數,判斷其屬于哪個等級:

  • 90 以上:優秀

  • 80~89:良好

  • 70~79:中等

  • 60~69:及格

  • 低于 60:不及格

  • 其他情況提示“輸入有誤”

練習 2:三角形合法性判斷

輸入三條邊的長度,判斷是否能組成一個三角形(任意兩邊之和大于第三邊),并進一步判斷:

  • 是等邊三角形

  • 是等腰三角形

  • 是普通三角形

  • 否則輸出“不合法的三角形”

練習 3:模擬 ATM 登錄與權限檢查(嵌套)

假設用戶名為 admin,密碼為 8888,登錄成功后再檢查是否為管理員(管理員輸入 "yes" 才能繼續操作)。

練習 4:三元運算小測試

輸入一個數字,輸出 "正數""負數""零"用三元運算符 實現。

🧠 小結

類型場景示例
if只有一個條件
if-else兩種可能,二選一
if-elif-else多種情況,依次判斷
嵌套 if條件套條件,多層判斷
三元表達式簡潔地賦值,適合一行判斷

(三)循環(Loops)

在編程中,我們常常需要重復執行某些操作,比如遍歷列表、處理每一行數據、執行某個動作直到滿足條件等等。Python 提供了兩種主要的循環結構:while 循環和 for 循環,配合控制語句(如 breakcontinue)可以構建出豐富的循環邏輯。

1. while 循環(基于條件重復執行)

? 基本語法
while 條件表達式:循環體
  • 每次循環前都會檢查“條件表達式”的值;

  • 條件為 True → 執行循環體;

  • 條件為 False → 結束循環。

🧪 示例:打印 1 到 5 的數字
i = 1
while i <= 5:print(i)i += 1
🔁 break 語句(提前終止循環)

break 用于立即跳出整個循環結構,不管循環條件是否還為 True

i = 1
while True:print(i)if i == 3:breaki += 1

輸出:1, 2, 3,然后退出循環

🔁 continue 語句(跳過當前迭代)

continue 用于跳過本次循環中剩下的語句,直接進入下一次判斷。

i = 0
while i < 5:i += 1if i == 3:continueprint(i)

輸出:1, 2, 4, 5(跳過了 3)

2.?for 循環(用于遍歷序列)

? 基本語法
for 變量 in 可迭代對象:循環體

可迭代對象包括:字符串、列表、字典、集合、元組等。

🔁 遍歷字符串
for ch in "hello":print(ch)
🔁 遍歷列表
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:print(fruit)
🔁 遍歷字典
info = {"name": "Tom", "age": 20}
for key in info:print(key, "=>", info[key])

或使用 .items() 遍歷鍵值對:

for key, value in info.items():print(f"{key}: {value}")
🔁 遍歷集合
s = {"apple", "banana", "cherry"}
for item in s:print(item)
🔁 range() 函數與數值循環
for i in range(1, 6):print(i)
  • range(n):0 到 n-1

  • range(start, end):start 到 end-1

  • range(start, end, step):按步長生成

🔁 enumerate() 結合索引遍歷

想同時獲取元素和下標時使用 enumerate()

colors = ['red', 'green', 'blue']
for index, color in enumerate(colors):print(f"{index}: {color}")

3.?循環控制語句

? break:提前終止整個循環

通常與 if 配合使用,用于在滿足某個條件時立即退出循環。

for i in range(1, 10):if i == 5:breakprint(i)
? continue:跳過當前迭代

用于跳過某些不符合條件的值。

for i in range(1, 6):if i % 2 == 0:continueprint(i)  # 輸出 1 3 5(跳過偶數)
? else 語句在循環中的作用

else 可以與 forwhile 循環一起使用:

  • 當循環沒有被 break 中斷時,else 中的語句會執行。

    for i in range(1, 5):if i == 10:break
    else:print("未被 break,循環正常結束")
    

    這在處理搜索類問題時特別有用:

    nums = [1, 3, 5, 7]
    target = 4
    for num in nums:if num == target:print("找到目標")break
    else:print("未找到目標")
    

? 小結

循環類型用途特點
while條件控制循環不確定次數時使用
for遍歷序列更簡潔,適合固定結構
break跳出循環終止整個循環體
continue跳過本次迭代繼續下一輪
else循環結構補充僅在循環未被 break時執行

? 小練習題

🧪 練習題 1:打印 1~100 中所有能被 7 整除的數
🧪 練習題 2:使用 while 計算從 1 累加到 n 的和(n 由用戶輸入)
🧪 練習題 3:找出列表中第一個大于 50 的元素,并輸出其值和索引
🧪 練習題 4:輸出 1~30 中除了能被 3 整除的數(使用 continue)
🧪 練習題 5:統計一段字符串中元音字母的個數(不區分大小寫)
🧪 練習題 6:使用 forelse 實現一個猜數字小游戲

四、🧩 函數與相關基礎知識:讓代碼會“思考”的魔法工具

在編程的世界里,函數就像是程序的“積木”:它們能把一段可復用的操作封裝起來,想用就調用,修改也方便,堪稱優雅代碼的起點。

無論是打印一行文字,計算一個數列的和,還是訓練一個 AI 模型,本質上你做的都是“定義功能 + 調用功能” —— 這正是函數的使命。

(一)函數基礎

1. 什么是函數?為什么要使用函數?

在編程中,函數是一個非常重要的概念,它可以被理解為“功能塊”,用來封裝一段代碼,供其他地方調用。通過函數,開發者可以:

  • 提高代碼復用性:避免重復寫相同的代碼,簡化開發和維護。

  • 增強可讀性:將復雜的任務拆解成小的、獨立的單元,便于理解。

  • 分隔邏輯:函數讓代碼的邏輯結構更加清晰和模塊化,有助于團隊協作開發。

例如,我們可以定義一個函數來計算兩個數字的和,而不需要每次都重復寫加法的操作。只要定義一次,后續就可以隨時調用。

2. 使用 def 定義函數

在 Python 中,函數是通過 def 關鍵字來定義的。它的基本語法如下:

def function_name(parameters):# 函數體return result
  • def 是 Python 中定義函數的關鍵字

  • function_name 是你給函數命名的名稱,符合命名規則

  • parameters 是函數的輸入(可以沒有)

  • return 是返回結果的關鍵字(如果不返回任何值,則默認為 None

示例:一個簡單的加法函數
def add(a, b):return a + b# 調用函數
result = add(3, 5)
print(result)  # 輸出: 8

這里我們定義了一個 add 函數,輸入參數是 ab,它們會被加在一起并返回結果。

3. 函數的調用和執行流程

定義函數后,調用函數就能執行該函數的代碼。Python 會根據函數調用的順序進入函數體,并執行其中的代碼。

  • 當函數被調用時,程序會暫停當前位置,跳轉到函數體執行代碼,直到遇到 return 語句(或者函數執行完畢)才返回。

  • 如果沒有 return 語句,則返回 None

示例:簡單的函數調用與返回值
def greet(name):return f"Hello, {name}!"message = greet("Alice")
print(message)  # 輸出: Hello, Alice!

這里的 greet 函數通過 return 語句返回了一個字符串,調用時傳入了參數 "Alice",最終返回 "Hello, Alice!"

4.?print()return 的區別與使用場景

在 Python 中,print()return 都用于輸出數據,但它們有顯著的不同:

  • print() 用于將信息輸出到控制臺,主要用于調試、輸出中間結果或與用戶交互。

  • return 用于函數的輸出,它將值返回給調用者,可以被其他代碼再次使用

示例:print()return 對比
# 使用 print()
def greet_print(name):print(f"Hello, {name}!")greet_print("Alice")  # 輸出: Hello, Alice!# 使用 return
def greet_return(name):return f"Hello, {name}!"message = greet_return("Alice")
print(message)  # 輸出: Hello, Alice!
  • greet_print 使用 print() 輸出值,但無法把它傳遞給其他部分的代碼。

  • greet_return 使用 return 返回結果,這個返回值可以在代碼的其他地方使用或存儲。

小結一下吧

  • 函數是代碼復用、模塊化的核心工具。

  • 使用 def 定義函數,return 返回值。

  • print() 用于輸出調試信息,return 用于返回計算結果。

(二)函數參數

函數參數是函數接收外部輸入的方式。理解和掌握函數參數的使用,不僅能幫助你編寫更靈活的代碼,還能讓你的程序更具擴展性和可維護性。

1. 位置參數

位置參數是最常見的函數參數類型,它是指參數傳遞時位置的順序決定了每個參數的含義。

例如,在函數定義時,參數 ab 的位置決定了它們的意義。當調用函數時,傳遞的參數值會根據位置匹配到相應的參數。

示例:位置參數
def add(a, b):return a + bresult = add(3, 5)  # 位置參數:3 被賦值給 a,5 被賦值給 b
print(result)  # 輸出: 8

這里的 add 函數有兩個位置參數:ab。我們調用 add(3, 5) 時,3 會賦值給 a5 會賦值給 b,最終返回它們的和。

2.?關鍵字參數

關鍵字參數允許你在調用函數時顯式地指定每個參數的名稱。這樣可以不關心參數的順序,只需要知道參數名。

示例:關鍵字參數
def greet(name, age):return f"Hello, {name}! You are {age} years old."message = greet(age=25, name="Alice")  # 參數順序不重要
print(message)  # 輸出: Hello, Alice! You are 25 years old.

在調用 greet 函數時,agename 的順序不再重要,關鍵字參數通過指定 age=25name="Alice" 來傳遞值。

3. 默認參數

默認參數是指在定義函數時,為某些參數提供默認值。如果調用時沒有提供這些參數的值,Python 會使用默認值。

示例:默認參數
def greet(name, age=18):  # age 有默認值return f"Hello, {name}! You are {age} years old."message1 = greet("Alice")  # 調用時沒有提供 age,使用默認值
message2 = greet("Bob", 30)  # 調用時提供了 age,覆蓋默認值print(message1)  # 輸出: Hello, Alice! You are 18 years old.
print(message2)  # 輸出: Hello, Bob! You are 30 years old.

greet 函數中,age 有默認值 18。如果調用時沒有傳入 age,就會使用默認值;如果傳入了 age,則會覆蓋默認值。

4. 可變參數:*args**kwargs

有時候我們不知道函數需要接收多少個參數,這時可以使用 可變參數

  • *args 用于接收位置參數,它將接收多余的位置參數并將其打包成一個元組。

  • **kwargs 用于接收關鍵字參數,它將接收多余的關鍵字參數并將其打包成一個字典。

示例:*args**kwargs
def example(*args, **kwargs):print("args:", args)print("kwargs:", kwargs)# 調用函數時傳入不同數量的參數
example(1, 2, 3, name="Alice", age=25)# 輸出:
# args: (1, 2, 3)
# kwargs: {'name': 'Alice', 'age': 25}
  • *args 將所有位置參數(1, 2, 3)打包成一個元組 (1, 2, 3)

  • **kwargs 將所有關鍵字參數(name="Alice", age=25)打包成一個字典 {'name': 'Alice', 'age': 25}

5. 參數順序規范

當一個函數同時使用位置參數、默認參數和可變參數時,有一定的順序規范,必須遵循以下順序:

  • 位置參數

  • 默認參數

  • *args

  • **kwargs

示例:參數順序
def function(a, b=2, *args, c, **kwargs):print(a, b, args, c, kwargs)# 調用時,按照順序傳遞參數
function(1, c=3, d=4, e=5)
# 輸出: 1 2 () 3 {'d': 4, 'e': 5}
  • a 是位置參數,必須最先提供。

  • b 是默認參數,如果不提供則使用默認值。

  • *args 用于接收多余的所有位置參數。

  • c 是一個關鍵字參數,調用時必須顯式指定。

  • **kwargs 用于接收多余的所有關鍵字參數。

小結一下吧

  • 位置參數:根據參數順序傳遞值。

  • 關鍵字參數:顯式指定參數名和值。

  • 默認參數:函數定義時為參數提供默認值。

  • 可變參數:*args 用于接收多位置參數,**kwargs 用于接收多關鍵字參數。

  • 參數順序:位置參數 > 默認參數 > *args > **kwargs

(三)函數返回值

在 Python 中,函數不僅可以執行某些操作,還可以將結果“返回”給調用者。這就是 返回值(Return Value) 的概念。

通過 return 語句,函數可以把處理的結果交給外部使用。如果函數沒有 return,那它默認返回的是 None

1. 使用 return 返回結果

基本語法:

def function_name(...):...return result

示例:

def square(x):return x * xresult = square(5)
print(result)  # 輸出: 25

函數 square 返回的是 x 的平方,調用后我們可以拿到這個結果并繼續使用。

2. 返回多個值(元組)

Python 支持從一個函數中返回多個值,這些值實際上被打包成一個元組返回。

示例:

def get_name_and_age():name = "Alice"age = 30return name, agen, a = get_name_and_age()
print(n)  # Alice
print(a)  # 30

多值返回的本質是:return name, age 等價于 return (name, age),然后通過拆包語法接收。

3.?函數無返回值時的表現

如果函數中沒有 return 語句,或者只是 return 而沒有值,那默認返回的是 None

示例:

def say_hello():print("Hello!")result = say_hello()
print(result)  # 輸出: None

這個函數 say_hello() 雖然做了事情(打印),但沒有 return,因此返回值是 None

4. 提前終止函數執行

return 不僅能返回值,還能用來提前終止函數的執行

示例:

def divide(a, b):if b == 0:return "除數不能為 0"return a / bprint(divide(10, 0))  # 輸出: 除數不能為 0
print(divide(10, 2))  # 輸出: 5.0

b 是 0 時,函數遇到第一個 return 后立即終止執行,不會繼續往下運行。

5. 將返回值作為表達式使用

函數返回值可以被用在其他表達式或函數中,像這樣:

def add(a, b):return a + bprint(add(2, 3) * 10)  # 輸出: 50

add(2, 3) 會返回 5,然后再與 10 相乘。

小結一下吧

內容示例返回值說明
返回單個值return x返回一個對象
返回多個值return x, y返回一個元組
無 return 或 return Nonereturn / 無 return返回 None
提前結束函數if ...: return ...直接退出函數
返回值可以參與表達式add(1, 2) * 3函數結果用于計算

五、📚 字符串操作模塊

在 Python 中,字符串(str)是最常用、最重要的數據類型之一。無論你是在處理用戶輸入、讀取文件、構建網頁內容、分析文本數據,幾乎都繞不開對字符串的處理。

現在我們總結掌握 Python 字符串的各種操作方法,從最基本的創建與訪問,到復雜的格式化與正則匹配,覆蓋日常開發中 90% 的高頻場景。我們需要學會如何清洗、切割、替換、判斷和重組字符串,并為后續的數據處理與文本分析打下堅實基礎。

(一)📘 字符串基礎

在 Python 中,字符串(str)是用來表示文本的數據類型。本部分介紹字符串的創建方式、基本特性、訪問技巧以及常見的基本操作。

1.?字符串的定義與創建

字符串可以用 單引號 '雙引號 "三引號 ''' / """ 括起來。

# 單引號
s1 = 'hello'# 雙引號
s2 = "world"# 三引號(支持多行)
s3 = '''This is
a multi-line
string.'''

?? Python 中單引號和雙引號作用相同,主要用于避免轉義沖突。

2. 字符串是不可變對象

字符串是 不可變的(immutable):創建后無法修改,只能重新賦值。

s = "hello"
# s[0] = 'H'  # ? 錯誤!字符串不能直接修改
s = "Hello"   # ? 只能重新賦值

3. 字符串的索引與切片

字符串可以看作字符的序列,可以通過索引或切片訪問其部分內容。

s = "Python"# 索引(從 0 開始)
print(s[0])   # P
print(s[-1])  # n(最后一個字符)# 切片 [start:end:step]
print(s[0:2])     # Py(不包括 end)
print(s[::2])     # Pto(每隔1個)
print(s[::-1])    # nohytP(反轉字符串)

? 切片非常強大,是字符串處理中不可或缺的工具。

4.?字符串的連接與重復

# 拼接字符串
a = "Hello"
b = "World"
c = a + " " + b
print(c)  # Hello World# 重復字符串
print("ha" * 3)   # hahaha

5. 字符串的成員運算

s = "python"
print("p" in s)      # True
print("z" not in s)  # True

6. 字符串與類型轉換

num = 123
text = str(num)  # 數字轉字符串
print("數字是:" + text)# 也可以使用 f-string(推薦)
print(f"數字是:{num}")

🧠 小結

操作類型常用方法 / 語法
創建字符串'abc', "abc", '''abc'''
索引s[0], s[-1]
切片s[1:4], s[::-1]
拼接與重復+, *
判斷是否存在in, not in
類型轉換str(x), f"{x}"

(二)📘 字符串常見操作方法

Python 的字符串類型(str)內建了大量實用的方法,幫助我們完成查找、替換、對齊、大小寫轉換、格式化等各類文本處理任務。本節將系統講解所有主流、實用的方法,并配合用例說明。

1. 大小寫轉換

方法作用
.lower()轉為小寫
.upper()轉為大寫
.capitalize()首字母大寫,其余小寫
.title()每個單詞首字母大寫
.swapcase()大小寫互換
s = "hello World"
print(s.lower())       # hello world
print(s.upper())       # HELLO WORLD
print(s.capitalize())  # Hello world
print(s.title())       # Hello World
print(s.swapcase())    # HELLO wORLD

2.?查找與判斷

方法功能
.find(sub)找到子串首次出現的位置(找不到返回 -1)
.rfind(sub)從右側開始查找
.index(sub)與 find 類似,但找不到拋出異常
.startswith(prefix)是否以某前綴開頭
.endswith(suffix)是否以某后綴結尾
.in判斷子串是否存在
s = "hello python"
print(s.find("py"))       # 6
print(s.startswith("he")) # True
print(s.endswith("on"))   # True
print("py" in s)          # True

3. 刪除空白符與字符清洗

方法功能
.strip()刪除兩端空白符
.lstrip()刪除左側空白符
.rstrip()刪除右側空白符
.replace(old, new)替換子串
s = "  hello world  "
print(s.strip())     # "hello world"s2 = "python,java,c"
print(s2.replace(",", " | "))  # python | java | c

4. 字符串對齊與填充

方法說明
.center(width, char)居中填充
.ljust(width, char)左對齊填充
.rjust(width, char)右對齊填充
.zfill(width)用 0 填充左側數字部分
print("hi".center(10, "-"))  # ---hi-----
print("hi".ljust(10, "."))   # hi........
print("hi".rjust(10, "*"))   # ********hi
print("42".zfill(5))         # 00042

5. 拆分與連接

方法功能
.split(sep)拆分為列表
.rsplit(sep)從右拆分
.splitlines()拆分多行字符串
'sep'.join(list)用分隔符連接列表為字符串
s = "apple,banana,grape"
print(s.split(","))         # ['apple', 'banana', 'grape']lines = "line1\nline2\nline3"
print(lines.splitlines())   # ['line1', 'line2', 'line3']words = ['one', 'two', 'three']
print("-".join(words))      # one-two-three

6. 內容判斷類方法(返回布爾值)

方法判斷類型
.isalpha()是否全字母
.isdigit()是否全數字
.isalnum()是否全是字母或數字
.isspace()是否全是空白符
.isupper()是否全為大寫
.islower()是否全為小寫
.istitle()是否符合標題規范(首字母大寫)
print("abc".isalpha())     # True
print("123".isdigit())     # True
print("abc123".isalnum())  # True
print("   ".isspace())     # True

7. 高級字符串格式化(f-string)

name = "Alice"
age = 30# 推薦方式:f-string(Python 3.6+)
print(f"{name} is {age} years old.")  # Alice is 30 years old# 老式:format()
print("{} is {} years old.".format(name, age))# 占位對齊控制
print(f"|{name:^10}|{age:>3}|")  # 居中+右對齊

8. 轉義字符與原始字符串

字符含義
\n換行
\t制表符
\\反斜杠
r""原始字符串,不轉義
print("hello\nworld")     # 換行
print(r"c:\new\folder")   # c:\new\folder

9. 其他實用技巧

  • 長字符串拼接:

    s = ("This is a very long string ""split across multiple lines ""but still valid."
    )
    
  • 字符串比較支持 <, >, == 等字典序對比:

    print("apple" < "banana")  # True

🧠 小結:常用字符串方法分類對照表

類型常用方法
查找判斷find(), startswith(), in
修改清洗strip(), replace()
大小寫處理lower(), capitalize()
對齊填充center(), zfill()
格式化f"", format()
判斷內容isdigit(), isalpha()
分割拼接split(), join()
其他len(), 轉義、比較等

(三)📘 字符串切片與索引

1. 字符串索引(正向索引 / 負向索引)

Python 字符串是序列類型,每個字符都有對應的索引位置。我們可以通過索引訪問字符串中的單個字符。

📍 正向索引(從 0 開始)
s = "python"
print(s[0])  # p
print(s[1])  # y
print(s[5])  # n
字符python
索引012345
📍 負向索引(從 -1 開始,表示從右往左)
s = "python"
print(s[-1])  # n
print(s[-2])  # o
print(s[-6])  # p
字符python
索引-6-5-4-3-2-1

🧠 注意

  • 超出索引范圍(如 s[10])會拋出 IndexError

  • 字符串是 不可變對象,不能通過索引修改某個字符。

2. 字符串切片([start:stop:step])

切片(slice)是從字符串中提取子串的一種方式,語法格式為:

s[start : stop : step]
  • start:起始索引(包含)

  • stop:終止索引(不包含)

  • step:步長(默認為 1)

🎯 基礎切片
s = "Hello, Python!"print(s[0:5])   # Hello
print(s[7:13])  # Python
print(s[:5])    # Hello(從頭開始)
print(s[7:])    # Python!(直到結尾)
🎯 使用負數索引切片
s = "abcdefg"
print(s[-4:-1])  # def
print(s[-7:-4])  # abc
🎯 添加步長(step)
s = "0123456789"
print(s[::2])     # 02468(每兩個字符取一個)
print(s[1::3])    # 147(從索引 1 開始,每隔 3 個取)
🎯 反向切片(步長為負數)
s = "abcdef"
print(s[::-1])   # fedcba(字符串反轉)
print(s[-1:-7:-1]) # fedcba(等同上行)
🧠 切片邊界記憶口訣
  • 包頭不包尾:起始位置包含,結束位置不包含。

  • 步長方向一致:正數步長從左到右,負數步長從右到左。

  • 索引可以為負:負索引從末尾向前數。

3. 字符串的遍歷

遍歷字符串可以逐個訪問其字符,常用于統計、查找、生成新字符串等任務。

🎯 基礎遍歷
s = "hello"
for c in s:print(c)

輸出:

h
e
l
l
o
🎯 帶索引遍歷(推薦:使用 enumerate)
s = "hello"
for index, char in enumerate(s):print(f"{index} -> {char}")

輸出:

0 -> h
1 -> e
2 -> l
3 -> l
4 -> o

🔎 經典應用場景小結

場景示例
提取子串s[3:7]
字符串反轉s[::-1]
判斷回文s == s[::-1]
截取前綴/后綴s[:3]s[-3:]
每隔一個字符取s[::2]

(四)📘 字符串格式化

Python 提供了三種主要的字符串格式化方式:

  • % 占位符格式化(經典寫法)

  • str.format() 方法格式化(兼容寫法)

  • f-string 格式化(推薦方式,Python 3.6+)

1.% 占位符格式化(C 風格)

這是最早期的格式化方式,語法類似于 C 語言:

name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age))
占位符含義
%s字符串
%d整數
%f浮點數(默認小數點后 6 位)
%.2f浮點數保留 2 位小數

🧠 缺點:可讀性差、容易出錯,不推薦用于新代碼。

2.str.format() 方法格式化

引入于 Python 2.7 / 3.0,支持位置參數、關鍵字參數,更靈活:

name = "Alice"
age = 25
print("My name is {} and I am {} years old.".format(name, age))
🎯 支持 位置參數 / 關鍵字參數
print("Hello, {0}. You are {1}.".format("Bob", 30))
print("Hello, {name}. You are {age}.".format(name="Bob", age=30))
🎯 支持格式控制
pi = 3.1415926
print("Pi is {:.2f}".format(pi))  # Pi is 3.14

🧠 缺點:寫法較冗長,推薦 f-string 替代。

3.f-string 格式化(Python 3.6+,推薦?)

最現代、最簡潔的格式化方式,代碼更清晰,推薦作為首選寫法。

name = "Alice"
age = 25
print(f"My name is {name} and I am {age} years old.")
🎯 支持表達式
a = 5
b = 3
print(f"{a} + {b} = {a + b}")
🎯 支持格式化控制
pi = 3.1415926
print(f"Pi rounded to 2 digits: {pi:.2f}")
🎯 與函數、數據結構結合
user = {"name": "Bob", "score": 88}
print(f"{user['name']} scored {user['score']}")

🧪 三種方式對比

特性% 格式化str.format()f-string
可讀性?????
功能強大一般?????
寫法簡潔一般????
推薦程度? 不推薦? 過渡用法??? 首選

📝 小結一下吧

  • 新代碼推薦 f-string,語法簡潔、表達能力強。

  • str.format() 適用于兼容舊版本 Python。

  • % 占位符方式適合了解,不建議用于正式項目中。


🎯 想練點格式化相關的習題?還是我們繼續進入 第 5 節 字符串常用方法詳解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89807.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89807.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89807.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

「Java案例」雞兔同籠問題

案例解析 雞兔同籠求解 《孫子算經》是中國古代重要的數學著作&#xff0c;成書于南北朝時期&#xff0c;其中就記載了一個有趣的問題&#xff1a;雞和兔在同一個籠子里&#xff0c;雞和兔共有n條腿&#xff0c; m個頭&#xff0c;問雞和兔各有多少只&#xff1f;編寫一個程序…

BLDC電機-運動控制---stm32時鐘樹定時器SYSTICKRTC的學習

一、時鐘樹 二、基本定時器 三、通用定時器 四、高級定時器 五、SYSTICK 六、RTC

Implementing a User-Defined Preconditioner in PETSc

文章目錄Implementing a User-Defined Preconditioner in PETScBasic ApproachExample ImplementationUsing Your PreconditionerAdvanced OptionsImportant NotesUsing PCShell to Implement User-Defined Preconditioners in PETScBasic Implementation StepsAdvanced Featur…

DotNetBrowser 3.3.0 版本發布啦!

#Chromium 137 安全修復一次調用即可下載 URL更新了 Widevine APIDOM 元素絕對邊界 &#x1f517; 點擊此處了解更多詳情。 &#x1f193; 獲取 30 天免費試用。

Android-自定義View的實戰學習總結

一、自定義View歌詞界面LrcView 類-->自定義的歌詞視圖1. 構造函數和屬性初始化自定義 View 通常需要提供多個構造函數以支持不同的初始化方式。在 LrcView 中&#xff0c;提供了四個構造函數&#xff0c;最終調用 super 父類構造函數完成初始化&#xff0c; context.obtain…

Maven 在 Eclipse 中的使用指南

Maven 在 Eclipse 中的使用指南 概述 Maven 是一個強大的構建自動化工具,用于項目管理和構建。它簡化了項目構建、依賴管理和項目報告等任務。Eclipse 是一個流行的集成開發環境(IDE),支持多種編程語言,包括 Java。本文將詳細介紹如何在 Eclipse 中使用 Maven 進行項目管…

zxing去白邊

2025年了&#xff0c;可能干不了幾年了&#xff0c;還能寫這種文章還是有點可笑。 背景 zxing庫生成的二維碼自帶白邊 分析 生產二維碼主要分兩步&#xff1a; 1.用QRCodeWriter生成BitMatrix信息 2.根據信息生成bitmap 問題在1。 生成二維碼的尺寸實際是有一些規格的&a…

Linux操作系統之文件(三):緩沖區

前言&#xff1a; 上節課我們講授重定向的概念時&#xff0c;曾提到了一點緩沖區的概念。本文將會為大家更詳細的帶來緩沖區的有關內容&#xff1a;用戶級緩沖區是什么&#xff0c;以及其與內核級緩沖區的關系&#xff0c;最后&#xff0c;我會為大家模擬實現一下stdio.h的關于…

Linux云計算基礎篇(7)

一、< 輸入重定向 wc -l < filelist .txt 統計數據&#xff0c;從file這個文件拿結果。 二、tr 轉換字符命令 $ tr A-Za-z<.bash_profile 將bash_profile文件中的大寫字符全部轉成小寫字符 三、管道符&#xff08;|&#xff09; com…

【學習筆記】Lean4基礎 ing

文章目錄 概述參考文檔運行程序elan 命令行工具lean 命令行工具lake 命令行工具運行單文件程序Hello, world!驗證 Lean4 證明 運行多文件項目 Lean4 基礎語法注釋表達式求值變量和定義定義類型變量 定義函數命名規則命名空間數據類型結構體構造子模式匹配多態List 列表Option 可…

FPGA實現40G網卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架構,提供工程源碼和技術支持

目錄 1、前言工程概述免責聲明 3、相關方案推薦我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目我這里已有的以太網方案 4、工程詳細設計方案工程設計原理框圖測試用電腦PClE4CDMA40G/50G Ethernet subsystem工程源碼架構驅動和測試文件 5、Vivado工程詳解1詳解&a…

SAP從入門到放棄系列之流程管理概述

文章目錄前言1.Process Management&#xff08;過程管理&#xff09;2.關鍵術語2.1Control recipe destination2.2 Process instruction characteristic2.3 Process message characteristic2.4 Process instruction category2.5 Process message category2.6 PI sheet3.關鍵配置…

RCLAMP0554S.TCT升特Semtech 5通道TVS二極管,0.5pF+20kV防護,超高速接口!

RCLAMP0554S.TCT&#xff08;Semtech&#xff09;產品解析與推廣文案 一、產品定位 RCLAMP0554S.TCT是Semtech&#xff08;升特半導體&#xff09;推出的5通道超低電容TVS二極管陣列&#xff0c;專為超高速數據接口&#xff08;USB4/雷電4/HDMI 2.1&#xff09;提供靜電放電&a…

【人工智能】DeepSeek的AI實驗室:解鎖大語言模型的未來

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 DeepSeek作為中國AI領域的先鋒,以其開源大語言模型(LLM)DeepSeek-V3和DeepSeek-R1在全球AI研究中掀起波瀾。本文深入探討DeepSeek AI實驗…

nacos+nginx動態配置大文件上傳限制

前言 今天還要跟大家分享的一個點就是微服務網關gateway用webflux響應式不用servlet后&#xff0c;引發的一個忽略點差點在演示的時候炸鍋&#xff0c;也不多講廢話&#xff0c;說說現象&#xff0c;說說處理就了事。 一、上傳超過20MB的視頻報錯 配置在nacos里&#xff0c;讀…

mr 任務運行及jar

mainclass如下&#xff1a;LoggingDriver

Python 數據分析:numpy,抽提,整數數組索引與基本索引擴展(元組傳參)。聽故事學知識點怎么這么容易?

目錄1 代碼示例2 歡迎糾錯3 論文寫作/Python 學習智能體------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右Sm…

ECU開發工具鏈1.10版:更強大的測量、校準與數據分析體驗.

汽車電子開發與測試領域&#xff0c;高效、精準且安全的工具是成功的基石。DiagRA X 作為一款廣受認可的 Windows 平臺綜合解決方案&#xff0c;持續引領行業標準。其最新發布的 1.10 版本帶來了顯著的功能增強與用戶體驗優化&#xff0c;進一步鞏固了其在 ECU 測量、校準、刷寫…

Qt C++串口SerialPort通訊發送指令讀寫NFC M1卡

本示例使用的發卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bVIuGpf&ftt&id18645495882 一、確定已安裝Qt Serial Port組件 二、在.pro項目文件聲明引用Serialport組件 三、在.h頭文件內引用Serialport組件 四、在.cpp程序中實…

Go 語言開發中用戶密碼加密存儲的最佳實踐

在現代 Web 應用開發中&#xff0c;用戶密碼的安全存儲是系統安全的重要環節。本文將結合 Go 語言和 GORM 框架&#xff0c;詳細介紹用戶密碼加密存儲的完整解決方案&#xff0c;包括數據庫模型設計、加密算法選擇、鹽值加密實現等關鍵技術點。 一、數據庫模型設計與 GORM 實踐…