Python入門基礎中怎麼定義函數,函數調用,函數傳遞參數

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

什麼是函數和為什麼要用函數?

函數是組織好的,可重復使用的,用來做到單一,或相關聯功能的代碼段。函數能提高應用的模塊性,和代碼的重復利用率。已經知道Python提供了許多內建函數,比如print()。但你也可以自己創建函數,這被叫做用戶自定義函數。

如果不用函數,會怎麼樣?

如果沒有函數,代碼就會從上往下執行全部執行。

函數沒有調用的時候,它不會自己執行的。

比如你去購物網站買東西,網站沒有用函數。你打開他們的首頁,然後後台的代碼從上往下執行。一個項目中有多少功能,多少代碼量。當打開首頁需要手機費5分鐘,搜尋商品又要花費5分鐘,你以後肯定不去這個網站購物了。本來網站首頁只需要調用一個函數就可以了,搜尋商品頁面也是一個函數。這樣兩個頁面前後打開加起來也就幾秒的事。定義一個函數

你可以定義一個由自己想要功能的函數,以下是簡單的規則:

函數代碼塊以def關鍵詞開頭,後面依次寫出函數名、括號、括號中的參數和冒號。任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用於定義參數。函數的第一行語句可以選擇性地使用文檔字符串—用於存放函數說明。函數內容以冒號起始,在縮進塊中編寫函數體。return 表達式結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。只要有return 表達式後面的代碼都不會再執行。語法

Python 定義函數使用 def 關鍵字,一般格式如下:

函數調用

定義一個函數,給了函數一個名稱,指定了函數里包含的參數,和代碼塊結構。

函數調用格式:函數名()

參數傳遞

在 python 中,類型屬於對象,變量是沒有類型的。

參數可以看鑰匙,函數是門,多個參數就是多把鑰匙,開門需要鑰匙。

定義函數的時候,我們把參數的名字和位置確定下來。

對於函數的調用者來說,只需要知道如何傳遞正確的參數,以及函數將返回什麼樣的值就夠了。

函數內部的複雜邏輯被封裝起來,調用者無需了解。

Python的函數定義非常簡單,但靈活度卻非常大。

除了空參數和正常定義的必選參數外,還可以使用默認參數、可變參數和關鍵字參數。以下是調用函數時可使用的正式參數類型:

空參數必需參數默認參數不定長參數

空參數

必需參數

必需參數必須傳入函數。調用時的數量必須和聲明時的一樣。

如果不傳參數,會報錯。門需要鑰匙開門,沒帶鑰匙怎麼可以打開。

默認參數

調用函數時,如果沒有傳遞參數,則會使用默認參數。

輸出結果:參數num,str=’求平方的值’,調用函數只傳一個參數5,其實程序自己把默認值str=’求平方的值’也傳入了,我們看不到而已。

調用函數時,修改默認值。

輸出結果:

不定長參數

定義出這個函數,我們必須確定輸入的參數。由於參數個數不確定,你可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述2 種參數不同,聲明時不會命名。

加了星號*的參數會以元組(tuple)的形式導入,存放所有未命名的變量參數。

如果在函數調用時沒有指定參數,它就是一個空元組。我們也可以不向函數傳遞未命名的變量。

輸出結果:

傳入多個參數輸出結果:

函數一個必須參數和一個可變的元組參數。傳入3個參數減去一個必須參數,剩下的2個參數都放到可變的元組參數中,所以不定長參數有兩個元素。

加了兩個星號**的參數會以字典的形式導入。

如果在函數調用時沒有指定參數,它就是一個空字典。我們也可以不向函數傳遞未命名的變量。

輸出結果:

傳入參數輸出結果:

兩個星號**的參數會把賦值形式的參數變為字典形式。

組合參數:

參數定義的順序必須是:必選參數、默認參數、可變參數。

輸出結果:

change(‘名字’,12,’元組’,sex=’男’,ad=’地址’),一個必須參數name對應名字,默認參數值1被傳遞的第二個參數12替換。第三個參數歸類到一個星號的元組參數,如果沒有碰到sex=’男’這樣的參數,後面的參數都會歸類到一個星號的元組參數。

直到碰到類似sex=’男’這樣的賦值語句,它才會歸類到兩個星號的字典參數。例子:

輸出結果:看到這里又有疑問{‘a’:1,’b’:’c’}不是字典,怎麼會歸類到元組。

要記住一個原則,碰到賦值形式的語句才歸類到兩個星號的字典參數。把{‘a’:1,’b’:’c’}改一下。

輸出結果:把{‘a’:1,’b’:’c’}賦值給dict。

return語句

return語句用於退出函數,選擇性地向調用方返回一個表達式。沒有return語句默認返回None。

函數返回多個值,是以元組的形式,注意用逗號隔開。

輸出結果:

匿名函數:python 使用 lambda 來創建匿名函數。

所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。

lambda 只是一個表達式,函數體比 def 簡單很多。lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。lambda 函數的語法只包含一個語句:

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!