集合和函數(shù)

集合

集合的特征

集合是無序的,集合中的元素是唯一的瘫寝,集合一般用于元組或者列表中的元素去重

集合的格式

格式

變量名=set()變量名.add(元素)# 必須不能初始化值

變量名={元素,元素莽使,,,}

注意:下面寫法為一個空字典勾笆,為空默認(rèn)是字典,如果有數(shù)據(jù)在根據(jù)格式判斷為字典還是集合

name={}

添加元素

add

案例

nums={11,24,45,96,28}nums.add(42)print(nums)#{96, 42, 11, 45, 24, 28}

update

案例

nums={11,24,45,96,28}nums2=["anfly","tom"]nums.update(nums2)print(nums)#{96, 'anfly', 11, 45, 24, 28, 'tom'}

刪除元素

remove桥滨,pop窝爪,discard

remove

使用remove刪除集合中的元素 如果有直接刪除 如果沒有程序報錯

案例:該元素存在

nums={11,24,45,96,28}nums.remove(24)print(nums)#{96, 11, 45, 28}

案例:該元素不存在

nums={11,24,45,96,28}nums.remove(245)print(nums)#KeyError: 245

pop

1、如果集合的元素都是數(shù)字, 刪除時, 刪掉的是最小的數(shù)字, 其余數(shù)字升序排列2齐媒、如果集合的元素是非數(shù)字, 刪除時, 刪掉的是隨機的元素, 其余元素隨機排列3蒲每、如果集合里既有數(shù)字又有非數(shù)字元素, 刪除時:若刪掉的是數(shù)字, 則一定是刪掉了最小的, 其他數(shù)字升序排列, 非數(shù)字元素隨機排列;若刪掉的非數(shù)字, 則一定是隨機刪掉了一個, 其他數(shù)字升序排列, 非數(shù)字則隨機排列.如果集合沒有元素程序報錯

案例:有元素

nums={11,24,45,96,28}nums.pop()print(nums)#{11, 45, 24, 28}

案例:無元素

nums={}nums.pop()print(nums)#TypeError: pop expected at least 1 arguments, got 0

?discard

使用discard刪除 如果元素存在直接刪除 如果元素不存在不做任何操作

案例:該元素存在

nums={11,24,45,96,28}nums.discard(24)print(nums)#{96, 11, 45, 28}

案例:該元素不存在

nums={11,24,45,96,28}nums.discard(242)print(nums)#{96, 11, 45, 24, 28}

集合的交集和并集

交集

使用&連接多個集合,得到相同的元素

案例:存在相同元素

set1={"anfly","tom","haha"}set2={"anfly","susala"}set3=set1&set2print(set3)

返回值:{'anfly'}

案例:存在相同元素

set1={"anfly","tom","haha"}set2={"anfly2","susala"}set3=set1&set2print(set3)

返回值:set()

并集

使用|連接多個集合,得到全部集合中全部的元素

案例:

set1={1,2,3,4}set2={3,4,5,6}new_set=set1|set2print(new_set)#{1, 2, 3, 4, 5, 6}

?公共方法

運算符

(1)加法

(2)乘法

(3)in

python中的內(nèi)置函數(shù)

(1)長度:len()

(2)最大值:max()

(3)刪除:del()

二、函數(shù)

?什么是函數(shù)

在開發(fā)程序時喻括,需要某塊代碼多次邀杏,但是為了提高編寫的效率以及代碼的重用,所以把具有獨立功能的代碼塊組織為一個小模塊唬血,這就是函數(shù)

函數(shù)定義和調(diào)用

格式

def函數(shù)名():執(zhí)行語句函數(shù)名()#調(diào)用函數(shù)

案例

defhello():print("hello word")hello()

注意:

定義了函數(shù)之后淮阐,就相當(dāng)于有了一個具有某些功能的代碼,想要讓這些代碼能夠執(zhí)行刁品,需要調(diào)用它調(diào)用函數(shù)很簡單的泣特,通過 函數(shù)名()即可完成調(diào)用每次調(diào)用函數(shù)時,函數(shù)都會從頭開始執(zhí)行挑随,當(dāng)這個函數(shù)中的代碼執(zhí)行完畢后状您,意味著調(diào)用結(jié)束了當(dāng)然了如果函數(shù)中執(zhí)行到了return也會結(jié)束函數(shù)

函數(shù)參數(shù)

思考:現(xiàn)在需要定義一個函數(shù),這個函數(shù)能夠完成2個數(shù)的加法運算兜挨,并且把結(jié)果打印出來膏孟,該怎樣設(shè)計?

