FishC筆記 18 講 函式 靈活即強大

2021-07-28 14:11:55 字數 4425 閱讀 9388

本期內容詳解:

1、分清楚形參和實參

2、函式文件:是函式的一部分,於解釋不同,使用help(函式名)或者 函式名__doc__可以檢視到

3、關鍵字引數(在乙個函式的引數較多的時候作用比較明顯):

給引數的名字下定義,例如:

def f(name,words)

如下兩種引用的方法是等價的

f(a,b) = f(words=b,name=a)

4、預設引數:函式定義時為形參賦初值,函式呼叫時若沒有傳遞引數,則自動使用初值

def f(name=c,words=d)

5、收集引數:

def test(*params)

test(1,』小甲魚』,3.14,7,8,9)

典型課後題

請問以下哪個是形參哪個是實參?

def

myfun

(x):

return x ** 3

y = 3

print(myfun(y))

答:x是形參,y是實參。跟絕大部分程式語言一樣,形参指的是函式建立和定義過程中小括號裡的引數,而實參指的是函式在呼叫過程中傳遞進去的引數。

函式文件和直接用「#」為函式寫注釋有什麼不同?

給函式寫文件是為了讓別人可以更好的理解你的函式,所以這是乙個好習慣:

def

myfirstfunction

(name):

'函式文件在函式定義的最開頭部分,用不記名字串表示'

print('i love fishc.com!')

我們看到在函式開頭寫下的字串ta是不會列印出來的,但ta會作為函式的一部分儲存起來,這個我們稱之為函式文件字串,ta的功能跟注釋是一樣的。

函式的文件字串可以按如下方式訪問:

>>> myfirstfunction.__doc__  

'函式文件在函式定義的最開頭部分,用不記名字串表示'

另外,我們用help()來訪問這個函式也可以看到這個文件字串:

>>> help(myfirstfunction)  

help on function myfirstfunction in module __main__:

myfirstfunction(name)

函式文件在函式定義的最開頭部分,用不記名字串表示

使用關鍵字引數,可以有效避免什麼問題的出現呢?

答:關鍵字引數,是指函式在呼叫的時候,帶上引數的名字去指定具體呼叫的是哪個引數,從而可以不用按照引數的順序呼叫函式,例如:

>>> def

saysome

(name, words):

print(name + '->' + words)

>>> saysome(words='讓程式設計改變世界!', name='小甲魚')

使用help(print)檢視print()這個bif有哪些預設引數?分別起到什麼作用?

>>> 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.

# 第乙個引數如果有多個值(第乙個引數是收集引數),各個值之間預設用空格(space)隔開

# 列印最後乙個值之後預設引數乙個新行識別符號(『\n』)

flush: whether to forcibly flush the stream.

# 是否強制重新整理流

預設引數和關鍵字引數表面最大的區別是什麼?

答:預設引數是賦予形式引數預設值,關鍵字引數是使得實際引數與形參相對應而避免順序錯誤引發的系統報錯。

關鍵字引數是在函式呼叫的時候,通過引數名制定需要賦值的引數,這樣做就不怕因為搞不清引數的順序而導致函式呼叫出錯。而預設引數是在引數定義的過程中,為形參賦初值,當函式呼叫的時候,不傳遞實參,則預設使用形參的初始值代替。

編寫乙個符合以下要求的函式:

a) 計算列印所有引數的和乘以基數(base=3)的結果

b) 如果引數中最後乙個引數為(base=5),則設定基數為5,基數不參與求和計算。

def

sum(*params,base=3):

result = 0

for i in params:

result += i

return result*base

尋找水仙花數

題目要求:如果乙個3位數等於其各位數字的立方和,則稱這個數為水仙花數。例如153 = 1^3+5^3+3^3,因此153是乙個水仙花數。編寫乙個程式,找出所有的水仙花數。

def

daffodils

():

print('所有的水仙花數為:',end='')

temp = 100

while temp < 1000:

if temp == (temp//100)**3 + ((temp%100)//10)**3 + (temp%10)**3:

print(temp,end=' ')

temp += 1

else:

temp += 1

編寫乙個函式findstr(),該函式統計乙個長度為2的子字串在另乙個字串中出現的次數。例如:假定輸入的字串為」you cannot improve your past, but you can improve your future. once time is wasted, life is wasted.」,子字串為」im」,函式執行後列印「子字母串在目標字串中共出現3次」。

程式執行效果:

print('請輸入目標字串:',end='')

temp = input()

print('請輸入子字串(兩個字元):',end='')

comp = input()

count = 0

i = 0

for i in range(len(temp)):

if temp[i] == comp[0] and temp[i+1] == comp[1]:

count += 1

i += 1

else:

i += 1

count = int(count)

print('子字串在目標字串中總共出現 %d 次'%count)

findstr()

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('子字串在目標字串中共出現 %d 次' % count)

desstr = input('請輸入目標字串:')

substr = input('請輸入子字串(兩個字元):')

findstr(desstr, substr)

課時18 函式 靈活即強大

目錄 一 形參和實參 二 函式文件 三 關鍵字引數 四 預設引數 五 收集引數 六 課後題 函式從呼叫的角度來說,分為形式引數和實際引數。形參是指函式建立和定義過程中小括號裡的引數 而實參指的是函式在被呼叫過程中傳遞進來的引數 def myfirstfunction name 函式定義過程中的nam...

python 18 靈活即強大

myfirstfunction 孟華 傳遞進來的孟華叫做實參,因為它是具體的引數值!doc saysome 小甲魚 讓變成改變世界 小甲魚 讓變成改變世界 saysome 讓程式設計改變世界!小甲魚 讓程式設計改變世界!小甲魚 saysome words 讓程式設計改變世界!name 小甲魚 小甲魚...

FishC筆記 16 講 序列,序列

本期內容詳解 列表 元組和字串的共同點 一些重要的bif 1 list 把乙個可迭代的物件轉換為列表 2 tuple iterable 把乙個可迭代的物件轉化為元組 3 str obj 把obj物件轉化為字串 4 max min 返回序列或者引數集合中的最大或最小值 5 sum iterable s...