亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

深入理解Python變量與常量

系統 1885 0

變量是計算機內存中的一塊區域,變量可以存儲規定范圍內的值,而且值可以改變?;谧兞康臄祿愋?,解釋器會分配指定內存,并決定什么數據可以被存儲在內存中。常量是一塊只讀的內存區域,常量一旦被初始化就不能被改變。

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

變量賦值

Python中的變量不需要聲明,變量的賦值操作即是變量的聲明和定義的過程。每個變量在內存中創建都包括變量的標識、名稱、和數據這些信息。

深入理解Python變量與常量_第1張圖片

? Python中一次新的賦值,將創建一個新的變量。即使變量的名稱相同,變量的標識并不同。

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

繼續賦值

            
x = 'hello python'
print(id(x))
print(x)
          

?此時x又將成為一個新的變量,而且變量類型也由于所賦值的數據類型改變而改變。

此處,id()為Python的內置函數。參見:https://docs.python.org/3/library/functions.html#id

如果變量沒有賦值,Python將認為該變量不存在。

Python支持多個變量同時賦值。

例如:

            
a = (1,2,3) #定義一個序列
x,y,z = a  #把序列的值分別賦x、y、z
print("a : %d, b: %d, z:%d"%(x,y,z)) #打印結果
          
            
a, b, c = 1, 2, "john"
          

變量作用域

局部變量是只能在函數或者代碼塊內使用的變量,函數或者代碼塊一旦結束,局部變量的生命周期也將結束。局部變量的作用范圍只有在局部變量被創建的函數內有效。

例如:在文件1中的fun()中定義了一個局部變量,則該局部變量只能被fun()訪問,文件1中定義的fun2()不能訪問,也不能被文件2訪問。

            
#fileName:file1
def fun():
  local_var = 100 #定義一個局部變量
  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 
            
              
#  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 
              
                
#  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)
########################
#運行結果
#100
#Traceback (most recent call last):
# File "E:\python\file2.py", line 4, in 
            
              
#  print(local_var)
#NameError: name 'local_var' is not defined
########################
            
          

深入理解Python變量與常量_第2張圖片

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

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

            
#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在執行add_num()函數時被改變
#g_num2:5 全局變量g_num2在執行sub_num()函數時被改變
          

global保留字用于引用全局變量,如果不適用global關鍵字,在函數中再為g_num1賦值時將被解釋為定義了一個局部變量g_num1。

            
#添加到sub_num()函數定義之后,add_num()函數調用之前
def other(): 
  result = g_num1 + 2 #直接適用全局變量不改變全局變量的值OK
  print("result : %d"%result)
other()

#######################
#result : 3
#result : 4
#result : 2
#g_num1:3 
#g_num2:5 
#######################
          
            
#添加到sub_num()函數定義之后,add_num()函數調用之前
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)
          

應該盡量避免使用全局變量。不同的模塊可以自由的訪問全局變量,可能會導致全局變量的不可預知性。

全局變量降低了函數或者模塊之間的通用性,不同的函數或模塊都要依賴于全局變量。同樣,全局變量降低了代碼的可讀性,閱讀者可能不知道調用的某個變量是全局變量。

常量

常量是一旦初始化之后就不能修改的固定值。例如:數字"5",字符串"abc"都是常量。

Python中并沒有提供定義常量的保留字。Python是一門功能強大的語言,可以自己定義一個常量類來實現常量的功能。

            
#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 
            
              
#  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這個變量已經被賦值"zhangsan"不能繼續被賦值,所以拋出異常。raise保留字用于拋出異常。

以上這篇深入理解Python變量與常量就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩国产欧美视频 | 亚洲精品不卡午夜精品 | 有色视频在线观看免费高清 | 韩国色三级伦不卡高清在线观看 | 天天干天天插天天 | 欧美中文字幕一区 | 国内精品福利 | 欧美黑人巨大肥婆性视频 | 99热热久久 | 手机看片日韩国产一区二区 | 日韩伦理一区 | 五月婷婷欧美 | 黄色综合网站 | 久久久精品中文字幕 | 久久国产精品99久久久久久老狼 | 国产精品久久久久久久久久影院 | 亚洲午夜一区二区三区 | 伊人.com| 国产尤物福利视频在线观看 | 一区二区三区日韩 | 亚洲激情在线观看 | 337p欧洲亚洲大胆艺术 | 国产亚洲精品一区二区在线播放 | 久久久国产高清 | 日韩经典一区 | 操美女免费看 | 日韩欧美视频在线一区二区 | 91视频国产91久久久 | 国产在线观看91精品不卡 | 91久久| 精品无人乱码一区二区三区 | 2021国产精品系列一区二区 | 婷婷色综合 | 色播久久 | 免费国产成人综合 | 欧美xxxb| 亚洲精品不卡久久久久久 | 欧美成人在线观看 | 久久精品国产亚洲片 | 九九九热在线精品免费全部 | 欧美日韩专区 |