如何檢查Python變數是否存在?
變數被定義為用於儲存某些資料的容器。它們代表一個記憶體位置。Python中的變數可以儲存任何型別的資料或值,包括整數、字串、浮點數、布林值等。
在Python中,定義程式中的變數時,不需要指定其資料型別。但是,在任何函式或應用程式可以使用變數之前,必須先定義它們。這可以透過簡單地將值賦給名稱來完成,如下所示:
x = 5
這裡,“x”是變數的名稱。此外,由於x儲存的是整數值,因此它是一個整型變數。
變數的作用域
變數可能並非在程式中的所有時候都可訪問。變數的宣告決定了這一點。變數作用域決定了在程式中可以在何處訪問識別符號。Python變數存在兩個基本作用域。
區域性變數
全域性變數
區域性變數
在程式碼塊中定義的變數通常只能在該程式碼塊內訪問。在程式碼塊外部無法訪問它們。這類變數稱為區域性變數。區域性變數的行為類似於形式引數識別符號。下面的例子說明了這一點。如果從它們的作用域之外訪問它們,則會觸發NameError異常。
示例
def greet():
name = 'Rahul'
print('Hello ', name)
greet()
print(name)
在上面的示例中,“name”是greet()函式的區域性變數,在函式外部無法訪問它。
輸出
Hello Rahul Traceback (most recent call last): File "main.py", line 5, inprint(name) NameError: name 'name' is not defined
全域性變數
全域性變數是在函式程式碼塊之外存在的變數。任何函式都可以訪問它的值。在定義函式之前,有必要初始化name變數。
name = 'Rahul'
def greet():
print("Hello",name)
greet()
如果我們執行上面的簡單程式,則會產生如下結果。
輸出
Hello Rahul
驗證變數的存在
可以使用異常來檢查變數是否存在,但這並不推薦,因為我們並不總是知道是否定義了變數。在Python中檢查變數是否存在最安全、最優的方法是使用以下方法。
使用**locals()**方法查詢變數在特定程式碼塊中是否存在。
可以使用**globals()**方法確定變數在整個程式中的存在情況。
使用Locals()方法
將使用locals()函式驗證區域性變數的存在。在區域性名稱空間中,**locals()**返回一個字典,其中包含當前活動變數名稱作為鍵。
示例
在下面的示例中,定義了一個函式“local_func”,並建立了一個字串型別的區域性變數“var”。由於locals()方法返回包含當前區域性變數(以鍵的形式)的字典,因此我們可以使用“in”運算子來檢查變數是否存在。為了更準確,我們也可以在區域性名稱空間之外呼叫locals()方法來檢查其是否存在。
def local_func():
var = "Test"
if 'var' in locals():
print ('variable found in local namespace')
else:
print ('variable not found in the local namespace')
local_func()
if 'var' in locals():
print ('variable found in the global namespace')
else:
print ('variable not found in the global namespace')
輸出
variable found in local namespace variable not found in the global namespace
使用Globals()方法
使用globals()方法確定變數在全域性名稱空間中的狀態。此方法返回的字典中,全域性變數名稱表示為字串。
示例
可以使用“in”運算子在字典中檢查變數名字串。如果為真,則存在的變數是全域性名稱空間中存在的變數;否則,它不存在。
var = "Python"
if 'var' in globals():
print ("variable present in global namespace")
else:
print ("variable does not present in global namespace")
輸出
variable present in global namespace
檢查變數是否存在於類中
可以使用**hasattr()**函式檢視變數是否存在於類中。如果物件包含給定名稱的屬性,則此方法的返回值為真;否則為假。
hasattr()方法的語法為:
hasattr(object, name)
示例
在下面的示例中,我們定義了一個包含描述其特徵的屬性的類“fruit”。使用hasattr()方法,我們檢查某些屬性是否存在;如果存在,則顯示它們的值。
class fruit:
color = 'Red'
name = 'Apple'
frt = fruit()
if hasattr(frt, 'name'):
print("Fruit's name:", frt.name)
if hasattr(frt, 'color'):
print("Fruit's color:", frt.color)
輸出
Fruit's name: Apple Fruit's color: Red
示例
讓我們看另一個例子,檢查變數是否存在於Python程式中。
x =10
class foo:
g = 'rt'
def bar(self):
m=6
if 'm' in locals():
print ('m is local variable')
else:
print ('m is not a local variable')
f = foo()
f.bar()
if hasattr(f, 'g'):
print ('g is an attribute')
else:
print ("g is not an attribute")
if 'x' in globals():
print ('x is a global variable')
輸出
執行上面的程式後,輸出顯示如下:
m is local variable g is an attribute x is a global variable
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP