python函式呼叫的四種方式 基礎重點

2022-02-08 22:05:26 字數 3091 閱讀 3877

第一種:引數按順序從第乙個引數往後排#標準呼叫

#

-*- coding: utf-8 -*-

defnormal_invoke(x, y):

print

"--normal_invoke:--

"print

"x is %d

" %x

print

"y is %d

" %y

#標準呼叫  

normal_invoke(1, 2)

執行結果:

--normal_invoke:--x 

is 1y

is 2

第二種:#關鍵字呼叫  

def

keyword_invoke(x, y):

print

"--keyword_invoke--:

"print

"x is %d

" %x

print

"y is %d

" % y

#關鍵字呼叫  

keyword_invoke(y=1, x=2)

注意:關鍵呼叫從哪開始的,從哪以後都必須使用關鍵字呼叫除了『*』收集引數。不能寫成這樣的:keyword_invoke(y=1, 2),這樣就會報錯。

執行結果:

--keyword_invoke--:  

x is 2y

is 1

第三種:#非關鍵字可變長引數(tuple) 

def normal_tuple_invoke(x, y=2, *values):  

print

"--normal_tuple_invoke--

"print

"x is %d

" %x

print

"y is %d

" %y

for value in

values:

print

"tuple's value has

", value

#非關鍵字可變長引數(tuple)

normal_tuple_invoke(1, 3, 'xyz', 123.4) 

注意:收集引數  『*』當你引數不確定有多少是你可是使用它,他會把不確定的部分存在values元組中,當然這個元組名字要看『*』後面跟的是啥了。

執行結果:

--normal_tuple_invoke--x 

is 1y

is 3tuple

's value has xyz

tuple'

s value has 123.4

第四種:#關鍵字可變長引數(dict) 

def keyword_dict_invoke(x, y=2, **value_dict):  

print

"--keyword_dict_invoke--

"print

"x is %d

" %x

print

"y is %d

" %y

for key in

value_dict:

print

"key is

", key

print

"value is

", value_dict[key]

#關鍵字可變長引數(dict)  

keyword_dict_invoke(y=1, x=2, arg2='def', arg1='put at the last') 

注意:**value_dict 傳回來的引數以字典:key-value的形式存放,單招順序首先傳回來的是:key,其次是:value。

執行結果:

--keyword_dict_invoke--x 

is 2y

is 1key

isarg1

value

isput at the last

key

isarg2

value

isdef

process finished with exit code 0

第五中:還有一種是以整個函式為引數傳回來,目前我知道是裝飾器在使用

裝飾器實際上就是為了給某程式增添功能,但該程式已經上線或已經被使用,那麼就不能大批量的修改源**,這樣是不科學的也是不現實的,因為就產生了裝飾器,使得其滿足:

不能修改被裝飾的函式的源**

不能修改被裝飾的函式的呼叫方式

滿足1、2的情況下給程式增添功能

那麼根據需求,同時滿足了這三點原則,這才是我們的目的。因為,下面我們從解決這三點原則入手來理解裝飾器。

等等,我要在需求之前先說裝飾器的原則組成:

這個式子是貫穿裝飾器的靈魂所在!

improt time

deftest():

time.sleep(2)

print("

test is running!")

defdeco(func):

start =time.time()

func() #2

stop =time.time()

print(stop-start)

deco(test) #1

我們來看一下這段**,在#1處,我們把test當作實參傳遞給形參func,即func=test。注意,這裡傳遞的是位址,也就是此時func也指向了之前test所定義的那個函式體,可以說在deco()內部,func就是test。在#2處,把函式名後面加上括號,就是對函式的呼叫(執行它)。因此,這段**執行結果是:

test is

running!

the run time

is 3.0009405612945557

關於裝飾器我在另一篇文章中有詳細解釋!

---每天進步一點點!!!

函式的四種呼叫方式

函式作為物件的屬性時,稱為方法。此時函式 即方法 中的this對應是該物件。var myobject 方法呼叫模式,this對應的是myobject物件 myobject.func 3 也可以寫成如下格式 var myobject myobject.func function 方法呼叫模式 myob...

js種函式呼叫的四種方式

函式呼叫 this指向 window 返回值 由return值決定,如果沒有return語句就表示沒有返回值 案例1 function f1 f1 window 案例2 function f2 var f2n f2 f2n this window 這也是一次函式呼叫模式 案例3 functioon ...

python 呼叫js的四種方式

日常 web 端爬蟲過程中,經常會遇到引數被加密的場景,因此,我們需要分析網頁源 通過調式,一層層剝離出關鍵的 js 使用 python 去執行這段 得出引數加密前後的 python 實現 本文將聊聊利用 python 呼叫 js 的4種方式 以一段簡單的 js 指令碼為例,將 寫入到檔案中 計算w...