99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀python中將函數(shù)賦值給變量時(shí)需要注意的一些問題
python中將函數(shù)賦值給變量時(shí)需要注意的一些問題
2017-09-11
收藏

python中將函數(shù)賦值給變量時(shí)需要注意的一些問題

變量賦值是我們在日常開發(fā)中經(jīng)常會(huì)遇到的一個(gè)問題,本文主要給大家介紹的是關(guān)于python將函數(shù)賦值給變量時(shí)需要注意的一些問題,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

見過兩種函數(shù)賦值給變量的形式,一種是

a=f

另一種是    
a=f()

這兩種形式是有區(qū)別的,分別總結(jié)一下。

1.a=f型屬于將變量指向函數(shù)。

用代碼驗(yàn)證一下:    
>>> f = abs
>>> f(-10)
10

說明變量f現(xiàn)在已經(jīng)指向了abs函數(shù)本身。直接調(diào)用abs()函數(shù)和調(diào)用變量f()完全相同。這是廖雪峰老師python教程上的例子,現(xiàn)在調(diào)用f()和調(diào)用abs()是一樣的了。

再舉一個(gè)工廠函數(shù)的例子:    
def maker(N):
 
  def action(X):
 
    return X**N
 
  return action

這個(gè)嵌套函數(shù)的外層返回值為內(nèi)層函數(shù)的函數(shù)名,注意沒有括號(hào),這里有無括號(hào)是有很大區(qū)別的。此時(shí)調(diào)用外部函數(shù):    
f=maker(2)

那么如上所述,f便指向了action函數(shù),且限制條件為N=2,可以理解為f為N等于2時(shí)的action函數(shù)。我們來調(diào)用它:    
>>> f(3)
9

證明f和action函數(shù)是一樣的。

2.a=f()型屬于將f()的返回值賦值給a的過程

這里的a僅僅接收f()的返回值,如果f()沒有返回值,那么a即被賦值為None。這里值得注意的一點(diǎn)是,在a=f()的執(zhí)行過程中,f()會(huì)運(yùn)行一次,這也是我剛剛搞明白的,如:    
>>> def add(x,y):
    z=x+y
    print(z)
>>>a=add(3,4)
7

這里雖然只有一個(gè)賦值語句執(zhí)行了,但是卻輸出了結(jié)果7,說明賦值過程函數(shù)add執(zhí)行了,然而a的值為None,且只能通過print語句才可以顯示。不只是賦值過程函數(shù)會(huì)執(zhí)行,寫在return語句中也會(huì)如此。    
>>>def log(func):
   def wrapper(*args, **kw):
     print('call %s():' % func.__name__)
     return func(*args, **kw)
   return wrapper
>>>@log
>>>def now():
    print('2015-3-25')

這是廖雪峰老師python教程裝飾器一節(jié)的例程,剛開始我以為return func(*args,**kw)這個(gè)語句是返回了now()函數(shù)(即func函數(shù))的返回值,后來發(fā)現(xiàn)now函數(shù)沒有返回值,即為None,所以其實(shí)是這個(gè)語句在賦值過程,

 func(*args,**kw)執(zhí)行了,即函數(shù)now的print語句執(zhí)行了。

下面的習(xí)題中,一個(gè)變形是要求在函數(shù)調(diào)用的前后打印出'begin call'和'end call',下面一位網(wǎng)友的程序是這么寫的:    
def wrapper(*args,**kw):
   print(t+'begin call')
   result=func(*args,**kw)
   print(t+'end call')
   return result

開始不太理解為什么使用result=func(*args,**kw)這句,后來理解后才明白其實(shí)賦值本身并沒有意義,只是這句話同時(shí)使得func函數(shù)運(yùn)行了,所以寫成    
def wrapper(*args,**kw):
   print(t+'begin call')
   func(*args,**kw)
   print(t+'end call')
結(jié)果也是一樣的。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }