版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python程序設(shè)計(jì)第4章
序列、集合與字典學(xué)習(xí)目標(biāo)理解數(shù)據(jù)容器應(yīng)用場(chǎng)景掌握常用容器對(duì)象的創(chuàng)建和操作知識(shí)目標(biāo)能夠使用常用容器存儲(chǔ)和操作數(shù)據(jù)能夠正確選擇容器解決實(shí)際問題能力目標(biāo)追求創(chuàng)新,避免重復(fù)造車輪個(gè)人職責(zé)的重要性團(tuán)隊(duì)協(xié)作與組織的重要性情感態(tài)度與價(jià)值觀什么是數(shù)據(jù)容器01020403序列集合字典目
錄什么是數(shù)據(jù)容器01020403序列集合字典目
錄數(shù)據(jù)容器的概念數(shù)據(jù)容器:可以存儲(chǔ)多個(gè)數(shù)據(jù)項(xiàng)的復(fù)合數(shù)據(jù)類型序列:字符串、列表、元組集合字典每種容器都有其特定的方法,應(yīng)根據(jù)具體的應(yīng)用場(chǎng)景和需求,選擇合適的容器什么是數(shù)據(jù)容器71什么是數(shù)據(jù)容器01020403序列集合字典目
錄序列020403集合字典目
錄什么是數(shù)據(jù)容器01字符串列表元組切片序列:存儲(chǔ)有序的元素集合字符串列表元組4.1序列71元素按插入的順序排列位置關(guān)系固定通過索引訪問任意元素正數(shù)索引:左->右負(fù)數(shù)索引:右->左字符串:零個(gè)或多個(gè)字符組成的有序字符序列多行注釋:三引號(hào)對(duì)''''''""""""字符串字面量:?jiǎn)我?hào)/雙引號(hào)對(duì)'good'"100"注意:Python中單個(gè)字符也是字符串4.1.1字符串71字符串變量的定義4.1.1字符串72language='Python'author='GuidovanRossum'示例4-1變量=字符串字面量字符串變量的訪問4.1.1字符串72info='hello'print(info)
#打印整個(gè)字符串print(info[1]) #打印info第二個(gè)字符(從左往右計(jì)數(shù))print(info[-2]) #打印info第二個(gè)字符(從右往左計(jì)數(shù))info[0]='H'
#錯(cuò)誤:不可以修改已經(jīng)創(chuàng)建的字符串中的字符info='Hello' #正確示例4-2字符串格式化%f-string字符串方法format()4.1.1字符串72常用占位符%d%f%s占位符:{}字符串格式化:f-string在字符串前加上字母“f”或“F”,可以將花括號(hào)“{}”內(nèi)的表達(dá)式作為字符串的格式化參數(shù)4.1.1字符串72name='張三'age=18print(f'{name}今年{age}歲')#直接使用變量的值替換{}
a=5b=10print(f'a+b={a+b}')#用a+b的值替換{}
m=2.99print(f'梨子{m:.2f}元/斤')#冒號(hào)后面是指定的格式示例4-3字符串格式化:format()4.1.1字符串73#按實(shí)際參數(shù)出現(xiàn)的順序逐個(gè)填入占位符name='張三'age=18print('{}今年{}歲'.format(name,age))示例4-4<模板字符串>.format(<逗號(hào)分隔的實(shí)際參數(shù)>)字符串格式化:format()4.1.1字符串73#按實(shí)際參數(shù)的位置索引填入相應(yīng)的占位符var='{0}9元一斤,{1}10元四斤,{0}和{1}各買一斤多少錢?'print(var.format('蘋果','桃子'))
#按關(guān)鍵參數(shù)填入相應(yīng)的值var='小明今年{age}歲,正在讀{school}。'print(var.format(age=17,school='高中'))示例4-4<模板字符串>.format(<逗號(hào)分隔的實(shí)際參數(shù)>)字符串運(yùn)算+:連接左右兩個(gè)字符串*:將字符串重復(fù)N次,字符串為左操作數(shù),N為右操作數(shù)4.1.1字符串73str1='Hello,'str2='World!'result=str1+str2#打印結(jié)果:Hello,World!str1='abc'result=str1*3#打印結(jié)果:abcabcabc示例4-5、4-6Python提供一些內(nèi)置函數(shù)處理字符串len():獲取字符串長(zhǎng)度4.1.1字符串73str1='abc'print(len(str1))#打印結(jié)果:3示例4-7函數(shù)名(待處理對(duì)象)len()也可用于其他數(shù)據(jù)容器,獲取容器內(nèi)元素個(gè)數(shù)chr():獲取ASCII碼對(duì)應(yīng)的單個(gè)字符ord():獲取單字符的ASCII碼4.1.1字符串74x=123print(chr(x))#打印結(jié)果:{x='1'print(ord(x))#打印結(jié)果:49示例4-8、4-9字符串方法split()strip()join()find()……4.1.1字符串74字符串對(duì)象.方法名(參數(shù))split():根據(jù)指定的分隔符,將字符串拆分成多個(gè)子字符串,并返回一個(gè)包含這些子字符串的列表sep:可選,指定分隔符字符串,如果不提供或?yàn)榭兆址?,默認(rèn)使用空白符,包括空格、制表符、回車符等maxsplit:可選,指定最大拆分次數(shù)4.1.1字符串74字符串對(duì)象.split([sep,maxsplit])split()使用4.1.1字符串74#使用默認(rèn)分隔符(空白符)str1='HelloWorldfromPython'result=str1.split()print(result)#輸出:['Hello','World','from','Python']#指定分隔符(,)str1='apple,banana,orange'result=str1.split(',')print(result)#輸出:['apple','banana','orange']示例4-10split()使用4.1.1字符串74#指定最大切分次數(shù)為2str1='apple,banana,orange,grape'result=str1.split(',',2)print(result)#輸出:['apple','banana','orange,grape']示例4-10strip():刪除字符串開頭和結(jié)尾的指定字符chars:可選,指定要?jiǎng)h除的字符,如果不提供或?yàn)榭兆址J(rèn)刪除空白符4.1.1字符串75字符串對(duì)象.strip([chars])strip()使用4.1.1字符串75#刪除頭尾空白符str1='Hello,World!'result=str1.strip()print(result)#輸出:'Hello,World!'#刪除頭尾的尖括號(hào)str1='<<<Hello,World!>>>'result=str1.strip('<>')print(result)#輸出:'Hello,World!'示例4-11join():將列表、元組或其他可迭代對(duì)象中的字符串按照指定的分隔符連接起來separator:指定的分隔符字符串iterable:要將元素連接起來的可迭代對(duì)象4.1.1字符串75separator.join(iterable)join()使用4.1.1字符串75words=['apple','banana','orange']result=','.join(words)#以','連接列表對(duì)象word中的所有字符串print(result)#輸出:'apple,banana,orange'示例4-12find():在字符串中查找子字符串的位置,如果找到了子字符串,返回其第一個(gè)字符的索引;如果沒有找到,返回-1sub:要查找的子串start:可選,指定開始查找的索引,默認(rèn)為0,表示從字符串第一個(gè)元素開始找end:可選,指定結(jié)束查找的索引,默認(rèn)為字符串的長(zhǎng)度查找的索引范圍:[start,end)4.1.1字符串75字符串對(duì)象.find(sub[,start[,end]])find()使用4.1.1字符串75str1='Hello,World!'#從第一個(gè)元素找到最后一個(gè)元素index=str1.find('World')print(index)#輸出:7#在“Hello,”范圍內(nèi)找index=str1.find('World',0,6)print(index)#輸出:-1示例4-13列表(list):存儲(chǔ)一組有序元素特點(diǎn)元素可以是任何類型,且類型可以不同有序:元素在列表中的位置是固定的可變:可動(dòng)態(tài)添加、刪除、修改元素4.1.2列表76創(chuàng)建列表:[]“[]”內(nèi)為空表示創(chuàng)建一個(gè)空列表對(duì)象多個(gè)元素作為初始值,這些元素之間用逗號(hào)隔開4.1.2列表76empty=[]fruits=['apple','banana','cherry']counter=[1,4,10]diff=['spam',2.0,5,[10,20]]示例4-14創(chuàng)建列表:list()根據(jù)其他對(duì)象(元組、range、字符串、集合等)的值,創(chuàng)建一個(gè)新的列表對(duì)象返回4.1.2列表77a=list()#創(chuàng)建空列表b=list('Helloworld!')#根據(jù)字符串創(chuàng)建列表示例4-15訪問列表元素4.1.2列表77fruits=['apple','banana','cherry']print(fruits)#打?。篬'apple','banana','cherry']print(fruits[0])#打印結(jié)果:appleprint(fruits[-1])#打印結(jié)果:cherryfruits[1]='mango'print(fruits)#打?。篬'apple','mango','cherry']示例4-16獲取元素位置:index()返回第一個(gè)匹配元素的索引,若不存在該元素則報(bào)錯(cuò)4.1.2列表77fruits=['apple','banana','cherry']print(fruits.index('cherry'))#打印結(jié)果:2示例4-16列表對(duì)象.index(item))增加元素(原地修改)append():向列表對(duì)象的末尾添加一個(gè)元素insert():在列表的指定位置插入一個(gè)元素4.1.2列表77列表對(duì)象.append(item)列表對(duì)象.insert(index,item)增加列表元素4.1.2列表78fruits=['apple','banana','cherry']fruits.append('orange')print(fruits)#打印結(jié)果:['apple','banana','cherry','orange']fruits.insert(1,'mango')print(fruits)#打印結(jié)果:['apple','mango','banana','cherry','orange']示例4-18刪除元素(原地修改)pop():刪除并返回指定索引的元素,默認(rèn)刪除最后一個(gè)remove():刪除列表中首次出現(xiàn)的指定元素(原地修改)4.1.2列表78列表對(duì)象.pop([index])列表對(duì)象.remove(item)刪除列表元素4.1.2列表78fruits=['apple','banana','cherry']x=fruits.pop()print(x)#打印結(jié)果:cherryfruits.remove('apple')print(fruits)#打印結(jié)果:['banana']示例4-19Python列表支持動(dòng)態(tài)增長(zhǎng)或縮減為保證數(shù)據(jù)存儲(chǔ)區(qū)域的連續(xù)性,在列表中間增加、刪除元素,或者原本分配的空間不夠時(shí),會(huì)進(jìn)行數(shù)據(jù)移動(dòng)不適合需要頻繁增加、刪除數(shù)據(jù)的場(chǎng)合當(dāng)需要增刪數(shù)據(jù)時(shí),應(yīng)盡量從列表尾部操作4.1.2列表78清空列表4.1.2列表78fruits=['apple','banana','cherry']fruits.clear()#fruits的id不變,僅刪除其中所有元素fruits=[]#fruits的id變了,引用了一個(gè)新的空列表delfruits#fruits對(duì)象被刪除,不能再使用了示例4-20遍歷列表4.1.2列表79host_list=['172.18.5.1',
'172.18.5.2',
'172.18.5.3']foripinhost_list:print(ip)示例4-21列表元素排序sort():原地排序4.1.2列表79numbers=[19,23,-1,-10,3,14]numbers.sort()print(numbers)#打印結(jié)果:[-10,-1,3,14,19,23]numbers.sort(reverse=True)print(numbers)#打印結(jié)果:[23,19,14,3,-1,-10]示例4-21列表對(duì)象.sort()列表推導(dǎo)式:簡(jiǎn)潔的語法快速生成列表4.1.2列表79a=[x**2forxinrange(1,11)ifx%2==0]print(a)#打印結(jié)果:[4,16,36,64,100]importrandoma=[random.randint(1,20)foriinrange(5)]print(a)#打印結(jié)果:[9,18,8,1,4]示例4-23[元素表達(dá)式for循環(huán)變量in可迭代對(duì)象if條件表達(dá)式]決定列表元素值的計(jì)算方式列表元素的來源列表元素的個(gè)數(shù)滿足條件才生成一個(gè)新元素示例4-23轉(zhuǎn)換為普通for循環(huán)實(shí)現(xiàn)4.1.2列表79a=[x**2forxinrange(1,11)ifx%2==0]print(a)#打印結(jié)果:[4,16,36,64,100]===>a=[]forxinrange(1,11):ifx%2==0:a.append(x**2)示例4-23元組(tuple):存儲(chǔ)一組有序元素特點(diǎn)元素可以是任何類型,且類型可以不同有序:元素在列表中的位置是固定的不可變:元組對(duì)象一旦創(chuàng)建,就不能修改其元素4.1.3元組80創(chuàng)建元組:()“()”內(nèi)為空表示創(chuàng)建一個(gè)空元組對(duì)象多個(gè)元素作為初始值,這些元素之間用逗號(hào)隔開4.1.3元組80empty=()#創(chuàng)建空元組counter=(1,2,3,4,5)diff=('physics',4.24,1997)#元素類型可不相同fruits=('apple',)#只有一個(gè)元素時(shí),元素后需添加逗號(hào)示例4-24創(chuàng)建元組:tuple()根據(jù)其他對(duì)象的值,創(chuàng)建一個(gè)新的元組對(duì)象返回4.1.3元組80a=tuple()#創(chuàng)建空列表b=tuple('Helloworld!')#根據(jù)字符串創(chuàng)建元組示例4-25訪問元組元素4.1.3元組80fruits=('apple','banana','orange')print(fruits[1])#打印結(jié)果:bananafruits[1]='mango'#錯(cuò)誤:不能修改元組的內(nèi)容people=(['Alice',25,'Engineer'],['Bob',30,'Doctor'],['Charlie',35,'Teacher'],)people[0][1]=28#改后:['Alice',28,'Engineer']示例4-26遍歷元組4.1.3元組80people=(['Alice',25,'Engineer'],['Bob',30,'Doctor'],['Charlie',35,'Teacher'],)forpinpeople:print(f'姓名:{p[0]},年齡:{p[1]},職業(yè):{p[2]}')示例4-27切片操作:選取序列的子集start:切片開始的索引,默認(rèn)為0stop:切片結(jié)束的索引(但不包括該位置的元素),默認(rèn)為序列的長(zhǎng)度step:選取元素的步長(zhǎng),默認(rèn)為1,即連續(xù)選取start、stop可以使用正數(shù)或負(fù)數(shù)索引step為正數(shù)時(shí)要求從左至右取子集,為負(fù)數(shù)時(shí)要求從右至左取子集4.1.4切片81變量=序列對(duì)象[start:stop:step]序列的切片操作4.1.4切片81my_string='HelloWorld!'slice1=my_string[:5] #切片結(jié)果:Helloslice2=my_string[6:] #切片結(jié)果:World!numbers=[1,9,12,3,79,-1]split1=numbers[1:5]
#切片結(jié)果:[9,12,3,79]split2=numbers[1::2] #切片結(jié)果:[9,3,-1]split3=numbers[-1:-3:1]
#start至stop的方向與步長(zhǎng)方向不一致,得到空列表[]split4=numbers[-1:-3:-1] #切片結(jié)果:[-1,79]示例4-28什么是數(shù)據(jù)容器01020403序列集合字典目
錄集合0304字典目
錄什么是數(shù)據(jù)容器0102序列集合的特點(diǎn)集合的創(chuàng)建集合的使用集合(set)無序性:集合不保證元素的順序不重復(fù)性:每個(gè)元素都是唯一的元素類型可以不同,但必須是不可變數(shù)據(jù)類型或可哈希的4.2
集合84{}:必須至少包含一個(gè)元素set()4.2.1創(chuàng)建集合85numbers={1,2,3,1,5}#numbers包含:1、2、3、5fruits={'apple','banana','cherry'}diff={'spam',5,2.0,(10,20)}a=set()#創(chuàng)建空集合b=set('Helloworld!')#根據(jù)字符串創(chuàng)建集合示例4-29集合不支持索引使用in判斷某個(gè)數(shù)據(jù)是否為集合的元素4.2.2訪問集合元素85numbers={1,2,3,4,5}if1innumbers:print('是集合的元素,開始處理')else:print('不是集合的元素,其他處理')示例4-30add():將單個(gè)元素添加到集合中,如果集合中已經(jīng)存在該元素,add()不會(huì)做任何事情4.2.3增加集合元素85fruits={'apple','banana'}fruits.add('orange')#現(xiàn)在fruits包含'apple'、'banana'、'orange'numbers={1,2,3}numbers.add(1)#現(xiàn)在numbers包含1、2、3示例4-31集合對(duì)象.add(item)discard():從集合中刪除一個(gè)元素,如果指定的元素不存,discard()方法不會(huì)有任何效果4.2.4刪除集合元素85fruits={'apple','banana','orange'}fruits.discard('banana')#現(xiàn)在fruits包含'apple'、'orange'示例4-32集合對(duì)象.discard(item)使用for循環(huán)遍歷集合對(duì)象4.2.5遍歷集合86ISBNs={'9787302629443','9787302629665','9787302567561'}forisbninISBNs:print(isbn)示例4-33sorted():內(nèi)置函數(shù),為非原地排序iterable:要排序的可迭代對(duì)象,排序后不發(fā)生變化key:可選,指定一個(gè)函數(shù)提取用于比較的數(shù)據(jù)reverse:可選,指定排序方向,True表示升序排序,F(xiàn)alse表示降序排序返回排序后的列表對(duì)象4.2.6集合元素排序86列表對(duì)象=sorted(iterable[,key=key_function,reverse=reverse_flag])sorted()做集合元素排序4.2.6集合元素排序86fruits={'orange','apple','mango'}result=sorted(fruits)#排序結(jié)果以列表對(duì)象返回print(result)#打?。篬'apple','mango','orange']示例4-34利用列表的sort()方法排序4.2.6集合元素排序86fruits={'orange','apple','mango'}fruits_list=list(fruits)#轉(zhuǎn)換成列表對(duì)象fruits_list.sort()#利用列表對(duì)象的sort()方法排序print(fruits_list)#打?。篬'apple','mango','orange']示例4-35什么是數(shù)據(jù)容器01020403序列集合字典目
錄字典04目
錄什么是數(shù)據(jù)容器0102序列03集合字典的特點(diǎn)字典的創(chuàng)建字典的使用字典(dict)存儲(chǔ)鍵值對(duì):key:value鍵唯一,可以是不可變數(shù)據(jù)類型或可哈希數(shù)據(jù)值部分可以重復(fù),可以是任何數(shù)據(jù)類型4.3字典88{}或dict()4.3.1創(chuàng)建字典88#創(chuàng)建空字典empty={}fruits=dict()#創(chuàng)建有初始值的字典counter={'right':4,'wrong':2}emotions=dict([(0,'anger'),(1,'sad'),(2,'happiness')])示例4-36以鍵作為索引,引用對(duì)應(yīng)值部分4.3.2訪問字典元素88counter={'right':4,'wrong':2}print(counter['right'])#打印結(jié)果:4counter['right']=0#->{'right':0,'wrong':2}counter['right']+=1#->{'right':1,'wrong':2}示例4-37字典對(duì)象[key]為避免“鍵不存在”的錯(cuò)誤,可先檢查鍵是否存在,再獲取值4.3.2訪問字典元素89counter={'right':4,'wrong':2}if'other'incounter:value=counter['other']示例4-38new_key:字典中沒有的鍵init_value:初始值4.3.3增加字典元素89counter={'right':4,'wrong':2}counter['help']=0print(counter)#打印結(jié)果:{'right':4,'wrong':2,'help':0}示例4-39字典對(duì)象[new_key]=init_valuepop():刪除指定的鍵值對(duì),并返回被刪除的值key:要?jiǎng)h除的鍵default:可選,指定當(dāng)鍵不存在時(shí)返回的默認(rèn)值,若未提供default參數(shù),當(dāng)鍵不存在時(shí),pop()方法會(huì)報(bào)錯(cuò)被刪除鍵值對(duì)的值部分會(huì)返回,可以存放在變量中以備后續(xù)使用4.3.4刪除字典元素89變量=字典對(duì)象.pop(key[,default])4.3.4刪除字典元素89counter={'right':4,'wrong':2,'help':0}pop_value=counter.pop('help')print(pop_value)#打印結(jié)果:0print(counter)#打印結(jié)果:{'right':4,'wrong':2}pop_value=counter.pop('other','Unknown')print(pop_value)#打印結(jié)果:Unknownprint(counter)#打印結(jié)果:{'right':4,'wrong':2}示例4-40遍歷鍵4.3.5遍歷字典90counter={'right':4,'wrong':2}forkincounter:print(k,counter[k])示例4-41for循環(huán)變量in字典對(duì)象:#代碼塊遍歷值4.3.5遍歷字典90counter={'right':4,'wrong':2}forvincounter.values():#遍歷對(duì)象:[4,2]print(v)示例4-42for循環(huán)變量in字典對(duì)象.values():#代碼塊遍歷鍵值對(duì)4.3.5遍歷字典90counter={'right':4,'wrong':2}#遍歷對(duì)象:[('right',4),('wrong',2)]fork,vincounter.items():print(k,v)示例4-43for循環(huán)變量1,循環(huán)變量2in字典對(duì)象.items():#代碼塊使用sorted()排序4.3.6字典元素排序90emotions={0:'neutral',-1:'sad',1:'happiness'}key_list=sorted(emotions)print(key_list)#打印結(jié)果:[-1,0,1]emotions={0:'neutral',-1:'sad',1:'happiness'}val_list=sorted(emotions.values())print(val_list)#打印結(jié)果:['happiness','neutral','sad']示例4-44、45本章結(jié)束Python程序設(shè)計(jì)第5章Python自定義函數(shù)學(xué)習(xí)目標(biāo)識(shí)記函數(shù)/lambda表達(dá)式語法理解函數(shù)要素掌握函數(shù)的使用知識(shí)目標(biāo)能夠根據(jù)需求正確編寫函數(shù)能夠使用map()等高級(jí)函數(shù)簡(jiǎn)化代碼能力目標(biāo)專業(yè)精神與責(zé)任開源文化與版權(quán)意識(shí)情感態(tài)度與價(jià)值觀函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄函數(shù)概述函數(shù)定義函數(shù)調(diào)用函數(shù):封裝了特定任務(wù)實(shí)現(xiàn)的代碼塊內(nèi)置函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)第三方庫(kù)函數(shù)自定義函數(shù)函數(shù)代碼非調(diào)用不執(zhí)行減少重復(fù)代碼,避免代碼冗余提高代碼的可讀性和可維護(hù)性代碼更加模塊化,便于組織和維護(hù)5.1函數(shù)概述985.2函數(shù)定義與調(diào)用99def函數(shù)名([參數(shù)列表]):#函數(shù)體[return返回值]def:定義函數(shù)的關(guān)鍵字函數(shù)名:遵循標(biāo)識(shí)符的命名規(guī)則([參數(shù)列表]):代表函數(shù)必須從外部得到的數(shù)據(jù),不需要外部數(shù)據(jù)則小括號(hào)內(nèi)留空冒號(hào):表示下一行開始進(jìn)入函數(shù)體函數(shù)體:實(shí)現(xiàn)目標(biāo)功能的語句塊,需要縮進(jìn)return:返回語句,可以帶返回值,也可以不帶函數(shù)模擬切水果機(jī)器(定義部分)5.2函數(shù)定義與調(diào)用100deffruit_cutter(fruit):print(f'開始切{fruit}')pieces=list(fruit)returnpieces示例5-1def函數(shù)名([參數(shù)列表]):#函數(shù)體[return返回值]沒有返回值的函數(shù)直接調(diào)用有返回值的函數(shù)可將返回值賦值給其他變量5.2函數(shù)定義與調(diào)用100函數(shù)名([實(shí)際參數(shù)])變量=函數(shù)名([實(shí)際參數(shù)])函數(shù)模擬切水果機(jī)器(調(diào)用部分)5.2函數(shù)定義與調(diào)用100deffruit_cutter(fruit):print(f'開始切{fruit}')pieces=list(fruit)returnpiecesfruit_pieces=fruit_cutter('apple')print(fruit_pieces)#['a','p','p','l','e']示例5-1函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄函數(shù)返回值與參數(shù)020403變量作用域高階函數(shù)目
錄函數(shù)定義與調(diào)用01函數(shù)返回值函數(shù)參數(shù)返回值是函數(shù)內(nèi)部需要傳遞到函數(shù)外部的數(shù)據(jù)計(jì)算結(jié)果:面積計(jì)算、利息計(jì)算、三角函數(shù)狀態(tài)信息:數(shù)據(jù)是否保存成功、數(shù)據(jù)是否合法數(shù)據(jù)加工結(jié)果:排序結(jié)果、數(shù)據(jù)檢索結(jié)果返回值使用return語句返回給調(diào)用者Python函數(shù)返回值形式None單一值多個(gè)值5.3函數(shù)的返回值100返回None值沒有return語句,函數(shù)體執(zhí)行完畢返回時(shí)遇到return語句但return之后沒有數(shù)據(jù)時(shí)5.3函數(shù)的返回值100defsay_hello(name):
print(f'Hello,{name}!')ret_val=say_hello('張三')print(ret_val)#輸出結(jié)果:None示例5-2返回None值沒有return語句,函數(shù)體執(zhí)行完畢返回時(shí)遇到return語句但return之后沒有數(shù)據(jù)時(shí)5.3函數(shù)的返回值101defsay_hello(name):print(f'Hello,{name}!')ret_val=say_hello('張三')print(ret_val)#打印結(jié)果:None示例5-2defsave(name,age):ifnameisNoneorname=='':print(f'名字({name})不合法')returnifageisNoneorage<0:print(f'年齡({age}不合法)')returnprint('保存完畢!')ret_val=save('',18)print(ret_val)#打印結(jié)果:None示例5-3返回單一值(一個(gè)return)5.3函數(shù)的返回值101defsummary(a,b):returna+bret_val=summary(5,10)print(ret_val)示例5-4返回單一值(多個(gè)return)5.3函數(shù)的返回值101defto_level(score):ifscore>=90:return'優(yōu)'elifscore>=80:return'良'elifscore>=70:return'中'elifscore>=60:return'合格'else:return'不合格'示例5-5調(diào)用語句:ret_val=to_level(85)print(ret_val)返回多個(gè)值:多個(gè)數(shù)據(jù)被函數(shù)組合成元組返回5.3函數(shù)的返回值101deftop_1(data_list):max_val=max(data_list)idx=data_list.index(max_val)returnmax_val,idxret_val=top_1([1,19,4,-6,15,7])print(ret_val)#打印結(jié)果:(19,1)ret1,ret2=top_1([1,19,4,-6,15,7])print(ret1,ret2)#打印結(jié)果:191示例5-6參數(shù)傳遞方式?jīng)Q定函數(shù)如何接收外部數(shù)據(jù)位置參數(shù)默認(rèn)參數(shù)關(guān)鍵字參數(shù)變長(zhǎng)參數(shù)不可變實(shí)參和可變實(shí)參5.4參數(shù)傳遞103位置參數(shù):調(diào)用函數(shù)時(shí),必須按照函數(shù)定義中形式參數(shù)的順序,提供實(shí)際參數(shù),不能隨意改變5.4.1位置參數(shù)103defrectangular_perimeter(height,width):return(height+width)*2ret=rectangular_perimeter(3,2)print(ret)打印結(jié)果:10示例5-7默認(rèn)參數(shù):函數(shù)定義中可以為某些形參提供默認(rèn)值,調(diào)用函數(shù)時(shí)如果沒有為這些參數(shù)提供實(shí)參,函數(shù)將自動(dòng)傳入定義中指定的默認(rèn)值5.4.2默認(rèn)參數(shù)104defsay_hello(name='Python'):print(f'Hello,{name}!')say_hello() #打印結(jié)果:Hello,Python!say_hello('張三') #打印結(jié)果:Hello,張三!示例5-8關(guān)鍵字參數(shù):調(diào)用函數(shù)時(shí)通過“形參名=值”的語法指定參數(shù)的值,不必依賴定義中形參的位置順序5.4.3關(guān)鍵字參數(shù)104definfo(name,age,career):print(f'{name}今年{age}歲,職業(yè)為{career}')#打印結(jié)果:張三今年28歲,職業(yè)為飛行員info(name='張三',career='飛行員',age=28)示例5-9變長(zhǎng)參數(shù):允許函數(shù)接收不定數(shù)量的實(shí)參*形參名:函數(shù)內(nèi)部將該參數(shù)做元組使用調(diào)用時(shí)依次傳入實(shí)參,逗號(hào)隔開5.4.4變長(zhǎng)參數(shù)104definfo(*person):print(f'{person[0]}今年{person[1]}歲,職業(yè)為{person[2]}')#傳遞的實(shí)參:('張三',28,'飛行員')info('張三',28,'飛行員')示例5-10變長(zhǎng)參數(shù):允許函數(shù)接收不定數(shù)量的實(shí)參**形參名:函數(shù)內(nèi)部將該參數(shù)做字典使用調(diào)用時(shí)使用關(guān)鍵字參數(shù)傳參5.4.4變長(zhǎng)參數(shù)105definfo(**person):forkinperson:print(k,person[k])#傳遞的實(shí)參:{name:'張三',age:28,career:'飛行員'}info(name='張三',age=28,career='飛行員')示例5-11變長(zhǎng)參數(shù)使用要點(diǎn)從函數(shù)定義中的參數(shù)列表看不出具體參數(shù)實(shí)現(xiàn)方和調(diào)用方應(yīng)協(xié)商好參數(shù)的具體定義必要情況下提供相應(yīng)的接口描述5.4.4變長(zhǎng)參數(shù)105不可變實(shí)參:函數(shù)內(nèi)部對(duì)形參的修改不會(huì)影響實(shí)參5.4.5不可變實(shí)參與可變實(shí)參105defchange_value(a,b):a=bname='張三'change_value(name,'李四')print(name)#打印結(jié)果:張三示例5-12可變實(shí)參:函數(shù)內(nèi)部對(duì)形參的修改會(huì)反映到實(shí)參5.4.5不可變實(shí)參與可變實(shí)參105defchange_value(a,b):a[0]=binfo=['張三',28,'飛行員']change_value(info,'李四')print(info)#打印結(jié)果:['李四',28,'飛行員']示例5-13函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄變量作用域0304高階函數(shù)目
錄函數(shù)定義與調(diào)用0102函數(shù)返回值與參數(shù)全局變量局部變量global關(guān)鍵字變量作用域:變量能夠被使用的范圍全局變量局部變量5.5變量作用域108全局變量:定義在源文件中,處于函數(shù)、類定義之外的變量在整個(gè)程序運(yùn)行期間都存在程序的任何位置都可以讀取和修改全局變量5.5.1全局變量108a=10 #定義全局變量ab=5 #定義全局變量bdefsummary(x,y):returnx+yprint(summary(a,b))#將a和b用作實(shí)參b+=1#修改變量b示例5-14局部變量:函數(shù)內(nèi)部定義的變量函數(shù)被調(diào)用時(shí)創(chuàng)建,函數(shù)執(zhí)行期間存在只能在該函數(shù)內(nèi)部使用5.5.2局部變量108defdemo():x=2#定義局部變量x
y=4#定義局部變量yprint(x,y)demo()
#打印結(jié)果:24print(x)
#報(bào)錯(cuò):NameError:name'x'isnotdefined示例5-15對(duì)于一個(gè)變量,當(dāng)函數(shù)內(nèi)部?jī)H讀取它時(shí),認(rèn)為該變量是全局變量5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo1():b=a+1#僅讀取a的值,在全局域中尋找aprint(a,b)demo1()#打印結(jié)果:1011示例5-16對(duì)于一個(gè)變量,當(dāng)函數(shù)內(nèi)部對(duì)它賦值時(shí),認(rèn)為該變量是局部變量5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo2():a=20#定義局部變量a,和全局變量a同名,函數(shù)內(nèi)部將覆蓋全局變量ademo2()print(a)#打印結(jié)果:10示例5-17對(duì)于一個(gè)變量,當(dāng)函數(shù)內(nèi)部對(duì)它賦值時(shí),認(rèn)為該變量是局部變量5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo3():print(a)a=30#a為局部變量,但上一行先使用了ademo3()#報(bào)錯(cuò)示例5-17在函數(shù)內(nèi)部修改全局變量的值,需在函數(shù)內(nèi)部用global先行聲明5.5.3global關(guān)鍵字109a=10#定義全局變量adefdemo4():globala#聲明函數(shù)內(nèi)部使用全局變量aa=20demo4()print(a)#打印結(jié)果:20示例5-18global全局變量名函數(shù)定義與調(diào)用01020403函數(shù)返回值與參數(shù)變量作用域高階函數(shù)目
錄高階函數(shù)04目
錄函數(shù)定義與調(diào)用0102函數(shù)返回值與參數(shù)03變量作用域lambda表達(dá)式map()和filter()閉包高階函數(shù):能夠接受其他函數(shù)作為參數(shù),或者返回一個(gè)函數(shù)作為結(jié)果的函數(shù)5.6高階函數(shù)110lambda表達(dá)式:一種簡(jiǎn)潔的函數(shù)定義方式,定義一個(gè)簡(jiǎn)單的、單表達(dá)式的匿名函數(shù)參數(shù)列表:可以是任意數(shù)量的參數(shù),多個(gè)參數(shù)之間用逗號(hào)隔開表達(dá)式:通常是一個(gè)較為簡(jiǎn)單的單一表達(dá)式,其值即為函數(shù)的返回值5.6.1lambda表達(dá)式lambda參數(shù)列表:表達(dá)式將lambda表達(dá)式定義的匿名函數(shù)存放在變量中,以變量名作為函數(shù)名調(diào)用5.6.1lambda表達(dá)式110f=lambdax,y,z:x+y+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都職業(yè)技術(shù)學(xué)院《中級(jí)財(cái)務(wù)會(huì)計(jì)B(下)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年貨物進(jìn)出口代理合同(詳細(xì)代理范圍和責(zé)任劃分)
- 2025版物流企業(yè)整體轉(zhuǎn)讓合作協(xié)議范本3篇
- 2025版鋼結(jié)構(gòu)工程風(fēng)險(xiǎn)管理與應(yīng)急響應(yīng)合同3篇
- 二零二五年勞動(dòng)局規(guī)范下的勞動(dòng)合同范本3篇
- 二零二五年度互聯(lián)網(wǎng)醫(yī)療平臺(tái)外包服務(wù)協(xié)議3篇
- 2024年離婚房貸權(quán)益分配協(xié)議3篇
- 【可行性報(bào)告】2024年錘紋漆行業(yè)項(xiàng)目可行性分析報(bào)告
- 2025年黃南貨運(yùn)資格證試題及答案
- 二零二五年度健身房會(huì)員卡互轉(zhuǎn)協(xié)議3篇
- 《微元法的應(yīng)用》課件
- 文職-管理學(xué)基礎(chǔ)知識(shí)點(diǎn)
- 標(biāo)準(zhǔn)門面租房合同范本
- 《無人機(jī)飛行操控技術(shù)(微課版)》全套教學(xué)課件
- 2023-2024學(xué)年廣東省深圳高級(jí)中學(xué)七年級(jí)(上)期末歷史試卷
- 2024年房屋租賃補(bǔ)充協(xié)議參考模板(四篇)
- 婦科宮腔鏡技術(shù)風(fēng)險(xiǎn)評(píng)估預(yù)案
- 數(shù)據(jù)分析師歷年考試真題試題庫(kù)(含答案)
- 2024年全國(guó)教育大會(huì)精神全文課件
- 寧夏銀川市第一中學(xué)2025屆數(shù)學(xué)高一上期末質(zhì)量檢測(cè)模擬試題含解析
- 廣東省深圳市2023-2024學(xué)年三年級(jí)上學(xué)期英語期中試卷(含答案)
評(píng)論
0/150
提交評(píng)論