俗人說Python函數,果然通俗易懂!

俗人說Python函數,果然通俗易懂!

什麼是函數(私信小編007即可自動獲取Python視頻教程以及各類PDF!)

我們目前為止,已經可以完成一些軟件的基本功能了,那麼我們來完成這樣一個功能:約pao

pint("拿出手機")
print("打開陌陌")
print("找個漂亮的妹子")
print("問她,約不約啊!")
print("ok 走起")

ok so easy我們已經完成了對一個功能的描述,那麼問題來了,我還想在約一次整麼搞,是不是就是在寫一遍

# 約一次
pint("拿出手機")
print("打開陌陌")
print("找個漂亮的妹子")
print("問她,約不約啊!")
print("ok 走起")
# 再約一次
pint("拿出手機")
print("打開陌陌")
print("找個漂亮的妹子")
print("問她,約不約啊!")
print("ok 走起")

ok 非常簡單搞定了,但是我還想約上個10次8次的,怎麼搞,加個循環不就行了嗎?

while True:
pint("拿出手機")
print("打開陌陌")
print("找個漂亮的妹子")
print("問她,約不約啊!")
print("ok 走起")

這樣不就能實現不停的約了嗎?但是呢 我一直約不幹別的了.人要有節制,有需求了再約,這樣比較好.所以呢這樣寫是不行的

最好是我想什麼時候約就什麼時候約. 好了說的這 我們就這樣做,把約這個事,先計劃好,然後按照安排好的流程.在需要約的時候 把這個約

的流程拿出來執行以下就好了.那麼這裡.我們可以先去定義一個事情或者是功能,等到需要的時候直接去用就好了.那麼這裡定義東西就是一個函數

函數:對代碼塊和功能的封裝和定義

函數的定義

首先咱們認識一下要實現我們剛說的功能必備的知識點

def 函數名():
函數體

我們使用def關鍵字來定義函數,函數的定義語法,這裡的函數名的命名規則和變量的命名規則一樣.自己回顧一下變量的命名規則

函數體:就是函數被執行之後要執行的代碼

我們現在就來實現剛剛我們說的定義一個約pao功能:

def yue():
print("拿出手機")
print("打開陌陌")
print("找一個漂亮的妹子")
print("問她,約不約啊")
print("ok 走起")

哦了,這就定義完了,但是這個時候我們去執行,會發生什麼現象? 什麼都沒有發生.因為我只定義了一個函數.但是還沒有執行過這個函數.

函數的調用

使用函數名加小括號就可以調用了 寫法:函數名() 這個時候函數的函數體會被執行

# 調用yue函數
def yue():
print("拿出手機")
print("打開陌陌")
print("找一個漂亮的妹子")

print("問 約不約啊")
print("ok 走起")
yue() # 這是yue函數的調用
結果:
拿出⼿手機
打開陌陌
找個漂亮的妹⼦
問她, 約不約啊
ok. 走你

函數的執行流程

俗人說Python函數,果然通俗易懂!

現在就實現了約一次,我想要約幾次我就只需要

yue()
yue()
yue()
yue()
yue()
yue()

直接調用定義好的函數就可以了 咱們約完之後的得有個結果吧, 比如是約的蘿莉,還是大媽啊總得有個結果,那麼這個結果

怎麼來描述和獲得呢? 這就涉及到函數的返回值啦

函數的返回值

執行完函數之後,我們可以使用return來返回結果

def yue():
print("約你")
print("約我")
print("約他")
return
print("約誰呀") # 這句話不會被執行

yue()

函數中遇到return,此函數結束.不在繼續執行

我們現在有return返回值,我們試試返回個東西

def yue():
print("約你")
print("約我")
print("約他")
return "美女一枚"

yue()

我們現在返回了一個字符串,但是返回給誰了呢? 這個返回值返回給函數的調用者了,我們來看一下

def yue():
print("約你")
print("約我")
print("約他")
return '美女一枚'
girl = yue()
print(girl)
結果:
約你
約我
約他
美女一枚

肯定好多朋友還是不明白上邊怎麼就打印美女一枚了,莫慌看下圖:

俗人說Python函數,果然通俗易懂!

1.定義了一個函數yue
2.調用函數
3.執行函數里的約你
4.執行函數里的約我
5.執行函數里的約他
6.返回給調用者一個字符串,這個調用者就是yue()
7.將返回的字符串通過一個等號賦值給白變量girl
8.打印變量girl的值

函數的返回值可以有多個結果:

def yue(): 
print("約你")
print("約我")
print("約他")
return "美女一枚", "蘿莉一枚"
girl = yue()
print(type(girl)) # tuple

總結一下:

1.遇到return,此函數結束,函數後面的東西將不會在執行

2.return 返回值

關於返回值:

如果return什麼都不寫或者乾脆就沒寫return,返回的結果就是None

如果return後面寫了一哥值,則調用者可以接受一個結果

如果return後面寫了多個結果,則調用者可以接受一個tuple,調用者可以直接使用解構獲取多個變量

OK,完美 可以得到結果了 但是我們約的方式是不是有點問題啊?陌陌現在還能約到嗎?約不到了 我們換探探 那要是過幾天探探也不行了

是不是會有一個替代品,那你們想有一個替代的,你就需要去改代碼.是不是有點不合適了 最好的方式是想用什麼約就用什麼約 ok 我們也是可以實現的

我們可以在函數後邊的括號裡搞點事情

函數的參數

參數,也就是函數括號裡的內容 函數在調用的時候指定一個具體的變量的值 就是參數.寫法如下:

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