案例

defadd2num():a=11b=22c=a+bprintc

思考:如果為了讓一個函數(shù)更通用拌汇,即想讓它計算哪兩個數(shù)的和柒桑,就讓它計算哪兩個數(shù)的和,在定義函數(shù)的時候可以讓函數(shù)接收數(shù)據(jù)?

引入:參數(shù)傳遞

位置參數(shù)

格式

def函數(shù)名(參數(shù)1,參數(shù)2):代碼塊函數(shù)名(值1,值2)

案例:

deffun(a,b):print("a:",a)print("b:",b)fun(2,3)

結(jié)果:a: 2? ? b:3

小總結(jié)定義時小括號中的參數(shù)噪舀,用來接收參數(shù)用的魁淳,稱為 “形參”調(diào)用時小括號中的參數(shù),用來傳遞給函數(shù)用的与倡,稱為 “實參”

?關(guān)鍵字參數(shù)

格式

def函數(shù)名(參數(shù)1,參數(shù)2):代碼塊函數(shù)名(參數(shù)1=值1,參數(shù)2=值2)

案例:

deffun(a,b):print("a:",a)print("b:",b)fun(a=2,b=3)

結(jié)果:a: 2? ? b:3

注意:參數(shù)調(diào)用時,可以改變傳參順序界逛,如果有位置參數(shù)需要位置參數(shù)放在關(guān)鍵字參數(shù)前面

案例:

deffun(a,b):print("a:",a)print("b:",b)fun(3,b=2)

結(jié)果:a: 3? ? b:2

如果關(guān)鍵字參數(shù)傳參要在位置參數(shù)之前,將會報錯

案例:錯誤

deffun(a,b):print("a:",a)print("b:",b)fun(a=3,2)#SyntaxError: positional argument follows keyword argument

缺省參數(shù)

在形參中默認(rèn)有值的參數(shù)纺座,稱之為缺省參數(shù)

案例:調(diào)用函數(shù)時息拜,缺省參數(shù)的值沒有傳入

defprintinfo(name,age=20):print("name:",name)print("age:",age)printinfo(name="anfly")#name: anfly#age: 20

案例:調(diào)用函數(shù)時,缺省參數(shù)的值傳入

defprintinfo(name,age=20):print("name:",name)print("age:",age)printinfo(name="anfly",age=10)#name: anfly#age: 10

案例

defprintinfo(age=20,name):print("name:",name)print("age:",age)printinfo(name="anfly",age=10)#SyntaxError: non-default argument follows default argument

總結(jié)

調(diào)用函數(shù)時,缺省參數(shù)的值如果沒有傳入少欺,則取默認(rèn)值(形式參數(shù))喳瓣,如果傳入,則取實際參數(shù)缺省參數(shù)一定要位于位置參數(shù)的最后面

?不定長參數(shù)

有時可能需要一個函數(shù)能處理比當(dāng)初聲明時更多的參數(shù), 這些參數(shù)叫做不定長參數(shù)赞别,聲明時不會命名畏陕。

格式

defprintinfo(*args,**kwargs):print("args:",args)print("kwargs:",kwargs)printinfo(參數(shù))

注意:加了星號(*)的變量args會存放所有未命名的變量參數(shù),args為元組? ? 而加**的變量kwargs會存放命名參數(shù)氯庆,即形如key=value的參數(shù)蹭秋, kwargs為字典

案例:不定長參數(shù)* args

defprintinfo(*args):print("args:",args)printinfo(100,200,300,400)#args: (100, 200, 300, 400)

案例:* args不能接收key=value類型的參數(shù)

defprintinfo(*args):print("args:",args)printinfo(100,200,300,b=400)#TypeError: printinfo() got an unexpected keyword argument 'b'

案例:不定長參數(shù)* * kwargs

defprintinfo(**kwargs):print("kwargs:",kwargs)printinfo(a=100,b=200,c=300,d=400)#kwargs: {'a': 100, 'b': 200, 'c': 300, 'd': 400}

案例:* * kwargs不能接收未命名的變量參數(shù)

defprintinfo(**kwargs):print("kwargs:",kwargs)printinfo(100,b=200,c=300,d=400)#TypeError: printinfo() takes 0 positional arguments but 1 was given

參數(shù)位置順序

格式

deffun(位置參數(shù),*args,缺省參數(shù),**kwargs):代碼塊fun(參數(shù)值)

案例

defsun(a,*args,b=22,**kwargs):print("a:",a)print("args:",args)print("b:",b)print("kwargs:",kwargs)sun(100,200,300,b=2,m=3,n=4)

