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

熱線電話:13121318867

登錄
首頁精彩閱讀深入理解Python變量與常量
深入理解Python變量與常量
2018-08-25
收藏

深入理解Python變量與常量

變量是計(jì)算機(jī)內(nèi)存中的一塊區(qū)域,變量可以存儲(chǔ)規(guī)定范圍內(nèi)的值,而且值可以改變。基于變量的數(shù)據(jù)類型,解釋器會(huì)分配指定內(nèi)存,并決定什么數(shù)據(jù)可以被存儲(chǔ)在內(nèi)存中。常量是一塊只讀的內(nèi)存區(qū)域,常量一旦被初始化就不能被改變。

變量命名字母、數(shù)字、下劃線組成,不能以數(shù)字開頭,前文有說不在贅述。

變量賦值

Python中的變量不需要聲明,變量的賦值操作即是變量的聲明和定義的過程。每個(gè)變量在內(nèi)存中創(chuàng)建都包括變量的標(biāo)識(shí)、名稱、和數(shù)據(jù)這些信息。

Python中一次新的賦值,將創(chuàng)建一個(gè)新的變量。即使變量的名稱相同,變量的標(biāo)識(shí)并不同。


x = 1 #變量賦值定義一個(gè)變量x
print(id(x)) #打印變量x的標(biāo)識(shí)
print(x+5) #使用變量
print("=========華麗的分割線=========")
x = 2 #量賦值定義一個(gè)變量x
print(id(x)) #此時(shí)的變量x已經(jīng)是一個(gè)新的變量
print(x+5) #名稱相同,但是使用的是新的變量x

繼續(xù)賦值    
x = 'hello python'
print(id(x))
print(x)
 此時(shí)x又將成為一個(gè)新的變量,而且變量類型也由于所賦值的數(shù)據(jù)類型改變而改變。
此處,id()為Python的內(nèi)置函數(shù)。
如果變量沒有賦值,Python將認(rèn)為該變量不存在。

Python支持多個(gè)變量同時(shí)賦值。

例如:

a = (1,2,3) #定義一個(gè)序列
x,y,z = a  #把序列的值分別賦x、y、z
print("a : %d, b: %d, z:%d"%(x,y,z)) #打印結(jié)果    
a, b, c = 1, 2, "john"
變量作用域
局部變量是只能在函數(shù)或者代碼塊內(nèi)使用的變量,函數(shù)或者代碼塊一旦結(jié)束,局部變量的生命周期也將結(jié)束。局部變量的作用范圍只有在局部變量被創(chuàng)建的函數(shù)內(nèi)有效。
例如:在文件1中的fun()中定義了一個(gè)局部變量,則該局部變量只能被fun()訪問,文件1中定義的fun2()不能訪問,也不能被文件2訪問。    
#fileName:file1
def fun():
  local_var = 100 #定義一個(gè)局部變量
  print(local_var)
def fun2():
  zero = local_var - 100 #fun2中使用局部變量(不可以)
  print("get zero : %d"%zero)
fun()
#fun2()
print("local_var -1 = %d"%(local_var - 1)) #文件1中使用局部變量(不可以)
################################
#Traceback (most recent call last):
# File "E:/python/file1.py", line 10, in <module>
#  print("local_var -1 = %d"%(local_var - 1))
#NameError: name 'local_var' is not defined
################################
#Traceback (most recent call last):
# File "E:/python/file1.py", line 9, in <module>
#  fun2()
# File "E:/lichenli/python/file1.py", line 6, in fun2
#  zero = local_var - 100
#NameError: name 'local_var' is not defined
################################
    
#fileName:file2
import file1
file1.fun()
print(local_var)
########################
#運(yùn)行結(jié)果
#100
#Traceback (most recent call last):
# File "E:\python\file2.py", line 4, in <module>
#  print(local_var)
#NameError: name 'local_var' is not defined
########################

fun()中定義的局部變量就只有fun能夠訪問。

全局變量是能夠被不同函數(shù)、類或文件共享的變量,在函數(shù)之外定義的變量都叫做全局變量。全局變量可以被文件內(nèi)任何函數(shù)和外部文件訪問

#fileName:file1
g_num1 = 1 #定義全局變量
g_num2 = 2 #定義全局變量
def add_num():
  global g_num1 #引用全局變量
  g_num1 = 3 #修改全局變量的值
  result = g_num1 + 1
  print("result : %d"%result)
def sub_num():
  global g_num2
  g_num2 = 5
  result = g_num2 - 3
  print("result : %d"%result)
add_num()
sub_num()
print("g_num1:%d "%g_num1)
print("g_num2:%d "%g_num2)
#result : 4 result為局部變量
#result : 2
#g_num1:3 全局變量g_num1在執(zhí)行add_num()函數(shù)時(shí)被改變
#g_num2:5 全局變量g_num2在執(zhí)行sub_num()函數(shù)時(shí)被改變

global保留字用于引用全局變量,如果不適用global關(guān)鍵字,在函數(shù)中再為g_num1賦值時(shí)將被解釋為定義了一個(gè)局部變量g_num1。    
#添加到sub_num()函數(shù)定義之后,add_num()函數(shù)調(diào)用之前
def other():
  result = g_num1 + 2 #直接適用全局變量不改變?nèi)肿兞康闹礝K
  print("result : %d"%result)
other()
 
#######################
#result : 3
#result : 4
#result : 2
#g_num1:3
#g_num2:5
#######################
    
#添加到sub_num()函數(shù)定義之后,add_num()函數(shù)調(diào)用之前
def other():
  g_num1 = 10
  result = g_num1 + 2
  print("result : %d"%result)
other()
####################
#result : 12
#result : 4
#result : 2
#g_num1:3
#g_num2:5
####################

在文件2中訪問全局變量。    
#fileName:file2
import file1
file1.add_num() #g_num1被改變
test = file1.g_num1 + 1
print("test :%d"%test)

應(yīng)該盡量避免使用全局變量。不同的模塊可以自由的訪問全局變量,可能會(huì)導(dǎo)致全局變量的不可預(yù)知性。
全局變量降低了函數(shù)或者模塊之間的通用性,不同的函數(shù)或模塊都要依賴于全局變量。同樣,全局變量降低了代碼的可讀性,閱讀者可能不知道調(diào)用的某個(gè)變量是全局變量。
常量
常量是一旦初始化之后就不能修改的固定值。例如:數(shù)字"5",字符串"abc"都是常量。
Python中并沒有提供定義常量的保留字。Python是一門功能強(qiáng)大的語言,可以自己定義一個(gè)常量類來實(shí)現(xiàn)常量的功能。    
#fileName:const.py
class _const:
  class ConstError(TypeError):pass
  def __setattr__(self,name,value):
    #if self.__dict__.has_key(name): 3.x之后has_key被廢棄
    if name in self.__dict__:
      raise self.ConstError("Can't rebind const(%s)"%name)
    self.__dict__[name] = value
import sys
sys.modules[__name__] = _const()    
#fileName:const_2.py
import const
const.name='zhangsan'
const.name='lisi'
 
##################################
#Traceback (most recent call last):
# File "E:/python/const_2.py", line 4, in <module>
#  const.name='lisi'
# File "E:/python\const.py", line 7, in __setattr__
#  raise self.ConstError("Can't rebind const(%s)"%name)
#const._const.ConstError: Can't rebind const(name)
##################################
name這個(gè)變量已經(jīng)被賦值"zhangsan"不能繼續(xù)被賦值,所以拋出異常。raise保留字用于拋出異常。
以上這篇深入理解Python變量與常量就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考

數(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)檢測(cè)極驗(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); }