python 自定義函式的精髓 return

2021-10-08 12:53:56 字數 1737 閱讀 9068

我一直是不喜歡在不必要的時候自定義函式的:

deff(

):""f(

)165 ns ± 5.78 ns

""10.5 ns ± 1.04 ns

直到遇到了ta

%

%timeit

import random

defchange

(index)

:while index<=maxi:

if(i1:

=list2[index]

)>

(i2:

=list2[index+1]

):list2[index]

,list2[index+1]

=i2,i1

index+=

1else

:return

list1=

[chr

(i)for i in

range

(ord

('a'),

ord(

'z')+1

)]list2=

list

(set

(list1)

)maxi=site=

len(list2)-2

while site>-1

: index=site

change(index)

site-=

1

42.4 µs

這裡用return代替break,有3 µs的穩步提公升,否則,def和常規寫效率差不多。

這個函式是我從巢狀迴圈的常規語句提取出來的,額,再來

%

%timeit

import random

defsort

(site)

:while site>-1

: index=site

while index<=maxi:

if(i1:

=list2[index]

)>

(i2:

=list2[index+1]

):list2[index]

,list2[index+1]

=i2,i1

index+=

1else

:break

site-=

1list1=

[chr

(i)for i in

range

(ord

('a'),

ord(

'z')+1

)]list2=

list

(set

(list1)

)maxi=site=

len(list2)-2

sort(site)

list2

38.9 µs 再次打臉

我錯了,我本想說,如果把迴圈甚至巢狀迴圈寫成乙個def,而用return提到break是件很爽的事情。

但上面修改的完整的排序功能,不能用return替代break了,還是跑了下,哇,效率進一步提公升。

這裡我推測,原因在於def的運算空間,運算進入def後,他就相當於進入乙個小黑我,與外界有關的只有那些變數,只需要專心做好他負責的內容,不用再向前驗證什麼的樣子,所以,piupiu的完成了。

sort(maxi,site,list2)

44.7 µs

於是引數還是傳遞的越少,效率越高些。

R自定義函式

說明 代表注釋,代表執行結果。函式最大的優點是 復用,模組化設計。也就是說如果這一段 塊需要在多處使用,就應將其寫成乙個函式,多次呼叫,有效的規避了 的重複。並且在修改時只需要修改函式即可。在定義函式時,個人建議將一小段 封裝成乙個函式,使得 可讀性更高,並且能夠降低程式的複雜性。函式名 乙個自定義...

R語言 編寫自定義函式

r語言實際上是函式的集合,使用者可以使用base,stats等包中的基本函式,也可以編寫自定義函式完成一定的功能 乙個函式的結構大致如下所示 myfunction function arglist 其中,myfunction為函式名稱,arglist為函式中的引數列表,大括號 內的語句為函式體,函式...

Python自定義函式

可選引數是python的乙個特性,顧名思義就是這個引數是可有可沒有的。如果你學過其他的語言,那麼你會很清楚明白他的不同點的。def fun n,m 1 s 1for i in range 1 n 1 s i return s m m就是可選引數,如果在呼叫他的時候不給m就預設為1 eg1 fun 1...