pyhton基礎【11】函數一

目錄

一.函數說明

二.函數介紹

函數簡介

作用

函數分類

?三.自定義函數

定義函數

調用函數

pass關鍵字

定義一次執行多次


一.函數說明

Python中的函數是一個重要的編程概念,它允許編程者封裝代碼塊以實現特定的功能。函數的作用和應用場景非常廣泛,以下是一些關鍵點。

作用

1代碼重用:通過定義函數,可以避免重復編寫相同的代碼。這樣做不僅可以減少工作量,還可以使代碼更加組織化和可維護。

2模塊化:函數可以將復雜的問題分解為較小的、更易于管理和測試的部分。這可以提高代碼的可讀性和可維護性。

3抽象:函數允許從細節抽象出來,側重于高層次的操作。用戶可以不必關心函數的內部實現,只需了解其接口(輸入和輸出)。

4命名空間分隔:函數有助于在局部作用域中封裝變量,避免全局命名沖突,所以函數內的名稱不會和全局命名空間發生沖突。

應用場景

1數據處理:對數據執行清洗、轉換、計算等操作時,可以編寫函數來處理各種數據結構。

2任務自動化:常用于寫腳本來自動化日常任務,如文件處理、網絡請求等。

3API開發:在Web開發中,函數常用于定義API端點,處理HTTP請求和響應。

4數學計算:在科學計算或工程領域,函數可用于封裝數學方程或計算。

5用戶定義的操作:在面向對象編程中,函數(即方法)用于定義對象的行為。

6回調和事件驅動編程:在圖形用戶界面GUI編程或網絡編程中,函數作為回調對特定事件做出響應。

7測試和驗證:編寫自動化測試腳本時,函數可以用來封裝測試用例和斷言。

總的來說,在Python編程中,函數是代碼組織的基本單元,它在簡化代碼結構、提高代碼復用性和維護性方面發揮著重要作用。熟練使用函數可以極大提高編程效率和代碼質量。

二.函數介紹
函數簡介

函數:一個功能獨立的代碼塊

示例:

# 定義一個函數,能夠完成打印信息的功能
def print_info():print('------------------------------------')print('         人生苦短,我用Python         ')print('------------------------------------')
作用

函數在編程中是非常重要的一個知識點,大體功能如下

  • 能夠將部分代碼劃分為一個整體的功能
  • 只需定義函數1次就可以使用N次,可以大大減少了代碼的冗余
  • 代碼看上去更加整潔美觀

示例一:未使用函數的情況

# 輸出第1遍 佛祖鎮樓
print("                            _ooOoo_  ")
print("                           o8888888o  ")
print("                           88  .  88  ")
print("                           (| -_- |)  ")
print("                            O\\ = /O  ")
print("                        ____/`---'\\____  ")
print("                      .   ' \\| |// `.  ")
print("                       / \\||| : |||// \\  ")
print("                     / _||||| -:- |||||- \\  ")
print("                       | | \\\\\\ - /// | |  ")
print("                     | \\_| ''\\---/'' | |  ")
print("                      \\ .-\\__ `-` ___/-. /  ")
print("                   ___`. .' /--.--\\ `. . __  ")
print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
print("                            `=---='  ")
print("  ")
print("         .............................................  ")
print("                  佛祖鎮樓                  BUG辟易  ")
print("          佛曰:  ")
print("                  寫字樓里寫字間,寫字間里程序員;  ")
print("                  程序人員寫程序,又拿程序換酒錢。  ")
print("                  酒醒只在網上坐,酒醉還來網下眠;  ")
print("                  酒醉酒醒日復日,網上網下年復年。  ")
print("                  但愿老死電腦間,不愿鞠躬老板前;  ")
print("                  奔馳寶馬貴者趣,公交自行程序員。  ")
print("                  別人笑我忒瘋癲,我笑自己命太賤;  ")
print("                  不見滿街漂亮妹,哪個歸得程序員?")# 輸出第2遍 佛祖鎮樓
print("                            _ooOoo_  ")
print("                           o8888888o  ")
print("                           88  .  88  ")
print("                           (| -_- |)  ")
print("                            O\\ = /O  ")
print("                        ____/`---'\\____  ")
print("                      .   ' \\| |// `.  ")
print("                       / \\||| : |||// \\  ")
print("                     / _||||| -:- |||||- \\  ")
print("                       | | \\\\\\ - /// | |  ")
print("                     | \\_| ''\\---/'' | |  ")
print("                      \\ .-\\__ `-` ___/-. /  ")
print("                   ___`. .' /--.--\\ `. . __  ")
print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
print("                            `=---='  ")
print("  ")
print("         .............................................  ")
print("                  佛祖鎮樓                  BUG辟易  ")
print("          佛曰:  ")
print("                  寫字樓里寫字間,寫字間里程序員;  ")
print("                  程序人員寫程序,又拿程序換酒錢。  ")
print("                  酒醒只在網上坐,酒醉還來網下眠;  ")
print("                  酒醉酒醒日復日,網上網下年復年。  ")
print("                  但愿老死電腦間,不愿鞠躬老板前;  ")
print("                  奔馳寶馬貴者趣,公交自行程序員。  ")
print("                  別人笑我忒瘋癲,我笑自己命太賤;  ")
print("                  不見滿街漂亮妹,哪個歸得程序員?")

