day10-函數基礎2總結

"""author = 陳俊龍"""

============函數的返回值==============

1.什么是返回值:

返回值就是函數返回給函數調用者的值(概念)
返回值就是return后面的值(語法)
返回值就是函數調用表達式的值(獲取返回值)

2.return:

1)什么是return:

return是一個關鍵字牧抵,只能出現在函數體中

2)return的作用:

a.執(zhí)行函數體的時候撰茎,一旦遇到return函數直接結束
b.將值返回給函數調用者(將函數內部的數據傳遞到函數外):return后面跟上需要返回的數據

說明:

看一個函數的返回值是什么亡容,就看執(zhí)行函數的過程中有沒有遇到return,
如果遇到,后面的值就是函數的返回值
如果沒有遇到或者遇到return后面沒有數據牵囤,函數默認都會返回None

3)什么樣的數據應該作為函數的返回值:

如果實現完函數的功能會產生新的數據反砌,那么產生的新數據就可以返回,產生多少返回多少

函數可以返回多個返回值:return 返回值1葱轩, 返回值2.....

返回值可以加以利用

4)怎么獲取函數的返回值:

獲取函數調用表達式的值就是獲取函數的返回值

def sum_1(x, y):
    z = x+y
    return z


print(sum_1(1, 2))

3.如何通過return返回數據:

def sum_1(x, y):
    return x+y


print(sum_1(1, 2))

4.函數的調用過程(完整版):

