Python基礎案例教程課件:函數(shù)_第1頁
Python基礎案例教程課件:函數(shù)_第2頁
Python基礎案例教程課件:函數(shù)_第3頁
Python基礎案例教程課件:函數(shù)_第4頁
Python基礎案例教程課件:函數(shù)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

函數(shù)本講目標函數(shù)簡介函數(shù)參數(shù)函數(shù)式編程函數(shù)簡介函數(shù)也是一個對象對象是內容中專門用來存儲數(shù)據的一塊區(qū)域函數(shù)可以用來保存一些可執(zhí)行的代碼,并且可以在需要時,對這些語句進行多次的調用創(chuàng)建函數(shù)

函數(shù)名命名規(guī)范可以包含字母、數(shù)字、下劃線、但是不能以數(shù)字開頭

def函數(shù)名([形參1,形參2,...形參n]):代碼塊調用函數(shù)函數(shù)對象()函數(shù)中保存的代碼不會立即執(zhí)行,需要調用函數(shù)代碼才會執(zhí)行

案例定義函數(shù)#定義一個函數(shù)deffn():print('這是我的第一個函數(shù)!')print('hello')#調用函數(shù)fn()函數(shù)參數(shù)在定義函數(shù)時,可以在函數(shù)名后的()中定義數(shù)量不等的形參,多個形參之間使用,隔開形參(形式參數(shù)),定義形參就相當于在函數(shù)內部聲明了變量,但是并不賦值實參(實際參數(shù))

如果函數(shù)定義時,指定了形參,那么在調用函數(shù)時也必須傳遞實參,

實參將會賦值給對應的形參,簡單來說,有幾個形參就得傳幾個實參案例帶參函數(shù)#定義函數(shù)時指定形參deffn(a,b): print(a,"+",b,"=",a+b)#調用函數(shù)fn(10,20)案例帶參函數(shù)-帶默認值#定義一個函數(shù)#定義形參時,可以為形參指定默認值#指定了默認值以后,如果用戶傳遞了參數(shù)則默認值沒有任何作用#如果用戶沒有傳遞,則默認值就會生效deffn(a=5,b=10,c=20):print('a=',a)print('b=',b)print('c=',c)實參的傳遞方式-按位置傳參#實參的傳遞方式#位置參數(shù)#位置參數(shù)就是將對應位置的實參復制給對應位置的形參#第一個實參賦值給第一個形參,第二個實參賦值給第二個形參。。。fn(1,2,3)實參的傳遞方式-按名稱傳參#關鍵字參數(shù)#關鍵字參數(shù),可以不按照形參定義的順序去傳遞,而直接根據參數(shù)名去傳遞參數(shù)fn(b=1,c=2,a=3)#位置參數(shù)和關鍵字參數(shù)可以混合使用#混合使用關鍵字和位置參數(shù)時,必須將位置參數(shù)寫到前面fn(1,c=30)練習-練習1:定義一個函數(shù),可以用來求任意三個數(shù)的乘積-練習2:定義一個函數(shù),可以根據不同的用戶名顯示不同的歡迎信息

函數(shù)式編程

在Python中,函數(shù)是一等對象一等對象一般都會具有如下特點:

①對象是在運行時創(chuàng)建的②能賦值給變量或作為數(shù)據結構中的元素③能作為參數(shù)傳遞④能作為返回值返回

高階函數(shù)高階函數(shù)至少要符合以下兩個特點中的一個①接收一個或多個函數(shù)作為參數(shù)②將函數(shù)作為返回值返回函數(shù)的參數(shù)-不定長參數(shù)一#在定義函數(shù)時,可以在形參前邊加上一個*,這樣這個形參將會獲取到所有的實參#它將會將所有的實參保存到一個元組中#*形參只能接收位置參數(shù),而不能接收關鍵字參數(shù)deffn(*a):print("a=",a,type(a))#定義一個函數(shù),可以求任意個數(shù)字的和defsum(*nums):#定義一個變量,來保存結果

result=0#遍歷元組,并將元組中的數(shù)進行累加

forninnums:result+=nprint(result)函數(shù)的參數(shù)-不定長參數(shù)二#帶星號的形參只能有一個#帶星號的參數(shù),可以和其他參數(shù)配合使用#第一個參數(shù)給a,第二個參數(shù)給b,剩下的都保存到c的元組中deffn(a,b,*c):print('a=',a)print('b=',b)print('c=',c)fn(1,2,3,4,5)函數(shù)的參數(shù)-不定長參數(shù)三#可變參數(shù)不是必須寫在最后,但是注意,帶*的參數(shù)后的所有參數(shù),必須以關鍵字參數(shù)的形式傳遞#第一個參數(shù)給a,剩下的位置參數(shù)給b的元組,c必須使用關鍵字參數(shù)deffn(a,*b,c):print('a=',a)print('b=',b)print('c=',c)#所有的位置參數(shù)都給a,b和c必須使用關鍵字參數(shù)deffn2(*a,b,c):print('a=',a)print('b=',b)print('c=',c)函數(shù)的參數(shù)-不定長參數(shù)四#如果在形參的開頭直接定一個*,則要求所有的參數(shù)必須以參數(shù)名稱的形式傳遞deffn(*,a,b,c): print('a=',a) print('b=',b) print('c=',c)fn(a=30,b=40,c=50)函數(shù)的參數(shù)-不定長參數(shù)**#**形參可以接受其他關鍵字參數(shù),會將參數(shù)保存到一個字典中#字典的key就是參數(shù)的名字,字典的value就是參數(shù)的值#**只能有一個,并且必須寫到參數(shù)的最后deffn(b,c,**a): print('a=',a,type(a)) print('b=',b) print('c=',c)fn(10,20,d=1,e=2)#按位置fn(a=1,d=2,e=3,b=10,c=20)#按名稱參數(shù)的解包#參數(shù)的解包(拆包)deffn(a,b,c): print('a=',a) print('b=',b) print('c=',c)#創(chuàng)建一個元組或集合作為參數(shù)t=(10,20,30)t={1,2,3}#傳遞實參數(shù),序列類型的參數(shù)前加*,這樣序列中的元素依次作為參數(shù)傳遞#這里要求序列中的元素個數(shù)必須和形參個數(shù)一致#fn(*t)#普通傳遞#fn((1,2,3),10,20)#創(chuàng)建字典作為參數(shù)d={'a':100,'b':200,'c':300}#fn(**d)函數(shù)的返回值#函數(shù)返回值returndeffn(*nums): result=0 forninnums: result+=n print(result)#fn(100,200,300)#如果函數(shù)中寫多個return,只會執(zhí)行第一個return,后面代碼不執(zhí)行deffn(): #return'Hello' #return'dd' return[1,2,3]文檔字符串#help()是python中的內置函數(shù)#通過help()函數(shù)可以查詢Python中的函數(shù)用法#語法help(函數(shù)對象)如help(print)#help(print)deffn(a:int,b:bool,c:str='hello')->int: '''

這是函數(shù)說明

''' return10

help(fn)作用域#在Python中一共有兩種作用域# 全局作用域# -全局作用域在程序執(zhí)行時創(chuàng)建,在程序執(zhí)行結束時銷毀# -所有函數(shù)以外的區(qū)域都是全局作用域# -在全局作用域中定義的變量,都屬于全局變量,可以在程序的任意位置訪問## 函數(shù)作用域# -函數(shù)作用域在函數(shù)調用時創(chuàng)建,在調用結束時銷毀# -函數(shù)每調用一次就會產生一個新的函數(shù)作用域# -在函數(shù)作用域中定義的變量,都是局部變量,只能在函數(shù)內部訪問## 變量的查找# -使用變量時,會優(yōu)先在當前作用域中查找,如果沒有,再上一級作用域中查找案例作用域#函數(shù)內部定義新的函數(shù)deffn2(): deffn3(): print('fn3中:','a=',a) fn3()#a=20#fn2()#執(zhí)行結果a=20deffn3(): a=10 #局部變量

print('fn3函數(shù)內部:','a=',a)deffn4(): globala#表示當前變量為使用定義好的全局變量

a=50 #此時相當于修改全局變量

print('fn4','a=',a)fn4()遞歸#創(chuàng)建一個函數(shù),用來求任意數(shù)的階乘#普通函數(shù)使用循環(huán)實現(xiàn),編寫簡單,閱讀稍難deffn(n): '''

該函數(shù)用來求任意數(shù)的階乘 參數(shù): n要求階乘的數(shù)字

''' result=n foriinrange(1,n): result*=i returnresult#n=fn(3)#print(n)遞歸#創(chuàng)建一個函數(shù),用來求任意數(shù)的階乘#遞歸函數(shù)編寫難,閱讀方便#遞歸式函數(shù)的兩個要件# 1.基線條件# -問題可以被分解為的最小問題,當滿足基線條件時,遞歸就不再執(zhí)行了# 2.遞歸條件# -問題可以繼續(xù)分解的條件deffn(n): ifn==1: return1 returnn*fn(n-1)#print(fn(3))遞歸案例回文數(shù)defhui_wen(s): iflen(s)<2: returnTrue elifs[0]!=s[-1]: returnFalse returns[0]==s[-1]andhui_wen(s[1:-1])print(hui_wen('12321'))高階函數(shù)#高階函數(shù)#接收函數(shù)作為參數(shù),或者將函數(shù)作為返回值的函數(shù)是高階函數(shù)#當我們使用一個函數(shù)作為參數(shù)時實際上是將指定的代碼傳遞進了目標函數(shù)高階函數(shù)案例#需求取出列表中所有的偶數(shù)并返回#定義一個函數(shù),判斷一個任意的數(shù)字是否是偶數(shù)deffn2(i): ifi%2==0: returnTrue returnFalsedeffn(fnc,lst): new_list=[] forninlst: iffnc(n): new_list.append(n) returnnew_list #print(fn(fn2,l))閉包#閉包#將函數(shù)作為返回值返回,也是一種高階函數(shù)(了解)#這種高階函數(shù)也稱為閉包,通過閉包可以創(chuàng)建一些當前函數(shù)能訪問的變量#可以將一些私有的數(shù)據藏到閉包中deffn(): a=10 definner(): print('a=',a) print('我是內部函數(shù)') returninner#r是一個函數(shù),是調用fn()后返回的函數(shù)#這個函數(shù)是在fn()內部定義,并不是全局函數(shù)#所以這個函數(shù)總是能訪問到fn()函數(shù)內的變量#r=fn();#r();閉包#閉包使用案例#形成閉包的條件#1.函數(shù)嵌套#2.將內部函數(shù)作為返回值#3.內部函數(shù)必須要使用到外部函數(shù)的變量閉包案例-求多個數(shù)的平均值defmake_average(): nums=[] defaverage(n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論