21天Python計劃:函數簡單介紹

文章目錄

    • 前言
    • 一、函數知識體系
    • 二、函數基礎
      • 函數的定義和調用
      • 函數參數
    • 三、函數對象、函數嵌套、名稱空間與作用域、裝飾器
      • 函數對象
      • 函數嵌套
      • 名稱空間與作用域
      • 裝飾器
    • 四、迭代器、生成器、面向過程編程
      • 迭代器
      • 生成器
      • 面向過程編程
    • 五、三元表達式、列表推導式、生成器表達式、遞歸、匿名函數、內置函數
      • 三元表達式
      • 列表推導式
      • 生成器表達式
      • 遞歸
      • 匿名函數
      • 內置函數
    • 六、函數草稿
    • 結語

前言

Python是一種強大且易于學習的編程語言。通過這個21天的計劃,我們將逐步深入函數簡單介紹。無論你是初學者還是有一定基礎的開發者,這個計劃都將幫助你鞏固和擴展你的Python知識。

在學習本篇之前,我們先復習一下前面的內容:
21天Python計劃:Python下載和開發工具介紹
21天Python計劃:數據類型、字符編碼、文件處理
21天Python計劃:基礎語法與課外練習

一、函數知識體系

在Python編程中,函數是組織好的、可重復使用的、用來實現單一或相關聯功能的代碼段。函數的使用可以提高代碼的復用性和可維護性,使代碼結構更加清晰。Python中的函數知識體系主要包括函數的定義、調用、參數傳遞、返回值等基礎內容,以及函數對象、嵌套函數、名稱空間與作用域、裝飾器等高級特性,還有迭代器、生成器、面向過程編程等相關概念,以及一些特殊的表達式和編程技巧,如三元表達式、列表推導式、生成器表達式、遞歸、匿名函數和內置函數等。

二、函數基礎

函數的定義和調用

在Python中,使用def關鍵字來定義函數,函數定義的基本語法如下:

# 定義一個簡單的函數,用于打印問候語
def greet():"""這是一個簡單的函數,用于打印問候語"""print("Hello, World!")# 調用函數
greet()

在這里插入圖片描述

函數參數

函數可以接受參數,參數分為位置參數、默認參數、可變參數和關鍵字參數。

# 定義一個帶有位置參數的函數
def add(a, b):"""計算兩個數的和:param a: 第一個數:param b: 第二個數:return: 兩數之和"""return a + b# 調用函數并傳入參數
result = add(3, 5)
print(result)# 定義一個帶有默認參數的函數
def power(x, n=2):"""計算x的n次方:param x: 底數:param n: 指數,默認值為2:return: x的n次方"""return x ** n# 調用函數時可以不傳入默認參數
print(power(3))
# 也可以傳入新的參數值
print(power(3, 3))# 定義一個帶有可變參數的函數
def sum_numbers(*numbers):"""計算多個數的和:param numbers: 可變參數,接收多個數值:return: 所有數的和"""total = 0for num in numbers:total += numreturn total# 調用函數時可以傳入任意數量的參數
print(sum_numbers(1, 2, 3, 4))# 定義一個帶有關鍵字參數的函數
def person_info(name, age, **kwargs):"""打印個人信息:param name: 姓名:param age: 年齡:param kwargs: 關鍵字參數,接收其他信息"""print(f"Name: {name}, Age: {age}")for key, value in kwargs.items():print(f"{key}: {value}")# 調用函數時可以傳入關鍵字參數
person_info("Alice", 25, city="New York", job="Engineer")

在這里插入圖片描述

三、函數對象、函數嵌套、名稱空間與作用域、裝飾器

函數對象

在Python中,函數也是對象,可以賦值給變量,也可以作為參數傳遞給其他函數,還可以作為返回值返回。

# 定義一個函數
def say_hello():print("Hello!")# 將函數賦值給變量
greet_func = say_hello
# 調用變量指向的函數
greet_func()# 定義一個高階函數,接收一個函數作為參數
def call_function(func):func()# 調用高階函數,傳入函數對象
call_function(say_hello)

在這里插入圖片描述

函數嵌套

函數內部可以定義另一個函數,這就是函數嵌套。