返回值:

a: 100? args: (200, 300)b: 2kwargs: {'m': 3, 'n': 4}

注意:?如果很多個值都是不定長參數(shù),那么這種情況下堤撵,可以將缺省參數(shù)放到 *args的后面仁讨, 但如果有**kwargs的話,**kwargs必須是最后的

函數(shù)返回值

場景:?我給兒子10塊錢实昨,讓他給我買包煙洞豁。這個例子中,10塊錢是我給兒子的荒给,就相當(dāng)于調(diào)用函數(shù)時傳遞到參數(shù)丈挟,讓兒子買煙這個事情最終的目標(biāo)是,讓他把煙給你帶回來然后給你對么志电,曙咽,,此時就是返回值

格式

defsum():代碼塊return值sum()

代碼

defsum(a,b):returna+bsum(1,2)

代碼:查看返回值

defsum(a,b):returna+bresult=sum(1,2)#保存函數(shù)的返回值print(result)

多個return

defcreate_nums(num):print("---1---")ifnum==100:print("---2---")returnnum+1# 函數(shù)中下面的代碼不會被執(zhí)行挑辆,因為return除了能夠?qū)?shù)據(jù)返回之外例朱,還有一個隱藏的功能:結(jié)束函數(shù)print("return執(zhí)行之后不會繼續(xù)執(zhí)行")print(“1231223")else:print("---3---")returnnum+2print("---4---")result1=create_nums(100)print(result1)# 打印101result2=create_nums(200)print(result2)# 打印202

注意:一個函數(shù)中可以有多個return語句,但是只要有一個return語句被執(zhí)行到鱼蝉,那么這個函數(shù)就會結(jié)束了洒嗤,因此后面的return沒有什么用處

返回多個數(shù)據(jù)

代碼

defdivid(a,b):shang=a//b#取模yushu=a%b#取余returnshang,yushu#默認(rèn)是元組result=divid(5,2)print(result)# 輸出(2, 1)

總結(jié):return后面可以是元組,列表魁亦、字典等渔隶,只要是能夠存儲多個數(shù)據(jù)的類型,就可以一次性返回多個數(shù)據(jù)

函數(shù)類型

分類:

1. 無參數(shù)洁奈,無返回值2. 無參數(shù)间唉,有返回值3. 有參數(shù),無返回值4. 有參數(shù)睬魂,有返回值

無參數(shù)终吼,無返回值的函數(shù)

此類函數(shù),不能接收參數(shù)氯哮,也沒有返回值,一般情況下,打印提示燈類似的功能喉钢,使用這類的函數(shù)

defprintMenu():print('--------------------------')print('? ? ? xx涮涮鍋 點菜系統(tǒng)')print('')print('? 1.? 羊肉涮涮鍋')print('? 2.? 牛肉涮涮鍋')print('? 3.? 豬肉涮涮鍋')print('--------------------------')

無參數(shù)姆打,有返回值的函數(shù)

?此類函數(shù),不能接收參數(shù)肠虽,但是可以返回某個數(shù)據(jù)幔戏,一般情況下,像采集數(shù)據(jù)税课,用此類函數(shù)

defgetTemperature():# 這里是獲取溫度的一些處理過程# 為了簡單起見,先模擬返回一個數(shù)據(jù)return24

有參數(shù),無返回值的函數(shù)

?此類函數(shù)晃洒,能接收參數(shù)损谦,但不可以返回數(shù)據(jù),一般情況下找颓,對某些變量設(shè)置數(shù)據(jù)而不需結(jié)果時合愈,用此類函數(shù)

有參數(shù),有返回值的函數(shù)

?此類函數(shù)击狮,不僅能接收參數(shù)佛析,還可以返回某個數(shù)據(jù),一般情況下彪蓬,像數(shù)據(jù)處理并需要結(jié)果的應(yīng)用寸莫,用此類函數(shù)

# 計算1~num的累積和(案例需實際演示)defcalculateNum(num):result=0i=1whilei<=num:result=result+i? ? ? ? i+=1returnresult

函數(shù)的嵌套

一個函數(shù)里面又調(diào)用了另外一個函數(shù),這就是所謂的函數(shù)嵌套調(diào)用

案例

deftestb():print("testb start")print("testb testb? 執(zhí)行")print("testb end")deftesta():print("testa start")testb()print("testa end")

返回值

testa starttestb starttestb testb? 執(zhí)行testbendtestaend

注意:如果函數(shù)A中档冬,調(diào)用了另外一個函數(shù)B膘茎,那么先把函數(shù)B中的任務(wù)都執(zhí)行完畢之后才會回到上次 函數(shù)A執(zhí)行的位置

匿名函數(shù)

lambda函數(shù)也叫匿名函數(shù),即函數(shù)沒有具體的名稱

代碼

g=lambdax:x+1print(g(1))

defg(x):returnx+1print(g(1))

注意:lambda函數(shù)可以賦值給變量捣郊,默認(rèn)是返回的辽狈,所以不用再加return關(guān)鍵字

注釋:例如g=lambdax:x+1,可以看成如下函數(shù),冒號前是參數(shù)呛牲,可以有多個刮萌,用逗號隔開,冒號右邊的返回值

變量

局部變量

定義

局部變量娘扩,就是在函數(shù)內(nèi)部定義的變量

約束

其作用范圍是這個函數(shù)內(nèi)部着茸,即只能在這個函數(shù)中使用,在函數(shù)的外部是不能使用的

代碼

deftest1():a=120print("我是局部變量a:",a)a=240print("修改之后的局部變量a:",a)deftest2():a=360print("我是test02函數(shù)中的局部變量a",a)test1()test2()

返回值

我是局部變量a: 120修改之后的局部變量a: 240我是test02函數(shù)中的局部變量a 360

注意:局部變量的作用琐旁,為了臨時保存數(shù)據(jù)需要在函數(shù)中定義變量來進行存儲當(dāng)函數(shù)調(diào)用時涮阔,局部變量被創(chuàng)建,當(dāng)函數(shù)調(diào)用完成后這個變量就不能夠使用了

全局變量

定義

在函數(shù)外邊定義的變量叫做全局變量

約束

全局變量能夠在所有的函數(shù)中進行訪問

代碼

a=100deftest1():print(a)# 雖然沒有定義變量a但是依然可以獲取其數(shù)據(jù)deftest2():print(a)# 雖然沒有定義變量a但是依然可以獲取其數(shù)據(jù)# 調(diào)用函數(shù)test1()test2()

返回值: 100? ? 100

全局變量和局部變量名字相同

代碼

a=100#全局變量deftest1():a=300print("修改后的a:",a)deftest2():print(a)# 調(diào)用函數(shù)test1()test2()

返回值:? ? 修改后的a:300? ? 100

注意:函數(shù)中的變量修改不會導(dǎo)致全局變量改變

全局變量的修改

代碼:global的使用

a=100#全局變量deftest1():globala#將a變成全局變量a=300print("修改后的a",a)deftest2():print(a)# 調(diào)用函數(shù)test1()test2()

注意:在函數(shù)中出現(xiàn)global全局變量的名字 那么這個函數(shù)中即使出現(xiàn)和全局變量名相同的變量名=數(shù)據(jù) 也理解為對全局變量進行修改灰殴,而不是定義局部變量

擴展

在一個函數(shù)中需要對多個全局變量進行修改敬特,那么可以使用

globala,b# 還可以用多次global聲明都是可以的globalaglobalb

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伟阔,更是在濱河造成了極大的恐慌辣之,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皱炉,死亡現(xiàn)場離奇詭異怀估,居然都是意外死亡,警方通過查閱死者的電腦和手機合搅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門多搀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灾部,你說我怎么就攤上這事康铭。” “怎么了梳猪?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵麻削,是天一觀的道長。 經(jīng)常有香客問我春弥,道長呛哟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任匿沛,我火速辦了婚禮扫责,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逃呼。我一直安慰自己鳖孤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布抡笼。 她就那樣靜靜地躺著苏揣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪推姻。 梳的紋絲不亂的頭發(fā)上平匈,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音藏古,去河邊找鬼增炭。 笑死,一個胖子當(dāng)著我的面吹牛拧晕,可吹牛的內(nèi)容都是我干的隙姿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼厂捞,長吁一口氣:“原來是場噩夢啊……” “哼输玷!你這毒婦竟也來了队丝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤饲嗽,失蹤者是張志新(化名)和其女友劉穎炭玫,沒想到半個月后奈嘿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體貌虾,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年裙犹,在試婚紗的時候發(fā)現(xiàn)自己被綠了尽狠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡叶圃,死狀恐怖袄膏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掺冠,我是刑警寧澤沉馆,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站德崭,受9級特大地震影響斥黑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜眉厨,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一锌奴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧憾股,春花似錦鹿蜀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斩熊,卻和暖如春往枣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背座享。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工婉商, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人渣叛。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓丈秩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淳衙。 傳聞我的和親對象是個殘疾皇子蘑秽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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