day11-筆記function

一.recode

0.什么是函數(shù)躺屁、什么是需要使用函數(shù)
對實現(xiàn)某一特定功能的代碼段的封裝
1.函數(shù)的聲明

def 函數(shù)名(參數(shù)列表):
    """函數(shù)說明文檔"""
    函數(shù)體

2.函數(shù)的調(diào)用

"""
1)語法: 函數(shù)名(實參列表)

2)調(diào)用過程(重點):  
回到函數(shù)聲明的位置
讓實參給形參賦值(傳參)  -  保證每個參數(shù)都有值
執(zhí)行函數(shù)體  
確定返回值  - 看執(zhí)行函數(shù)的時候有沒有遇到return, 遇到了return后面是什么返回值就是什么
            沒有遇到就是None
回到函數(shù)調(diào)用的位置宰衙,接著往后面執(zhí)行   -  這個時候函數(shù)調(diào)用表達(dá)式的值才是函數(shù)的返回值
"""

3.函數(shù)參數(shù)

"""
1) 位置參數(shù)和關(guān)鍵字參數(shù)
注意: 兩個同時存在的時候,位置參數(shù)要在關(guān)鍵字參數(shù)的前面

2) 參數(shù)默認(rèn)值
注意:沒有默認(rèn)值的參數(shù)放在前面

3) 參數(shù)類型說明: 給參數(shù)賦默認(rèn)值、形參名:類型

4) 不定長參數(shù)(用的較少)
*參數(shù)名   -   參數(shù)變成元祖鲤桥;給這個參數(shù)賦值只能用位置參數(shù)
**參數(shù)名  -   參數(shù)變成字典逛钻;給這個參數(shù)賦值只能關(guān)鍵字參數(shù)

*args, **kwargs
"""
nums = [1, 2, 3, 90, 4]
nums.sort(reverse=True)
print(nums)

4.返回值

"""
1)怎么確定函數(shù)的返回值  (見函數(shù)調(diào)用過程)
2)怎么獲取函數(shù)的返回值  (通過獲取函數(shù)調(diào)用表達(dá)式的值)
3)聲明函數(shù)的時候长搀,什么時候需要函數(shù)的返回值;把誰作為函數(shù)的返回值  (看實現(xiàn)函數(shù)功能會不會產(chǎn)生新的數(shù)據(jù))
"""
result = sum([1, 23, 4])


def yt_sum(*nums2):
    return sum(nums2)

二.lambda

1.什么是匿名函數(shù)
沒有函數(shù)名的函數(shù)就是匿名函數(shù) (匿名函數(shù)還是函數(shù)C峁恪J枞铡!H龊骸!L樽獭)
2.語法

"""
lambda 形參列表: 返回值


說明: lambda    -   關(guān)鍵字睬辐,固定寫法
     形參列表    -   和普通函數(shù)的形參列表一樣的。變量名1,變量名2.. 
                    (參數(shù)相關(guān)的語法中,除了':類型名'對參數(shù)類型進(jìn)行說明以外溯饵,別的語法都適用)
     :         -   固定寫法
     返回值     -   相當(dāng)于普通函數(shù)中return后面的語句
     
注意: 匿名函數(shù)能做的事情普通函數(shù)都可以做侵俗;但是多行代碼的普通函數(shù),匿名函數(shù)沒法實現(xiàn)
"""

def yt_sum(n1: int, n2):
    if n1 < 10:
        print('n1')
    return n1+n2


lambda n1, n2: n1+n2

3.調(diào)用 (和普通函數(shù)一樣)
函數(shù)(實參列表) --- 函數(shù)不一定是函數(shù)名丰刊,可以是通過任何方式獲取到的類型function的值
python中隘谣,聲明還是其實可以看成是聲明類型是function的變量;匿名函數(shù)可以看成是function類型的數(shù)據(jù)(類似100是int類型的數(shù)據(jù))
變量名 = lambda 參數(shù)列表: 返回值 --- 通過'變量名()'來調(diào)用匿名函數(shù)

a = 100
b = 12.5
c = 'abc'      # 類型是str的值
d = [10, 23, 90, 'abc']     # 類型是list的值
e = {'a': 100, 'b': 200}   # 類型是dict的值
print(type(e))
print(e['a'])

f = lambda x, y: x*y     # 類型是function的值   return x*y
print(type(f))
print(f(10, 20))
print(f(y=30, x=2))

list1 = [100, b, c, d, e, lambda x, y:x+y]
print(list1[0]+200)
print(list1[-1](10, 22))

三.function

1.函數(shù)作為變量(重點W那伞Q捌纭!)
python中聲明函數(shù)其實就是在聲明一個類型是function的變量秩仆,函數(shù)名就是變量名码泛。所以普通變量能做的事情,函數(shù)都能做