def outer_function():print("This is the outer function.")def inner_function():print("This is the inner function.")# 調用內部函數inner_function()# 調用外部函數
outer_function()

在這里插入圖片描述

名稱空間與作用域

名稱空間是Python中存儲變量名和對象之間映射關系的地方,作用域則決定了變量的可見性和生命周期。Python中有全局作用域和局部作用域。

# 全局變量
global_variable = 10def test_scope():# 局部變量local_variable = 20print(f"Global variable: {global_variable}")print(f"Local variable: {local_variable}")# 調用函數
test_scope()
# 嘗試訪問局部變量會報錯
# print(local_variable)

在這里插入圖片描述

裝飾器

裝飾器是一種特殊的函數,用于修改其他函數的行為。

# 定義一個裝飾器函數
def my_decorator(func):def wrapper():print("Before function call")func()print("After function call")return wrapper# 定義一個被裝飾的函數
@my_decorator
def say_hi():print("Hi!")# 調用被裝飾的函數
say_hi()

在這里插入圖片描述

四、迭代器、生成器、面向過程編程

迭代器

迭代器是一個可以記住遍歷位置的對象,使用iter()和next()函數可以實現迭代器。

# 定義一個列表
my_list = [1, 2, 3, 4, 5]
# 創建迭代器對象
my_iterator = iter(my_list)
# 使用next()函數獲取迭代器的下一個元素
print(next(my_iterator))
print(next(my_iterator))

在這里插入圖片描述

生成器

生成器是一種特殊的迭代器,使用yield關鍵字來定義。

# 定義一個生成器函數
def my_generator():yield 1yield 2yield 3# 創建生成器對象
gen = my_generator()
# 遍歷生成器
for num in gen:print(num)

在這里插入圖片描述

面向過程編程

面向過程編程是一種以過程為中心的編程思想,將問題分解為一個個步驟,通過函數來實現這些步驟。

# 定義一個函數用于計算圓的面積
def calculate_circle_area(radius):import mathreturn math.pi * radius ** 2# 調用函數計算圓的面積
radius = 5
area = calculate_circle_area(radius)
print(f"The area of the circle with radius {radius} is {area}")

在這里插入圖片描述

五、三元表達式、列表推導式、生成器表達式、遞歸、匿名函數、內置函數

三元表達式

三元表達式是一種簡潔的條件判斷語句。

# 傳統的條件判斷
x = 10
if x > 5:result = "x is greater than 5"
else:result = "x is less than or equal to 5"# 使用三元表達式
result = "x is greater than 5" if x > 5 else "x is less than or equal to 5"
print(result)

在這里插入圖片描述

列表推導式

列表推導式是一種簡潔的創建列表的方法。

# 傳統的創建列表的方法
squares = []
for i in range(1, 6):squares.append(i ** 2)# 使用列表推導式
squares = [i ** 2 for i in range(1, 6)]
print(squares)

在這里插入圖片描述

生成器表達式

生成器表達式與列表推導式類似,但使用圓括號,返回一個生成器對象。

# 使用生成器表達式
gen_expr = (i ** 2 for i in range(1, 6))
# 遍歷生成器
for num in gen_expr:print(num)

在這里插入圖片描述

遞歸

遞歸是指函數調用自身的編程技巧。

# 定義一個遞歸函數,用于計算階乘
def factorial(n):if n == 0 or n == 1:return 1else:return n * factorial(n - 1)# 調用遞歸函數
print(factorial(5))

在這里插入圖片描述

匿名函數

匿名函數是一種沒有名稱的函數,使用lambda關鍵字定義。

# 定義一個匿名函數
add = lambda a, b: a + b
# 調用匿名函數
print(add(3, 5))

在這里插入圖片描述

內置函數

Python提供了許多內置函數,如len()、sum()、max()等。

my_list = [1, 2, 3, 4, 5]
# 使用內置函數計算列表的長度
length = len(my_list)
# 使用內置函數計算列表的和
total = sum(my_list)
# 使用內置函數找出列表中的最大值
maximum = max(my_list)
print(f"Length: {length}, Sum: {total}, Max: {maximum}")

在這里插入圖片描述

六、函數草稿

在實際編程中,我們可能會先編寫一些函數草稿,用于測試和驗證想法。以下是一個簡單的函數草稿示例:

# 這是一個函數草稿,用于計算兩個數的乘積
def multiply(a, b):return a * b# 測試函數
result = multiply(4, 6)
print(result)

在這里插入圖片描述

結語

通過這個21天的Python計劃,我們涵蓋了函數簡單介紹。希望這些內容能幫助你更好地理解和使用Python。繼續學習和實踐,你將成為一名優秀的Python開發者!

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

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

相關文章

污水處理廠人員定位方案-UWB免布線高精度定位

1. 方案概述 本方案采用免布線UWB基站與北斗衛星定位融合技術,結合UWBGNSS雙模定位工卡,實現污水處理廠室內外人員高精度定位(亞米級)。系統通過低功耗4G傳輸數據,支持實時位置監控、電子圍欄、聚集預警、軌跡回放等功…

無人機DSP處理器工作要點!

一、DSP處理器在無人機中的工作要點 1. 高效運算架構 哈佛結構:DSP采用程序與數據存儲分離的哈佛結構,允許同時訪問指令和數據,提升數據吞吐效率。 流水線技術:將指令分解為取指、譯碼、執行等多個階段并行處理&#xff0c…

MySQL查詢成本計算

對于如上SQL,只是因為查詢字段不同,最終執行時選擇的索引就不同,那么MySQL是如何決定選擇使用哪個索引呢? 答案是MySQL會進行成本計算,對于各個場景查詢進行成本預估,最終選擇最優。 我們可以使用trace工具…

《K230 從熟悉到...》矩形檢測

《K230 從熟悉到...》矩形檢測 《廬山派 K230 從熟悉到...》矩形檢測 矩形檢測技術是一種廣泛應用于電子圖像處理的核心技術。它通過識別和分析圖像中的矩形結構,為各種應用提供基礎支持。從傳統圖像處理算法到現代深度學習技術,矩形檢測的實現途徑多種多…

python基礎學習三(元組及字符串的使用)

文章目錄 元組什么是元組元組的創建方式為什么要將元組設計成不可變序列元組的遍歷集合集合的相關操作集合操作集合的數學操作集合生成式列表,字典,元組,集合總結 字符串字符串的駐留機制判斷字符串的操作方法字符串的比較操作字符串的切片操…

Java基礎-22-基本語法-實體類

實體類(Entity Class) 1. 什么是實體類? 實體類(Entity Class) 是 Java 中用于表示數據庫表結構或業務對象的類。它通常包含屬性(字段)和getter/setter 方法,用于存儲和操作數據。…

Android 系統ContentProvider流程

一、ContentProvider初始化注冊流程 源碼查看路徑:http://xrefandroid.com/android-11.0.0_r48/ 涉及到源碼文件: /frameworks/base/core/java/android/content/ContentProvider.java 自定義ContentProvider需要繼承該類,內部類Transport繼承關系如下,實…

爬蟲工程師分享自動批量化獲取商品評論數據的方法有哪些?

在電商領域,商品評論數據對于商家了解產品口碑、洞悉用戶需求,以及開展競品分析等工作具有極其重要的價值。作為爬蟲工程師,掌握自動批量化獲取商品評論數據的方法,能極大提升數據收集效率。下面,我將分享一些實用的操…

Vue3組件事件用戶信息卡練習

用戶信息卡 題目要求 實現一個用戶信息卡系統&#xff0c;包含以下功能&#xff1a; 1.父組件收集用戶信息&#xff08;姓名、年齡、班級&#xff09; 2.子組件接收并展示用戶信息卡片 3.添加基本的數據驗證 <!DOCTYPE html> <html lang"en"> <h…

SpringBean模塊(二)bean初始化(2)和容器初始化順序的比較--引入ApplicationContextInitializer

前面介紹了獲取容器可以讓spring bean實現ApplicationContextAware&#xff0c;實際也是初始化執行了setApplicationContext接口&#xff0c; 初始化接口還可以借助一些注解或者spring bean的初始化方法&#xff0c;那么他們的執行順序是什么樣的呢&#xff1f; 一、驗證&…

中小型企業網絡的搭建

1.1 網絡邏輯拓撲、布線方案的設計 1.1.1 網絡設計依據 網絡設計應遵循以下基本原則&#xff1a; 高效性&#xff1a;確保網絡架構能夠支持企業日常業務的高效運行。 可靠性&#xff1a;采用冗余設計&#xff0c;確保網絡的高可用性&#xff0c;避免單點故障。 可擴展性…

angr基礎學習

參考&#xff1a;angr AngrCTF_FITM/筆記/03/Angr_CTF從入門到精通&#xff08;三&#xff09;.md at master ZERO-A-ONE/AngrCTF_FITM angr_explore 00_angr_find IDA分析結果&#xff1a; 邏輯簡單&#xff0c;輸入&#xff0c;complex_function進行加密&#xff0c;加密…

軟考-高級-系統架構設計師【考試備考資料下載】

計算機技術與軟件專業技術資格&#xff08;水平&#xff09;考試是原中國計算機軟件專業技術資格和水平考試的完善與發展。計算機技術與軟件專業技術資格&#xff08;水平&#xff09;考試是由國家人力資源和社會保障部、工業和信息化部領導下的國家級考試。 計算機技術與軟件專…

3. 第三放平臺部署deepseek

有時候我們會發現使用deepseek服務器&#xff0c;異常卡頓&#xff0c;這是由于多方面原因造成的&#xff0c;比如說訪問人數過多等。想要解決這個問題&#xff0c;我們可以選擇第三方平臺進行部署 第三方平臺 我們可以選擇的第三方平臺很多&#xff0c;比如硅基流動、秘塔搜索…

1.4-蜜罐\堡壘機\API接口

1.4-蜜罐\堡壘機\API接口 蜜罐&#xff1a;用來釣魚或誘惑測試人員的防護系統 bash <(curl -sS -L https://hfish.net/webinstall.sh) # 安裝HFISH蜜罐堡壘機&#xff1a; 運維用的&#xff0c;統一管理運維平臺;拿下堡壘機就很有可能等于拿下了多個平臺 jumpServer一鍵安…

知識圖引導的檢索增強生成

摘要 檢索增強生成&#xff08;RAG&#xff09;已經成為一種很有前途的技術&#xff0c;用于解決大型語言模型&#xff08;LLM&#xff09;生成的響應中的幻覺問題。現有的RAG研究主要集中在應用基于語義的方法來提取孤立的相關組塊&#xff0c;忽略了它們之間的內在關系。在本…

【機器學習】imagenet2012 數據預處理數據預處理

【機器學習】數據預處理 1. 下載/解壓數據2. 數據預處理3. 加載以及訓練代碼3.1 使用PIL等加載代碼3.2 使用OpenCV的方式來一張張加載代碼3.3 h5的方式來加載大文件 最后總結 這個數據大約 140個G,128w的訓練集 1. 下載/解壓數據 首先需要下載數據&#xff1a; 數據最后處理…

質量工程:數字化轉型時代的質量體系重構

前言&#xff1a;質量理念的范式轉移閱讀原文 如果把軟件開發比作建造摩天大樓&#xff1a; 傳統測試 竣工后檢查裂縫&#xff08;高成本返工&#xff09; 質量工程 從地基開始的全流程監理體系&#xff08;設計圖紙→施工工藝→建材選擇→竣工驗收&#xff09; IEEE研究…

【全棧開發】—— Paddle OCR 文字識別 + deepseek接入(基于python 最新!!!)

所有源碼都在文章中&#xff0c;大家不要私信來要源碼&#xff0c;當然&#xff0c;評論區歡迎交流技術 目錄 Paddle OCR 配置環境 示例 deepseek接入 環境配置 api 調用代碼 sliconflow Paddle OCR 配置環境 清華源下載 paddlepaddle&#xff1a; pip install paddlepaddle …

SAIL-RK3588J 核心板技術方案——高精度裝配式建筑機器人控制?

&#xff08;本方案契合《建筑機器人產業目錄》政策要求&#xff09; 一、方案背景與政策支持? ?政策驅動? 2025年2月《建筑機器人產業目錄》明確將?“高精度建筑機器人控制設備”?納入重點補貼范圍&#xff0c;要求定位精度≤0.5mm、支持實時質檢與多機協同&#xff0c…