我們應該把代碼改一下,能夠實現我剛說的那種效果

def yue(chat): 

print("拿出⼿手機")
print("打開"+chat)
print("找個漂亮的妹⼦子")
print("約不不約")
yue("陌陌")
yue("微信")
yue("探探")
結果:
拿出手機
打開陌陌
找個漂亮的妹⼦
約不約
拿出⼿機
打開微信
找個漂亮的妹⼦
約不約
拿出手機
打開探探
找個漂亮的妹⼦
約不約 

搞定了. 我們在調用yue的時候給chat一個值. 然後再執行函數體.

參數

1.形參

寫在函數聲明的位置的變量叫形參,形式上的一個完整.表示這個函數需要xxx

2.實參

在函數調用的時候給函數傳遞的值.加實參,實際執行的時候給函數傳遞的信息.表示給函數xxx

3.傳參

給函數傳遞信息的時候將實際參數交給形式參數的過程被稱為傳參.

def yue(chat): # chat 形參 
print("拿出手機")
print("打開"+chat)
print("找個漂亮的妹子")
print("約不約")

yue("陌陌") # 實參
len("字符串") # "字符串"在這⾥裡裡就是實參
print("麻花藤") # "麻花藤"就是實參  

參數的分類

1.位置參數

約到現在,有沒有想過這麼一個問題,啥樣的約麼? 哪裡的都約麼? 不一定吧.比如我現在在北京,我很寂寞,我喜歡小姐姐

濤哥 在哈爾濱,很寂寞 大媽就行了 .需要是不一樣的 而我們現在的函數沒沒有這寫功能 那怎麼辦呢? 很簡單 多來幾個參數就好了

def yue(chat,addr,age): # chat 形參
print("拿出手機")
print("打開"+chat)
print("找個" + addr +"附近漂亮的" + str(age) + "歲妹子")

print("約不約")
yue("陌陌","北京",18) # 實參
結果:
拿出手機
打開陌陌
找個北京附近漂亮的18歲妹子
約不約

上述代碼分析: 在訪問yue()的時候,我們按照位置的順序分別把"陌陌","北京",18賦值給了chat,addr,age,在傳參過程中.系統會按照位置吧實參賦值到形參

練習

編寫函數,給函數傳遞兩個參數a,b a,b相加 返回a參數和b參數相加的和

def f(a,b):
c = a+b
return c
num_sum = f(5,8)
print(num_sum)
結果: 13

編寫函數,給函數傳遞兩個參數a,b 比較a,b的大小 返回a,b中最大的那個數

def f(a,b):
if a>b:
return a
else:
return b
num_sum = f(5,8)
print(num_sum)
結果:8

比較大小的這個寫法有點麻煩,我們在這裡學一個三元運算符

def f(a,b):
c = a if a > b else b #當a>b就把a賦值給c,否則就把b賦值給c
return c
msg = f(5,7)
print(msg)
結果:
7

關鍵字參數

位置參數好不好呢? 如果是少量的參數還算OK, 沒有問題. 但是如果函數在定義的時候參數非常多怎麼辦? 程序員必須記住, 我有哪些參數, 而且還有記住每個參數的位置, 否則函數就不能正常調用了. 那則麼辦呢? python提出了一種叫做關鍵字參數. 我們不需要記住每個參數的位置. 只要記住每個參數的名字就可以了

def yue(chat, address, age):
print("拿出手機")
print("打開"+chat)
print("找個"+address+"附近漂亮的"+str(age)+"歲妹子")
print("約不約")
yue(chat="微信", age=18, address="北京") # 關鍵字參數.
結果:
拿出手機
打開微信
找個北京附近漂亮的18歲妹子

約不約 

搞定, 這樣就不需要記住繁瑣的參數位置了.

混合參數

可以把上面兩種參數混合著使用. 也就是說在調用函數的時候即可以給出位置參數, 也可以指定關鍵字參數.

# 混合參數 
yue("微信", age=18, address="上海")# 正確.第一個位置賦值給chat, 後面的參數開始指定關鍵字.
yue(age="18", "微信", address="廣州") # 錯誤, 最開始使用了關鍵字參數, 那麼後面的 微信的位置就串了, 容易出現混亂

注意: 在使用混合參數的時候, 關鍵字參數必須在位置參數後面

綜上: 在實參的⾓角度來看. 分為三種:

1. 位置參數

2. 關鍵字參數

3. 混合參數, 位置參數必須在關鍵字參數前面

位置參數:

位置參數,按照位置來賦值,到目前為止,我們編寫的函數都是這種

def yue(chat, address, age): 
print("拿出⼿手機")
print("打開"+chat)
print("找個"+address+"附近漂亮的"+str(age)+"歲妹⼦子")
print("約不不約")

默認值參數:

在函數聲明的時候, 就可以給出函數參數的默認值. 在調用的時候可以 給出具體的值, 也可以不給值, 使⽤用默認值. 比如, 我們錄入咱們班學生的基本信息. 通過調查發現. 我們班大部分學生都是男生. 這個時 候就可以給出⼀一個sex='男'的默認值.

def stu_info(name, age, sex='男'): 
print("錄⼊入學⽣生信息")
print(name, age, sex)
print("錄⼊入完畢")
stu_info("張強強", 18)

注意:必須先聲明在位置參數,才能聲明關鍵字參數

綜上:在形參的角度來看

1. 位置參數

2. 默認值參數(大多數傳進來的參數都是一樣的, 一般用默認參數


分享到:


相關文章: