公司oa辦公平臺寧波seo優(yōu)化服務
「作者主頁」:士別三日wyx
「作者簡介」:CSDN top100、阿里云博客專家、華為云享專家、網(wǎng)絡安全領域優(yōu)質創(chuàng)作者
「推薦專欄」:小白零基礎《Python入門到精通》
函數(shù)
- 1、函數(shù)的調用
- 2、函數(shù)的參數(shù)
- 2.1、變量的就近原則
- 2.2、傳遞參數(shù)
- 2.3、形參和實參
- 2.4、位置參數(shù)
- 2.5、缺省參數(shù)
- 2.6、可變類型和不可變類型
- 2.7、關鍵字參數(shù)
- 3、匿名函數(shù)
- 4、函數(shù)的返回值
函數(shù)就是一段「封裝」起來的「代碼」,目的是提高代碼的「模塊性」和「復用性」。
「模塊性」:把具有「獨立功能」的代碼封裝成一個模塊,同時可以增加可讀性
「復用性」:把需要「使用多次」的代碼封裝成一個模塊(函數(shù)),后續(xù)直接調用函數(shù),提高開發(fā)效率。
語法
def 函數(shù)名():代碼
- 使用 def 關鍵字定義函數(shù),后面跟函數(shù)名,后面跟括號
()
- 括號里用來定義參數(shù),多個參數(shù)之間使用逗號間隔
- 函數(shù)的內容以冒號
:
開始,并且縮進 - 最后可以選擇用 return 結束函數(shù),結束的同時返回一個值。
實例:創(chuàng)建一個函數(shù)
def function1():print('hello pyton')
1、函數(shù)的調用
創(chuàng)建的函數(shù)默認「不執(zhí)行」,需要「調用」才會執(zhí)行;使用 函數(shù)名()
調用函數(shù)。
# 1、創(chuàng)建函數(shù)
def function1():print('hello pyton')# 2、調用函數(shù)
function1()
輸出:
hello pyton
2、函數(shù)的參數(shù)
參數(shù)可以給函數(shù)「傳遞變量」,函數(shù)利用收到的變量進行具體的操作。
2.1、變量的就近原則
Python中的變量遵守「就近原則」,比如函數(shù)里面和外面有兩個名字相同的變量,函數(shù)就會使用「里面」的變量,而不是外面的變量。
# 函數(shù)外面的變量
money = 18def function1():# 函數(shù)里面的變量money = 20print(money)function1()
開發(fā)時,如果搞混了這些「名字相同」的變量,可能會出現(xiàn)意料之外的情況。為了避免出現(xiàn)這類問題,函數(shù)采用了參數(shù)傳遞的方式。
2.2、傳遞參數(shù)
給函數(shù)傳兩個參數(shù),并在函數(shù)內調用
name = 'ZhangSan'
money = 18def function1( name, money):print('我的名字是', name, '我有', money, '塊錢!')function1( name, money)
輸出:
我的名字是 ZhangSan 我有 18 塊錢!
2.3、形參和實參
函數(shù)創(chuàng)建時,括號里的參數(shù)叫「形參」(形式參數(shù)),用來接收參數(shù)。
函數(shù)調用時,括號里的參數(shù)叫「實參」(實際參數(shù)),用來實際使用。
形參和實參的「名字」可以「不同」。
比如,我把參數(shù)名字隨便改成其他的名字,仍然可以正常調用。當然,實際開發(fā)時,建議根據(jù)作用來命名參數(shù)。
name = 'ZhangSan'
money = 18# 1、函數(shù)定義時,接收形參
def function1( a, b):print('我的名字是', a, '我有', b, '塊錢!')# 2、函數(shù)調用時,傳入實參
function1( name, money)
輸出:
我的名字是 ZhangSan 我有 18 塊錢!
2.4、位置參數(shù)
函數(shù)調用時,參數(shù)的「數(shù)量」和「位置」必須和函數(shù)創(chuàng)建時一樣。
name = 'ZhangSan'
money = 18def function1( a, b):print('第一個參數(shù):', a)print('第二個參數(shù):', b)function1( name, money)
輸出:
第一個參數(shù): ZhangSan
第二個參數(shù): 18
如果參數(shù)的「數(shù)量不對」,會報錯 TypeError。
如果參數(shù)的「位置不對」,會不符合預期。
name = 'ZhangSan'
money = 18def function1( a, b):print('我的名字是:', a, '我有', b, '快錢!')function1( money, name)
輸出:
我的名字是: 18 我有 ZhangSan 快錢!
2.5、缺省參數(shù)
缺省參數(shù)也叫「默認參數(shù)」,在函數(shù)定義時,給參數(shù)指定「默認值」。
擁有默認值的參數(shù),在函數(shù)調用時可以「不傳值」:
- 如果傳值,參數(shù)就會使用傳入的新值
- 如果不傳值,參數(shù)就會使用默認值
name = 'ZhangSan'
money = 18# 1、參數(shù)設置默認值
def function1( a, b = 28):print('我的名字是:', a, '我有', b, '塊錢!')# 2、傳值
function1( name, money)
# 3、不傳值
function1( name)
輸出:
我的名字是: ZhangSan 我有 18 塊錢!
我的名字是: ZhangSan 我有 28 塊錢!
2.6、可變類型和不可變類型
Python變量的類型中,整型、字符串、元組屬于「不可變類型」,列表、字典等屬于「可變類型」。
- 函數(shù)接收「不可變類型」的參數(shù),采用「值傳遞」,只是修改另一個復制的變量,不會改變原變量的值。
- 函數(shù)接收「可變類型」的參數(shù),采用「引用傳遞」,會改變原變量的值。
str1 = 'ZhangSan'
list1 = [1, 2, 3]# 修改傳入的參數(shù)
def function1( str, list):str * 2list.append(4)function1( str1, list1)print(str1)
print(list1)
輸出:
ZhangSan
[1, 2, 3, 4]
2.7、關鍵字參數(shù)
函數(shù)調用時,可以按照「參數(shù)關鍵字」給參數(shù)「賦值」。使用這種方式,可以不受參數(shù)順序的限制。
name = 'ZhangSan'
money = 18def function1( a, b):print('我的名字是', a, '我有', b, '塊錢!')# 關鍵字參數(shù)傳參
function1( b=money, a=name)
輸出:
我的名字是 ZhangSan 我有 18 塊錢!
3、匿名函數(shù)
匿名函數(shù)不需要 def 來聲明函數(shù),而是用 lambda 表達式來創(chuàng)建函數(shù)。常用于處理簡單的場景。
語法
函數(shù)名 = lambda [參數(shù)] : 代碼塊
lambda 表達式的格式是固定的,因此只能封裝有限的代碼進去。
實例:創(chuàng)建一個匿名函數(shù),返回兩個數(shù)相加之和。
function1 = lambda num1, num2: num1 + num2result = function1(1, 2)
print(result)
輸出:
3
4、函數(shù)的返回值
關鍵字 return 可以讓函數(shù)返回一個值,比如將函數(shù)的執(zhí)行結果返回,或者返回一個自定義的值。
返回多個值需要用逗號間隔;如果不指定值,就返回None。
def function1(a, b):return a + bdef function2(a, b):return '自定義的值'def function3(a, b):return '第一個值', '第二個值'def function4(a, b):returnprint(function1(1, 2))
print(function2(1, 2))
print(function3(1, 2))
print(function4(1, 2))
輸出:
3
自定義的值
('第一個值', '第二個值')
None
return 還有退出函數(shù)的作用, return 后面的代碼不會被執(zhí)行;如果一個函數(shù)內有多個 return ,則只返回第一個 return 的返回值。
def function1(a, b):return a + bprint('return后面的代碼')return '第二個返回值'print(function1(1, 2))
輸出:
3