從零開始學Python(三)函數與lambda表達式

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下來看看由輝輝所寫的關于Python的相關操作吧

目錄

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.函數

1.函數與方法的區別

2.函數的定義

3.函數的傳參

4.函數的返回值

5.函數的運用

二.lambda表達式


一.函數

1.函數與方法的區別


  1. 函數是獨立的代碼塊,可以在任何地方調用。方法是與對象相關聯的,只能通過對象調用

  2. 函數可以接受任意數量的參數,包括可選參數和默認參數。方法通常只接受一個參數,即對象本身

  3. 函數可以返回任何類型的值,包括None。方法通常返回與對象相關的值

  4. 函數可以定義在模塊級別或類級別。方法只能定義在類級別

??總之,函數是獨立的代碼塊,可以在任何地方調用,而方法是與對象相關聯的,只能通過對象調用(直接調用的是函數 通過對象點出來的是方法)


2.函數的定義

語法:

def function_name(parameters):"""docstring"""# function bodyreturn value#function_name是函數的名稱
#parameters是函數的參數列表,可以是任意數量的參數,用逗號分隔
#函數體是由縮進的代碼塊組成,可以包含任意數量的語句
#return語句用于返回函數的結果,可以省略,如果省略,則函數返回None

演示:

#定義函數
def add(x, y):"""Return the sum of x and y."""return x + y#調用函數
result = add(2, 3)
print(result)  # Output: 5

3.函數的傳參

  1. 位置參數傳遞:按照函數定義時參數的順序,依次傳入參數值

    def add(x, y):return x + yresult = add(1, 2)  # 位置參數傳遞
    print(result)  # 輸出 3
  2. 關鍵字參數傳遞:通過指定參數名來傳遞參數值,可以不按照函數定義時參數的順序傳遞參數

    def add(x, y):return x + yresult = add(y=2, x=1)  # 關鍵字參數傳遞
    print(result)  # 輸出 3
  3. 默認參數傳遞:在函數定義時為參數指定默認值,調用函數時可以不傳遞該參數,使用默認值

    def add(x, y=2):return x + yresult1 = add(1)  # 默認參數傳遞
    result2 = add(1, 3)  # 位置參數傳遞
    print(result1)  # 輸出 3
    print(result2)  # 輸出 4
  4. 可變參數傳遞:在函數定義時使用*args語法,可以接收任意數量的位置參數,將它們作為元組傳遞給函數

    def add(*args):result = 0for arg in args:result += argreturn resultresult1 = add(1, 2, 3)  # 可變參數傳遞
    result2 = add(1, 2, 3, 4, 5)
    print(result1)  # 輸出 6
    print(result2)  # 輸出 15
  5. 關鍵字可變參數傳遞:在函數定義時使用**kwargs語法,可以接收任意數量的關鍵字參數,將它們作為字典傳遞給函數

    def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_info(name="Alice", age=18)  # 關鍵字可變參數傳遞
    # 輸出:
    # name: Alice
    # age: 18
     

4.函數的返回值

①返回值不限類型,所以不需要指定返回類型

②使用 return 關鍵字

③可以通過元組的形式返回多個值

5.函數的運用

①函數嵌套

#題目需求:定義求和函數,在求和函數上完成平均值函數def sum_numbers(numbers):"""求和函數"""result = 0for number in numbers:result += numberreturn resultdef average_numbers(numbers):"""平均值函數"""sum_result = sum_numbers(numbers)return sum_result / len(numbers)numbers = [1, 2, 3, 4, 5]
sum_result = sum_numbers(numbers)
average_result = average_numbers(numbers)
print(sum_result)  # 輸出 15
print(average_result)  # 輸出 3.0

②變量的作用域區分

全局變量是在函數外部定義的變量,可以在程序的任何地方訪問

????????

x = 10  # 全局變量def print_x():print(x)  # 可以訪問全局變量xprint_x()  # 輸出 10#變量x是在函數外部定義的,因此它是全局變量。在print_x函數中,我們可以直接訪問全局變量x

局部變量是在函數內部定義的變量,只能在函數內部訪問

????????

def print_x():x = 10  # 局部變量print(x)  # 可以訪問局部變量xprint_x()  # 輸出 10#變量x是在print_x函數內部定義的,因此它是局部變量。在函數外部無法訪問局部變量x

🔺需要注意的是,如果在函數內部使用了與全局變量同名的變量,那么該變量會被視為局部變量,而不是全局變量

????????

x = 10  # 全局變量def print_x():x = 20  # 局部變量,與全局變量同名print(x)  # 訪問局部變量xprint_x()  # 輸出 20
print(x)  # 輸出 10,訪問全局變量x#雖然全局變量x的值為10,但是在print_x函數內部我們定義了一個同名的局部變量x
#因此在函數內部訪問的是局部變量x的值,而不是全局變量x的值
#在函數外部訪問x時,仍然訪問的是全局變量x的值

二.lambda表達式

定義:相當于匿名函數,可以簡化目前的函數,在 java 中的流式操作與函數接口有體現

使用場景及示例:

排序:lambda表達式可以作為sorted函數的key參數,用于指定排序規則

??????????????使用lambda表達式按照字符串長度對列表進行排序

words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # 輸出 ["date", "apple", "banana", "cherry"]

②過濾:ambda表達式可以作為filter函數的第一個參數,用于指定過濾規則

???????????????使用lambda表達式過濾出列表中的偶數

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 輸出 [2, 4, 6]

③映射:lambda表達式可以作為map函數的第一個參數,用于指定映射規則

???????????????使用lambda表達式將列表中的元素平方

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 輸出 [1, 4, 9, 16, 25]

④函數傳參:lambda表達式可以作為函數的參數,用于指定函數的行為

def apply_operation(operation, x, y):return operation(x, y)result = apply_operation(lambda x, y: x + y, 1, 2)
print(result)  # 輸出 3

好啦,今天的分享就到這了,希望能夠幫到你呢!😊😊???

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

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

相關文章

[PaddlePaddle] [學習筆記] [上] 計算機視覺(卷積、卷積核、卷積計算、padding計算、BN、縮放、平移、Dropout)

1. 計算機視覺的發展歷程 計算機視覺作為一門讓機器學會如何去“看”的學科,具體的說,就是讓機器去識別攝像機拍攝的圖片或視頻中的物體,檢測出物體所在的位置,并對目標物體進行跟蹤,從而理解并描述出圖片或視頻里的場…

深入解析 SOCKS5 代理及其在網絡安全與爬蟲中的應用

在當今數字化時代,網絡安全和數據獲取成為了互聯網時代的重要課題。為了實現安全的網絡連接和高效的數據采集,各種代理技術應運而生。本文將深入探討 SOCKS5 代理及其在網絡安全和爬蟲領域的應用,同時比較其與其他代理方式的優勢與劣勢。 1.…

TypeScript 語法

環境搭建 以javascript為基礎構建的語言,一個js的超集,可以在任何支持js的平臺中執行,ts擴展了js并且添加了類型,但是ts不能被js解析器直接執行,需要編譯器編譯為js文件,然后引入到 html 頁面使用。 ts增…

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源碼 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前對于 mysql 方面的東西, 更多的僅僅是簡單的使用[業務中的各種增刪改查], 以及一些面試題的背誦 這里會參照 MySQL Internals Manual 來大致的看一下 i…

