最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Python變量與常量

 更新時(shí)間:2016年06月02日 16:47:35   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇深入理解Python變量與常量。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

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

變量賦值

Python中的變量不需要聲明,變量的賦值操作即是變量的聲明和定義的過(guò)程。每個(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è)新的變量,而且變量類(lèi)型也由于所賦值的數(shù)據(jù)類(lèi)型改變而改變。

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

如果變量沒(méi)有賦值,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()訪問(wèn),文件1中定義的fun2()不能訪問(wèn),也不能被文件2訪問(wèn)。

#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能夠訪問(wèn)。

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

#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中訪問(wèn)全局變量。

#fileName:file2
import file1
file1.add_num() #g_num1被改變
test = file1.g_num1 + 1
print("test :%d"%test)

應(yīng)該盡量避免使用全局變量。不同的模塊可以自由的訪問(wèn)全局變量,可能會(huì)導(dǎo)致全局變量的不可預(yù)知性。

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

常量

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

Python中并沒(méi)有提供定義常量的保留字。Python是一門(mén)功能強(qiáng)大的語(yǔ)言,可以自己定義一個(gè)常量類(lèi)來(lái)實(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變量與常量就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python讀取和寫(xiě)入txt、Excel文件和JSON文件的方法

    Python讀取和寫(xiě)入txt、Excel文件和JSON文件的方法

    Python 提供了多種方法來(lái)讀取和寫(xiě)入不同類(lèi)型的文件,包括文本文件(txt)、Excel 文件和 JSON 文件,本文給大家介紹了一些常用的方法和示例代碼,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • PyQt5每天必學(xué)之切換按鈕

    PyQt5每天必學(xué)之切換按鈕

    這篇文章主要為大家詳細(xì)介紹了PyQt5每天必學(xué)之切換按鈕的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python 實(shí)現(xiàn)UTC時(shí)間加減的方法

    python 實(shí)現(xiàn)UTC時(shí)間加減的方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)UTC時(shí)間加減的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python PyQt5中單行文本輸入控件QLineEdit用法詳解

    python PyQt5中單行文本輸入控件QLineEdit用法詳解

    在PyQt5的GUI編程中,QLineEdit控件是一個(gè)用于輸入和編輯單行文本的部件,它提供了豐富的功能和靈活性,可以輕松地實(shí)現(xiàn)用戶輸入的捕獲、驗(yàn)證和格式化等功能,本文將通過(guò)實(shí)際案例詳細(xì)介紹QLineEdit控件的常用方法,需要的朋友可以參考下
    2024-08-08
  • Django進(jìn)階深入理解使用類(lèi)視圖和中間件示例

    Django進(jìn)階深入理解使用類(lèi)視圖和中間件示例

    這篇文章主要為大家介紹了Django高級(jí)指南之深入理解和使用類(lèi)視圖和中間件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Python虛擬環(huán)境與依賴管理使用方法全指南

    Python虛擬環(huán)境與依賴管理使用方法全指南

    這篇文章主要介紹了如何使用虛擬環(huán)境和pip來(lái)管理Python項(xiàng)目的依賴和包版本,虛擬環(huán)境可以幫助隔離不同項(xiàng)目的依賴,避免版本沖突,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • python連接mysql數(shù)據(jù)庫(kù)示例(做增刪改操作)

    python連接mysql數(shù)據(jù)庫(kù)示例(做增刪改操作)

    python連接mysql數(shù)據(jù)庫(kù)示例,提供創(chuàng)建表,刪除表,數(shù)據(jù)增、刪、改,批量插入操作,大家參考使用吧
    2013-12-12
  • 通過(guò)Python收集匯聚MySQL 表信息的實(shí)例詳解

    通過(guò)Python收集匯聚MySQL 表信息的實(shí)例詳解

    這篇文章主要介紹了通過(guò)Python收集匯聚MySQL 表信息的實(shí)例代碼,核心代碼是創(chuàng)建保存數(shù)據(jù)的腳本,收集的功能腳本,代碼簡(jiǎn)單明了,需要的朋友可以參考下
    2021-10-10
  • python?ES連接服務(wù)器的方法詳解

    python?ES連接服務(wù)器的方法詳解

    使用Python連接Elasticsearch服務(wù)器進(jìn)行數(shù)據(jù)搜索和分析是一項(xiàng)常見(jiàn)操作,本文詳細(xì)介紹了如何使用elasticsearch-py客戶端庫(kù)連接到Elasticsearch服務(wù)器,并執(zhí)行創(chuàng)建索引、添加文檔及搜索等基本操作
    2024-10-10
  • 利用Python進(jìn)行微服務(wù)架構(gòu)的監(jiān)控與日志分析

    利用Python進(jìn)行微服務(wù)架構(gòu)的監(jiān)控與日志分析

    Python作為一種強(qiáng)大的編程語(yǔ)言,提供了豐富的工具和庫(kù),可以幫助我們實(shí)現(xiàn)對(duì)微服務(wù)架構(gòu)的監(jiān)控和日志分析,本文將介紹如何利用Python編寫(xiě)監(jiān)控腳本和日志分析程序,以便于更好地管理和維護(hù)微服務(wù)系統(tǒng)
    2024-03-03

最新評(píng)論

山西省| 延安市| 台湾省| 睢宁县| 阳春市| 墨江| 青冈县| 大方县| 清涧县| 新平| 福海县| 陕西省| 离岛区| 台湾省| 新邵县| 桐乡市| 鹿泉市| 西安市| 固镇县| 滦平县| 嘉峪关市| 工布江达县| 四会市| 蒲城县| 宝应县| 察哈| 中山市| 措勤县| 肥乡县| 甘肃省| 浦东新区| 伊宁市| 泰顺县| 黑水县| 明水县| 顺昌县| 江安县| 左云县| 苏尼特左旗| 扶余县| 明溪县|