示例二:使用函數的情況

# 定義一個函數,完成了獨立輸出"佛祖鎮樓"的功能
def print_fozu():print("                            _ooOoo_  ")print("                           o8888888o  ")print("                           88  .  88  ")print("                           (| -_- |)  ")print("                            O\\ = /O  ")print("                        ____/`---'\\____  ")print("                      .   ' \\| |// `.  ")print("                       / \\||| : |||// \\  ")print("                     / _||||| -:- |||||- \\  ")print("                       | | \\\\\\ - /// | |  ")print("                     | \\_| ''\\---/'' | |  ")print("                      \\ .-\\__ `-` ___/-. /  ")print("                   ___`. .' /--.--\\ `. . __  ")print("                ."" '< `.___\\_<|>_/___.' >'"".  ")print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")print("                            `=---='  ")print("  ")print("         .............................................  ")print("                  佛祖鎮樓                  BUG辟易  ")print("          佛曰:  ")print("                  寫字樓里寫字間,寫字間里程序員;  ")print("                  程序人員寫程序,又拿程序換酒錢。  ")print("                  酒醒只在網上坐,酒醉還來網下眠;  ")print("                  酒醉酒醒日復日,網上網下年復年。  ")print("                  但愿老死電腦間,不愿鞠躬老板前;  ")print("                  奔馳寶馬貴者趣,公交自行程序員。  ")print("                  別人笑我忒瘋癲,我笑自己命太賤;  ")print("                  不見滿街漂亮妹,哪個歸得程序員?")# 調用2次函數,每次輸出1個佛祖鎮樓
print_fozu()
print_fozu()
函數分類

函數根據是否是自己編寫可以分為兩類

  • 別人已經寫好拿來直接用的函數,成為包括Python內置函數或者第三方包中的函數,更省事
  • 開發者自己編寫的函數(通常稱為自定義函數);根據需要自己編寫,更靈活

在整個函數相關知識學習中,我們主要以研究自定義函數為主,當自定義函數都弄明白了弄懂了,那么用別人的寫好的函數就信手拈來了

?三.自定義函數

上面的知識我們知道,函數就是一個獨立功能的代碼塊,想要用函數一定要掌握兩塊知識

  • 定義函數(即怎樣制作函數)
  • 調用函數(即怎樣使用函數)

下面我們就來研究函數的定義以及調用。

定義函數

定義函數的格式如下:

def 函數名(形參):函數體

說明:

  • 函數名:一定有,按照命名規則起個名字,注意Python中建議使用小寫加下劃線的方式,例如print_info而不用PrintInfo
  • 函數體:一定有,就是整個函數真正要執行的代碼,注意函數體前面縮進四個空格
  • 形參:可有可無,專門用過來存儲調用時傳遞給函數的數據用的

示例代碼

下面定義一個函數,完成打印菜單的功能

def print_menu():print("-----------------------")print("        歡迎光臨        ")print("數字1: 黃瓜炒肉")print("數字2: 冬瓜炒肉")print("數字3: 西瓜炒肉")print("數字4: 南瓜炒肉")print("數字5: 北瓜炒肉")print("-----------------------")

說明:

  • 函數名:print_menu
  • 函數體:第2~9行的代碼
  • 形參:無

注意:定義了函數,這個函數不會被執行。就好比你發明了一個功能,這個功能不能自己用自己,必須等待別人使用才行,如果想讓函數執行,就需要調用函數。

調用函數

通俗的講:定義函數相當于打造了一個工具,調用函數相當于使用這個工具完成想要做的事情

調用函數的格式如下

函數名(實參)

說明:

  • 函數名:一定有,想要調用的函數的名字
  • 實參:可有可無,調用函數時給它傳遞的數據

注意:調用的函數的名字必須是先定義好的才能夠調用,否則會失敗

示例代碼

# 定義了一個函數,實現打印菜單功能
def print_menu():print("-----------------------")print("        歡迎光臨        ")print("數字1: 黃瓜炒肉")print("數字2: 冬瓜炒肉")print("數字3: 西瓜炒肉")print("數字4: 南瓜炒肉")print("數字5: 北瓜炒肉")print("-----------------------")# 調用函數
print_menu()運行結果:
-----------------------歡迎光臨
數字1: 黃瓜炒肉
數字2: 冬瓜炒肉
數字3: 西瓜炒肉
數字4: 南瓜炒肉
數字5: 北瓜炒肉
-----------------------

說明:

  • 函數定義一定要在函數的調用之前,其原因:Python解釋器在解析.py文件時會從文件的開頭開始解析,會先遇到函數的定義,然后當遇到函數的調用時就知道它在哪,所以函數要先定義才能調用
pass關鍵字

如果一個函數,暫時不確定函數體的代碼,可以用pass先占用位置,這樣即沒有語法錯誤,也能夠讓開發人員知道 這個函數功能沒有實現,可以在后面進行編寫

def 函數名():pass

示例:要定義4個函數,實現加減乘除的功能,但還不清楚具體功能怎樣寫,此時就可以用pass

# 定義了4個函數
def add_2_nums():passdef min_2_nums():passdef mult_2_nums():passdef div_2_nums():pass# 分別調用函數
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()

如果想清楚了具體的函數應該怎樣實現,那么把pass刪除,補上需要的代碼即可

# 定義了4個函數
def add_2_nums():print("接下來要進行加法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s+%s=%d" % (num1, num2, int(num1) + int(num2)))def min_2_nums():print("接下來要進行減法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s-%s=%d" % (num1, num2, int(num1) - int(num2)))def mult_2_nums():print("接下來要進行乘法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s*%s=%d" % (num1, num2, int(num1) * int(num2)))def div_2_nums():print("接下來要進行除法操作...")num1 = input("請輸入第1個數:")num2 = input("請輸入第2個數:")print("%s/%s=%d" % (num1, num2, int(num1) / int(num2)))# 分別調用函數
add_2_nums()
min_2_nums()
mult_2_nums()
div_2_nums()

注意:Python代碼規范中提到,定了多個函數,那么函數與函數之間空兩行

定義一次執行多次

一個函數可以進行多次調用,每次調用函數時,函數都會從頭開始執行,當這個函數中的代碼執行完畢后,意味著調用結束了

def test():num = 100num += 1print("在test函數中num=%d" % num)test()
test()運行結果:在test函數中num=101
在test函數中num=101

說明:

  • 第7行調用了第一次test函數,當test函數結束后num為101
  • 第8行調用了第二次test函數,依然會從test函數的開頭開始執行,所以結果依然是101

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

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

相關文章

使用Kotlin開發后端服務的核心方法

一、開發步驟 選擇框架 Kotlin后端開發常用框架包括Spring Boot、Ktor和Micronaut。Spring Boot生態成熟&#xff0c;適合企業級應用&#xff1b;Ktor輕量且協程友好&#xff0c;適合高性能異步服務&#xff1b;Micronaut以低內存占用和快速啟動見長。 搭建項目結構 通過Grad…

java面試總結-20250616

題目1: 求一個int類型正整數二進制中最高位1的位置&#xff1f; 比如10&#xff0c;二進制位1010&#xff0c;最高位1所在位置位4。 解體思路&#xff1a; 使用高位擴散&#xff0c;將1010擴散位1111使用二分法&#xff0c;計算32位二進制中1111前面0的位數n&#xff1b;結果…

Black自動格式化工具

文章目錄 一、Black自動格式化工具二、格式化行為的核心內容1. 統一縮進和空格規則2. 括號換行&#xff1a;一致的多行結構展開3. 字符串風格統一4. 函數/類定義中的空行規則5. import 排序&#xff08;建議搭配 isort&#xff09;6. 注釋不動、換行優雅7. 可配置項極少&#x…

項目拓展-簡易SQL監控,P6SPY攔截所有jdbc連接并打印執行SQL

介紹一下P6spy驅動 p6spy 是一款開源的數據庫監控框架&#xff0c;主要用于 攔截和記錄應用程序與數據庫之間的所有交互&#xff08;如 SQL 語句、參數、執行時間等&#xff09; 它通過包裝現有的 JDBC 驅動&#xff08;如 MySQL JDBC 驅動&#xff09;&#xff0c;在不修改業…

洛谷B3951 [GESP樣題 五級] 小楊的隊列

題目描述 小楊的班級里共有 N N N 名同學&#xff0c;學號從 0 0 0 至 N ? 1 N-1 N?1。某節課上&#xff0c;老師要求同學們進行列隊。具體來說&#xff0c;老師會依次點名 M M M 名同學&#xff0c;讓他們加入隊伍。每名新入隊的同學需要先站到隊伍末尾&#xff08;剛開…

Java編程之外觀模式

前言 想象你要去一家很復雜的餐廳吃飯&#xff0c;但不想自己點菜、排隊、找位置&#xff0c;也不想管廚房、洗碗、送餐這些后端流程。你只需要告訴餐廳服務員“我要一份牛排套餐”&#xff0c;然后坐等就好。這個服務員&#xff0c;就是外觀模式&#xff08;Facade Pattern&a…

告別 Java 開發困境!飛算 JavaAI 開發助手開啟智能編程新時代

在 Java 開發的世界里&#xff0c;需求不明確、加班寫重復代碼、被 BUG 搞得焦頭爛額&#xff0c;是許多開發者難以擺脫的 “三座大山”。需求文檔模糊不清&#xff0c;讓開發者在項目起始階段就陷入迷茫&#xff1b;大量重復性的代碼編寫工作&#xff0c;不僅消耗時間和精力&a…

Node.js 中兩種模塊導出方式區別

兩種模塊到處方式 exports.xxx ... module.exports ... 1. exports.xxx ... exports 是 module.exports 的一個引用&#xff08;快捷方式&#xff09;。 當你寫 exports.foo function() {}&#xff0c;實際上就是給 module.exports 對象添加了一個 foo 屬性。 這種方式…

電腦出問題了,無網絡環境下一鍵快速重裝系統

在電腦使用過程中&#xff0c;系統故障、卡頓、崩潰等問題屢見不鮮。面對這些情況&#xff0c;重裝系統往往是解決問題的最有效手段之一。然而對于剛接觸計算機操作的新用戶來說&#xff0c;如何安全、穩定地完成系統重裝&#xff0c;仍是一個頗具挑戰的任務。 這一款專為新手…

基于區塊鏈的去中心化身份驗證系統:原理、實現與應用

前言 在數字化時代&#xff0c;身份驗證是網絡安全和隱私保護的核心環節。傳統的身份驗證系統依賴于中心化的機構&#xff0c;如政府、銀行或互聯網服務提供商&#xff0c;這些機構存儲和管理用戶的個人信息。然而&#xff0c;中心化系統存在諸多問題&#xff0c;如數據泄露風險…

React forwardRef 與 useImperativeHandle 深度解析

在React開發中&#xff0c;組件間的通信是一個核心話題。雖然props和state能夠處理大部分場景&#xff0c;但有時我們需要更直接的方式來操作子組件。今天我們來深入探討兩個強大的React Hook&#xff1a;forwardRef和useImperativeHandle。 forwardRef&#xff1a;傳遞引用的…

KingbaseES在線體驗平臺深度測評:基于MCP接口管理的Oracle風格SQL實戰

文章目錄 一、平臺環境與準備二、引導體驗1.檢查數據庫版本及服務狀態 三、建庫與建表1. 建庫&#xff08;KingbaseES中通常無需顯式建庫&#xff0c;此處以創建schema模擬&#xff09;2. 建表 四、查庫與數據操作測試1. 查庫&#xff08;確認表結構&#xff09;2. 新增數據3. …

echarts開發 | 數據可視化 -- 第三篇 echart進階配置項 數據集

文章目錄 一、概念二、回顧在系列(series)中設置數據三、在數據集中設置數據3.1 數據集(dataset) 基礎3.2 二維數組數據(默認) 四、把數據集(dataset) 的行或列 映射為 序列 (series)五、維度(dimension)六、數據到圖形的映射 &#xff08;series.encode&#xff09; 一、概念 …

如何科學測算AI業務場景所需算力服務器?——以Qwen3 32B模型與海光K100為例

在人工智能&#xff08;AI&#xff09;技術飛速發展的今天&#xff0c;越來越多企業開始部署大模型應用&#xff0c;如智能問答、文本生成、知識圖譜構建等。但如何合理配置硬件資源&#xff0c;既滿足業務需求又避免資源浪費&#xff0c;是每個項目實施前必須解決的問題。 本…

滲透實戰:利用XSS獲取cookie和密碼

操作均來自靶場&#xff0c;切勿用于未授權滲透測試&#xff01; Lab 21&#xff1a;將反射型 XSS 注入帶有尖括號、單引號、雙引號、反斜杠和反引號的 Unicode 轉義模板文字中 輸入的任何單引號雙引號尖括號都會被 unicode 編碼 直接換另一種代碼執行方式${alert(1)}&#…

Eureka、Nacos、Zookeeper 優雅上下線機制

? 三大注冊中心優雅上下線機制對比 維度EurekaNacosZookeeper注冊方式客戶端注冊 心跳維持客戶端注冊 心跳維持客戶端創建臨時節點服務可用狀態控制STARTING、UP、DOWN、OUT_OF_SERVICEUP、DOWN、STARTING 等無顯式狀態標識&#xff0c;靠節點存在與否判定上線控制方式通過…

Flink與Kubernetes集成

引言 在當今大數據與云計算蓬勃發展的時代&#xff0c;容器編排與流處理技術成為企業數據處理架構的關鍵支柱。Kubernetes作為容器編排系統的行業標準&#xff0c;能夠高效自動化地部署、擴展和管理計算機應用程序&#xff1b;Apache Flink則是流處理和批處理領域的佼佼者&…

第五節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 角色管理模塊(上)

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 對接后端登錄接口(上) ? 第四節:Vben Ad…

實施企業預算管理的企微CRM系統技巧:從成本控制到價值創造

一、企微CRM管理系統為何成為預算管理新引擎? 官方數據顯示&#xff0c;接入企微CRM系統的企業平均降低客戶管理成本28%&#xff0c;預算執行效率提升40%。這源于企微CRM管理軟件的三大獨特優勢&#xff1a; 原生集成能力&#xff1a;與企業微信通訊錄、會話存檔無縫對接&…

WebFuture:手機版頁面部分區域報錯:未將對象引用設置到對象的實例

問題描述&#xff1a; 手機版頁面部分區域報錯&#xff1a;未將對象引用設置到對象的實例&#xff0c;PC板訪問正常。 問題分析&#xff1a; 對比PC和手機頁面模板&#xff0c;調用代碼有以下差異&#xff0c;手機版模板沒兼容null值&#xff0c;簡介為空導致報錯。 解決方法…