聲明一個函數(shù)func1,有一個參數(shù)一個返回值澄耍;func1是類型是function的變量噪珊,它里面存的數(shù)據(jù)是一個函數(shù),函數(shù)名叫func1,有一個參數(shù)n

2.普通變量能做的函數(shù)都能做
1)用一個變量給另外一個變量賦值

list1 = [1, 2]
list2 = list1
print(list2[0])


def fun2(n):
    # n = 22
    return n*3   # return 22*3


a1 = fun2
print(a1(22))
"""
fun2 = function(), 有一個參數(shù)n

"""

2)變量可以作為列表/元祖的元素齐莲、作為字典的值等

list1 = [1, 2]
dict1 = {'a': list1}


def fun3(n):
    return n*2


dict1 = {'a': list1, 'b': fun3}

dict1['a'].append(100)
print(dict1)

print(dict1['b'](9))     # fun3(9)
  1. 變量作為函數(shù)的實參
    將函數(shù)作為實參傳遞給另外一個函數(shù)(實參高階函數(shù)痢站、閉包)
nums = [1, 2, 3]
print(sum(nums))


def fun4(a):
    # a = print
    a('abc')   # print('abc')


print(fun4(print))

應(yīng)用: sort方法的高級使用
列表.sort(key) - key需要傳一個類型是function的值(函數(shù)),要求這個函數(shù)有一個參數(shù)和一個返回值參數(shù)指向的是列表中的每個元素选酗,返回值是排序的時候的比較對象

nums = ['14', '40', '73', '9', '85']


def fn1(x):
    return x[0]   # 返回值決定列表中的元素按什么進(jìn)行排序


nums.sort(key=fn1)
print(nums)    # ['14', '40', '73', '85', '9']
nums.sort(key=lambda item: int(item))
print(nums)   # ['9', '14', '40', '73', '85']


students = [
    {'name': 'xiaoming', 'age': 23, 'score': 90},
    {'name': 'huahu', 'age': 30, 'score': 70},
    {'name': 'zhangsan', 'age': 19, 'score': 100},
]
students.sort(key=lambda item: item['age'])
print(students)

students.sort(key=lambda item: item['score'])
print(students)

students.sort(key=lambda item: item['name'][-1])
print(students)

print(max(['10', '30', '8'], key=lambda x: int(x)))
print(max(students, key=lambda x: x['score']))


"""
[20, 34, 8, 9, 70]
[70, 20, 8, 9, 34]     index = 0
[70, 34, 8, 9, 20]     index = 1
[70, 34, 20, 8, 9]      index = 2
[70, 34, 20, 9, 8]     index = 3
"""

四.scope

1.作用域: 變量的使用范圍
2.全局變量和局部變量

"""
a.全局變量: python中除了在函數(shù)中或者類中聲明的變量阵难,都是全局變量。
           全局變量的作用域:從聲明開始到文件結(jié)束的任何位置都可以使用
b.局部變量: 在函數(shù)中聲明的變量就是局部變量星掰。
           從聲明開始到函數(shù)結(jié)束都可以使用
"""

3.global和nonlocal

"""
1) global: 想要在一個函數(shù)中去修改一個全局變量的值多望,或者想要在函數(shù)中聲明一個全局變量
global 變量名
變量名 = 值

2)nonlocal: 想要在局部的局部中修改一個局部變量的值
nonlocal 變量名
變量名 = 值
"""
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氢烘,隨后出現(xiàn)的幾起案子怀偷,更是在濱河造成了極大的恐慌,老刑警劉巖播玖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎工,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜀踏,警方通過查閱死者的電腦和手機(jī)维蒙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來果覆,“玉大人颅痊,你說我怎么就攤上這事【执” “怎么了斑响?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵菱属,是天一觀的道長。 經(jīng)常有香客問我舰罚,道長纽门,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任营罢,我火速辦了婚禮赏陵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饲漾。我一直安慰自己蝙搔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布能颁。 她就那樣靜靜地躺著杂瘸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伙菊。 梳的紋絲不亂的頭發(fā)上败玉,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音镜硕,去河邊找鬼运翼。 笑死,一個胖子當(dāng)著我的面吹牛兴枯,可吹牛的內(nèi)容都是我干的血淌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼财剖,長吁一口氣:“原來是場噩夢啊……” “哼悠夯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躺坟,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤沦补,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咪橙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夕膀,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年美侦,在試婚紗的時候發(fā)現(xiàn)自己被綠了产舞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡菠剩,死狀恐怖易猫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情具壮,我是刑警寧澤擦囊,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布违霞,位于F島的核電站嘴办,受9級特大地震影響瞬场,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涧郊,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一贯被、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妆艘,春花似錦彤灶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汽煮,卻和暖如春搏熄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暇赤。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工心例, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鞋囊。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓止后,卻偏偏與公主長得像,于是被迫代替她去往敵國和親溜腐。 傳聞我的和親對象是個殘疾皇子译株,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容