1回到函數調用位置
2傳參
3執(zhí)行函數體
4執(zhí)行完函數體,確定函數返回值
a.函數結束:執(zhí)行完函數的最后一條語句
b.執(zhí)行過程中遇到return
怎么確定返回值,看執(zhí)行過程有沒有遇到return,如果遇到靴拱,return后面的值就是返回值)
5回到函數調用的位置(這個時候函數調用表達式的值才是函數的返回值
6接著往下執(zhí)行

@啊!袜炕!5.函數調用過程其實是一種壓棧的過程

"""
每次調用函數本谜,系統(tǒng)都會自動的在內存中專門為這個函數開辟一個內存空間,用來保存在函數中聲明的變量(形參也是聲明在函數中的變量)偎窘,當函數調用結束乌助,這個內存區(qū)域會自動釋放,如果不把里面變量的數據返回出函數外,那這些數據將全部消失

6.多個返回值:

多個返回值的時候陌知,實際是返回一個!元組!他托,其中的元素就是返回值

def sum_1(x, y):
    return x+y, x-y


print(sum_1(1, 2))   # (3, -1)

================匿名函數=============

1.匿名函數

匿名函數本質還是函數,普通函數中除了聲明的語法其他都適用于匿名函數

1)語法:

lambda 參數列表:返回值

2)說明:

lambda:

  • 關鍵字纵诞,固定寫法

參數列表:

  • 新參列表上祈,以 參數名1,參數名2浙芙,...

返回值 :

  • 寫任何有結果的表達式

注意:

匿名函數的函數體登刺,只要一條語句,而且這條語句的結果就是函數的返回值(不需要return)

可以把接收函數的變量看作是它的函數名

3)什么時候使用:

函數的代碼一行就可以實現

函數的功能不會重復使用

sum1 = lambda num1, num2: num1+num2
print(type(sum1))  # <class 'function'>

練習:寫一個匿名函數嗡呼,求兩個數中的最大值

max_1 = lambda num1, num2: num1 if num1 > num2 else num2
print(max_1(1, 2))

補充:python中的三目運算符

java:

條件語句纸俭?值1:值2

  • 判斷條件語句的結果是否為true,是的話整個表達式的結果就是值1南窗,否則就是值二

python:

值1 if 條件語句 else 值2

  • 判斷條件語句的結果是否為true揍很,是的話整個表達式的結果就是值1,否則就是值二

===============變量的作業(yè)域============

1.什么是作用域1:

聲明完變量后万伤,這個變量可以作用的范圍就是變量的作用域

2.全局變量和局部變量:

1)全局變量:聲明在函數或者類外面的變量都是全局變量

作用范圍:

是從聲明開始到整個文件使用

2)局部變量:聲明在窒悔!函數!中的變量就是局部變量

作用范圍:

是從聲明開始到整個函數結束

全局變量的實例:

# a 是全局變量
a = 100
print('外部', a)

for _ in range(a):
    print('循環(huán)體', a)
    y = 100  # !這里的y也是全局變量

for x in range(4):
    print('x也是全局變量')  # 敌买!這里的x也是全局變量简珠!

局部變量的實例:

# aa是局部變量
def func(aa):
    print('函數中', aa)

3.global和nonlocal:

這兩個關鍵字只能在函數體中使用

1)global:在函數中去聲明一個全局變量或修改一個全局變量的值

用法:

global 變量名
變量名 = 值

n1 = 100

def func4():
    n1 = 200
    print(n1)


func4()  # 200
print(n1)  # 100


=======加入global后======
def func5():
    global n1
    n1 = 200
    print(n1)
    
func5()  # 200
print(n1)  # 200

2)nonlocal:在局部的局部中去修改局部變量的值

用法:

nonlocal 變量名
變量名 = 值

def func5():

     m = 10

    def func55():
        nonlocal m
        m = 20
        print('函數中的函數', m)

    func55()
    print('函數中', m)

func5()  # 函數中的函數 20  函數中 20

===============遞歸函數==============

1.什么是遞歸函數:在函數中調用函數本身就是遞歸函數

循環(huán)能做的事情遞歸都可以做

1)怎么寫遞歸函數

第一步:聲明函數

第二步:找臨界值(函數結束的條件)

第三步:找關系
假設函數的功能已經實現了,找f(n)與f(n-1)的關系

第四步:通過關系虹钮,使用f(n-1)去實現f(n)的功能

2)聋庵!循環(huán)能做的事情不要用遞歸做!

用遞歸實現1+2+3+4+...+n

def sum1(n):
    # 1找臨界值
    if n == 1:
        return 1
    # 2找關系
    return sum1(n-1)+n


print(sum1(100))

用遞歸實現

n = 4
*
**
***
****
def func1(n):
    if n == 1:
        print('*')
        return
    func1(n-1)
    print(n*'*')


func1(5)

用遞歸打印出斐波那契數列的第n位:

def func2(n):
    if n == 1 or n == 2:
           return 1
    return func2(n-2)+func2(n-1)

print(func2(7))
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末芙粱,一起剝皮案震驚了整個濱河市祭玉,隨后出現的幾起案子,更是在濱河造成了極大的恐慌春畔,老刑警劉巖脱货,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岛都,死亡現場離奇詭異,居然都是意外死亡蹭劈,警方通過查閱死者的電腦和手機疗绣,發(fā)現死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門线召,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铺韧,“玉大人,你說我怎么就攤上這事缓淹」颍” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵讯壶,是天一觀的道長料仗。 經常有香客問我,道長伏蚊,這世上最難降的妖魔是什么立轧? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮躏吊,結果婚禮上氛改,老公的妹妹穿的比我還像新娘。我一直安慰自己比伏,他們只是感情好胜卤,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赁项,像睡著了一般葛躏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悠菜,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天舰攒,我揣著相機與錄音,去河邊找鬼悔醋。 笑死摩窃,一個胖子當著我的面吹牛,可吹牛的內容都是我干的篙顺。 我是一名探鬼主播偶芍,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼德玫!你這毒婦竟也來了匪蟀?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤宰僧,失蹤者是張志新(化名)和其女友劉穎材彪,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡段化,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年嘁捷,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片显熏。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡雄嚣,死狀恐怖,靈堂內的尸體忽然破棺而出喘蟆,到底是詐尸還是另有隱情缓升,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布蕴轨,位于F島的核電站港谊,受9級特大地震影響,放射性物質發(fā)生泄漏橙弱。R本人自食惡果不足惜歧寺,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棘脐。 院中可真熱鬧斜筐,春花似錦、人聲如沸荆残。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽内斯。三九已至蕴潦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俘闯,已是汗流浹背潭苞。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留真朗,地道東北人此疹。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像遮婶,于是被迫代替她去往敵國和親蝗碎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內容