日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中的常量可以修改吗_深入理解Python变量与常量

發布時間:2025/3/8 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中的常量可以修改吗_深入理解Python变量与常量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

變量是計算機內存中的一塊區域,變量可以存儲規定范圍內的值,而且值可以改變。基于變量的數據類型,解釋器會分配指定內存,并決定什么數據可以被存儲在內存中。常量是一塊只讀的內存區域,常量一旦被初始化就不能被改變。

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

變量賦值

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

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

########################

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變量與常量就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的python中的常量可以修改吗_深入理解Python变量与常量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。