通過matlab對比music,mvdr以及tdoa三種定位算法的性能

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 4.1 MUSIC(Multiple Signal Classification) 4.2 MVDR(Minimum Variance Distortionless Response) 4.3 TDOA(Time Difference o…

開發一個RISC-V上的操作系統(七)—— 硬件定時器(Hardware Timer)

目錄 往期文章傳送門 一、硬件定時器 硬件實現 軟件實現 二、上板測試 往期文章傳送門 開發一個RISC-V上的操作系統(一)—— 環境搭建_riscv開發環境_Patarw_Li的博客-CSDN博客 開發一個RISC-V上的操作系統(二)—— 系統引導…

AD域機器KMS自動激活

1、打開AD域控,點擊DNS管理 2、創建其它記錄 3、選擇服務位置 SRV 4、輸入相關信息 服務:_VLMCS協議:_TCP權重:100端口號:1688KMS服務器地址:10.3.0.211 5、成功,這時域內主機重啟后&#xff0…

騰訊云CVM服務器2核2g1m帶寬支持多少人訪問?

騰訊云2核2g1m的服務器支持多少人同時訪問?2核2g1m云服務器短板是在1M公網帶寬上,騰訊云服務器網以網站應用為例,當大規模用戶同時訪問網站時,很大概率會卡在公網帶寬上,所以壓根就談不上2核2G的CPU內存計算性能是否夠…

sql 執行的順序

在執行 SQL 查詢時,通常會按照以下順序進行處理: FROM 子句:指定要查詢的表或視圖。WHERE 子句:篩選滿足特定條件的行。GROUP BY 子句:將結果按照指定的列進行分組。HAVING 子句:篩選滿足特定條件的分組。…

燒寫PYNQ鏡像到SD卡

一,安裝 Win32diskimager 首先將Micro SD卡插入讀卡器的卡槽中,然后再將讀卡器插入計算機USB接口,此時計算機將會識別到插入的可移動磁盤。雙擊打開Win32DiskImager-1.0.0.zip 壓縮文件,里面win32diskimager-1.0.0-install.exe文…

Postman

Postman 簡介下載安裝 簡介 Postman 是一款用于測試和開發 API(應用程序編程接口)的工具,它提供了用戶友好的界面和豐富的功能,幫助開發者輕松地創建、測試、調試和文檔化各種類型的 API。無論是在構建 Web 應用、移動應用還是其…

“深入解析Maven:安裝、創建項目和依賴管理的完全指南“

目錄 引言Maven的安裝創建Maven項目之前的裝備工作Eclipse創建新的Maven項目項目依賴管理 總結 引言 Maven是一個流行的項目管理工具,被廣泛用于Java項目的構建、依賴管理和部署。它提供了一種簡單而強大的方式來管理項目的各個方面,使開發人員能夠更專…

LeetCode 1631. Path With Minimum Effort【最小瓶頸路;二分+BFS或DFS;計數排序+并查集;最小生成樹】1947

本文屬于「征服LeetCode」系列文章之一,這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖,本系列將至少持續到刷完所有無鎖題之日為止;由于LeetCode還在不斷地創建新題,本系列的終止日期可能是永遠。在這一系列刷題文章…

阿里云PolarDB數據庫倚天ARM架構詳細介紹

阿里云云原生數據庫PolarDB MySQL版推出倚天ARM架構,倚天ARM架構規格相比X86架構規格最高降價45%,PolarDB針對自研倚天芯片,從芯片到數據庫內核全鏈路優化,助力企業降本增效。基于阿里云自研的倚天服務器,同時在數據庫…

誰能講清楚Spark之Spark系統架構

### 整體架構概述 Spark與Hadoop MapReduce的結構類似,Spark也采用Master-Worker結構。如果一個Spark集群由4個節點組成,即1個Master節點和3個Worker節點,那么在部署Standalone版本后,Spark部署的系統架構圖如圖2.1所示。簡單來說,Master節點負責管理應用和任務,…

【0day】復現廣聯達-Linkworks 協同辦公管理平臺GetUserByUserCode接口存在SQL注入漏洞

目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現 一、漏洞描述 廣聯達科技股份有限公司成立于1998年,以建設工程領域專業應用為核心基礎支撐,以產業大數據、產業新金融等為增值服務的數字建筑平臺服務商。廣聯達-Linkworks 協同辦公管理平臺GetUserByUserC…

pytest fixture 用于teardown工作

fixture通過scope參數控制setup級別,setup作為用例之前前的操作,用例執行完之后那肯定也有teardown操作。這里用到fixture的teardown操作并不是獨立的函數,用yield關鍵字呼喚teardown操作。 舉個例子: 輸出: 說明&…

掌握Python的X篇_37_類的實例化、類方法

上篇我們已經學習了python中的類,并且學習到可以通過class關鍵字定義類,而類的最基本特性就是它是一個名稱空間,本篇將會學習類的實例化。 文章目錄 1. 類的實例化1.1__init__函數1.2 實例化流程 2. 類方法與成員 1. 類的實例化 上篇中新定義…

二十二、策略模式

目錄 1、項目需求2、傳統方案解決鴨子問題的分析和代碼實現3、傳統方式實現存在的問題分析和解決方案4、策略模式基本介紹5、使用策略模式解決鴨子問題6、策略模式的注意事項和細節7、策略模式的使用場景 以具體項目來演示為什么需要策略模式,策略模式的優點&#x…

貝銳蒲公英:快速搭建連鎖門店監控體系,賦能企業高效管理

隨著國民生活水平的提高和零售場景的變革,消費者對于餐飲類目的消費支出不斷增加,線下社區生鮮商超作為下沉市場最主要的消費場景之一,蘊藏著巨大價值機會。 對于線下連鎖生鮮超市而言,連鎖門店多、員工多,門店管理時會…