FishC笔记—18 讲 函数:灵活即强大
本期內(nèi)容詳解:
1、分清楚形參和實參
2、函數(shù)文檔:是函數(shù)的一部分,于解釋不同,使用help(函數(shù)名)或者 函數(shù)名__doc__可以查看到
3、關(guān)鍵字參數(shù)(在一個函數(shù)的參數(shù)較多的時候作用比較明顯):
給參數(shù)的名字下定義,例如:
def F(name,words)
如下兩種引用的方法是等價的
F(A,B) = F(words=B,name=A)
4、默認參數(shù):函數(shù)定義時為形參賦初值,函數(shù)調(diào)用時若沒有傳遞參數(shù),則自動使用初值
def F(name=C,words=D)
5、收集參數(shù):
def test(*params)
test(1,’小甲魚’,3.14,7,8,9)
典型課后題
請問以下哪個是形參哪個是實參?
答:x是形參,y是實參。跟絕大部分編程語言一樣,形參指的是函數(shù)創(chuàng)建和定義過程中小括號里的參數(shù),而實參指的是函數(shù)在調(diào)用過程中傳遞進去的參數(shù)。
函數(shù)文檔和直接用“#”為函數(shù)寫注釋有什么不同?
給函數(shù)寫文檔是為了讓別人可以更好的理解你的函數(shù),所以這是一個好習慣:
def MyFirstFunction(name): '函數(shù)文檔在函數(shù)定義的最開頭部分,用不記名字符串表示' print('I love FishC.com!')我們看到在函數(shù)開頭寫下的字符串Ta是不會打印出來的,但Ta會作為函數(shù)的一部分存儲起來,這個我們稱之為函數(shù)文檔字符串,Ta的功能跟注釋是一樣的。
函數(shù)的文檔字符串可以按如下方式訪問:
另外,我們用help()來訪問這個函數(shù)也可以看到這個文檔字符串:
>>> help(MyFirstFunction) Help on function MyFirstFunction in module __main__: MyFirstFunction(name) 函數(shù)文檔在函數(shù)定義的最開頭部分,用不記名字符串表示使用關(guān)鍵字參數(shù),可以有效避免什么問題的出現(xiàn)呢?
答:關(guān)鍵字參數(shù),是指函數(shù)在調(diào)用的時候,帶上參數(shù)的名字去指定具體調(diào)用的是哪個參數(shù),從而可以不用按照參數(shù)的順序調(diào)用函數(shù),例如:
使用help(print)查看print()這個BIF有哪些默認參數(shù)?分別起到什么作用?
>>> help(print) Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. # 文件類型對象,默認是sys.stdout(標準輸出流) sep: string inserted between values, default a space. # 第一個參數(shù)如果有多個值(第一個參數(shù)是收集參數(shù)),各個值之間默認用空格(space)隔開 end: string appended after the last value, default a newline. # 打印最后一個值之后默認參數(shù)一個新行標識符(‘\n’) flush: whether to forcibly flush the stream. # 是否強制刷新流默認參數(shù)和關(guān)鍵字參數(shù)表面最大的區(qū)別是什么?
答:默認參數(shù)是賦予形式參數(shù)默認值,關(guān)鍵字參數(shù)是使得實際參數(shù)與形參相對應而避免順序錯誤引發(fā)的系統(tǒng)報錯。
關(guān)鍵字參數(shù)是在函數(shù)調(diào)用的時候,通過參數(shù)名制定需要賦值的參數(shù),這樣做就不怕因為搞不清參數(shù)的順序而導致函數(shù)調(diào)用出錯。而默認參數(shù)是在參數(shù)定義的過程中,為形參賦初值,當函數(shù)調(diào)用的時候,不傳遞實參,則默認使用形參的初始值代替。
編寫一個符合以下要求的函數(shù):
a) 計算打印所有參數(shù)的和乘以基數(shù)(base=3)的結(jié)果
b) 如果參數(shù)中最后一個參數(shù)為(base=5),則設(shè)定基數(shù)為5,基數(shù)不參與求和計算。
尋找水仙花數(shù)
題目要求:如果一個3位數(shù)等于其各位數(shù)字的立方和,則稱這個數(shù)為水仙花數(shù)。例如153 = 1^3+5^3+3^3,因此153是一個水仙花數(shù)。編寫一個程序,找出所有的水仙花數(shù)。
編寫一個函數(shù)findstr(),該函數(shù)統(tǒng)計一個長度為2的子字符串在另一個字符串中出現(xiàn)的次數(shù)。例如:假定輸入的字符串為”You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,子字符串為”im”,函數(shù)執(zhí)行后打印“子字母串在目標字符串中共出現(xiàn)3次”。
程序執(zhí)行效果:
參考答案:
def findStr(desStr, subStr): count = 0 length = len(desStr) if subStr not in desStr: print('在目標字符串中未找到字符串!') else: for each1 in range(length): if desStr[each1] == subStr[0]: if desStr[each1+1] == subStr[1]: count += 1 print('子字符串在目標字符串中共出現(xiàn) %d 次' % count) desStr = input('請輸入目標字符串:') subStr = input('請輸入子字符串(兩個字符):') findStr(desStr, subStr)總結(jié)
以上是生活随笔為你收集整理的FishC笔记—18 讲 函数:灵活即强大的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【MySQL 】学习笔记千行总结
- 下一篇: java tomcat 内存溢出怎么解决