第017講 函式 Python的樂高積木

2021-10-08 11:36:26 字數 2555 閱讀 9660

dry是程式設計師們公認的指導原則:don』t repeat yourself. 快快武裝你的思維吧,拿起函式,不要再去重複拷貝一段**了!

使用函式:

0) 可以降低**量(呼叫函式只需要一行,而拷貝黏貼需要n倍**)

1) 可以降低維護成本(函式只需修改def部分內容,而拷貝黏貼則需要每一處出現的地方都作修改)

2) 使序更容易閱讀(沒有人會希望看到乙個程式重複一萬行「i love fishc.com」)

可以的,理論上你想要有多少個就可以有多少個,只不過如果函式的引數過多,在呼叫的時候出錯的機率就會大大提高,因而寫這個函式的程式設計師也會被相應的問候祖宗,所以,盡量精簡吧,在python的世界裡,精簡才是王道!

使用「def」關鍵字,要注意函式名後邊要加上小括號「()」,然後小括號後邊是冒號「:」,然後縮排部分均屬於函式體的內容,例如:

def

myfun()

:# 我是函式體

# 我也是函式體

# 我們都屬於函式myfun()

# 噢,我不屬於myfun()函式的了

def

myfun

((x, y)

,(a, b)):

return x * y - a * b

如果你回答兩個,那麼恭喜你錯啦,答案是0,因為類似於這樣的寫法是錯誤的!我們分析下,函式的引數需要的是變數,而這裡你試圖用「元祖」的形式來傳遞是不可行的。

#這個是正確傳遞元組的方法,x和y都是元組

>>

>

defmyfun

(x, y)

:return x[0]

* x[1]

- y[0]

* y[1]

>>

> myfun((3

,4),

(1,2

))10

>>

>

defhello()

:print

('hello world!'

)return

print

('welcome to fishc.com!'

)#結果為

>>

> hello(

)hello world!

def

power

(x,y)

: ans=

1for i in

range

(y):

ans*=x

return ans

>>

>

deffunc

(a,b)

:if atemp=a

a=bb=temp

while b:

temp=a%b

if b:

a=bb=temp

return a

def

bin(x)

: result=

""while x:

result=

str(x%2)

+result #這裡相當於insert功能

x//=

2return result

請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!

(1)函式的引數

函式的引數可以是0個,1個或多個,定義時在括號內用逗號隔開,可以對某些引數進行初始值定義,定義了初始值的引數必須放在括號裡的前面的位置,也就是說,沒有定義初始值的引數要放在定義了初始值的引數的後面。

在程式設計**現 non-default parameter follows default parameter

這種錯誤原因是將沒有預設值的引數在定義時放在了有預設值的引數的後面,如下所示:

def

test

(self,a=

1,b)

: self.a=a

self.b=b

>>syntaxerror: non-default argument follows default argument

def

test

(self,b,a=1)

: self.a=a

self.b=b

#正確定義

>>process finished with exit code 0

原因:如果使用第一種形式,在呼叫test(self,2)時,實參2是給形參的a還是b呢?此時就產生了歧義,如果有預設引數的形參在末尾則不會有上述問題

(2)return

函式的返回值,也相當於函式的終點

第10講 python 函式基礎

函式也是乙個物件,物件是記憶體中專門用來儲存資料的一塊區域 函式就是用來儲存一些可以執行的 並且可以在需要的時候,對這些 進行多次呼叫 定義函式的語法 def 函式名 形參1,形參2 塊定義乙個函式 def fn print 這是我第乙個函式 print fn 這是函式儲存的記憶體位址 函式和變數沒...

python學習之 017函式概述

練習 認識函式 在乙個完整的專案中,有些功能會反覆使用,那麼會將這個功能封裝成函式,當我們想使用功能的時候,直接呼叫函式即可 本質 函式就是對功能的封裝 優點 1.簡化 結構,增加 的重用度 2.如果想修改某些功能或者除錯某個bug,還需修改對應的函式即可 定義函式 格式 def 函式名 引數列表 ...

python的多執行緒 第24講

author michal date 2019 9 10 from multiprocessing import process import os def obj i print 1111子程序 os.getpid print 會有多個程序執行我 i,os.name if name main li...