2017-09-06 33 views
-1

我想使用一個可以自動打印變量和值的函數。如下圖所示:Python:輕鬆打印變量名稱和值

num = 3 
coolprint(num) 

輸出:

num = 3 

此外,它會很酷,如果它也可以做這樣的事情:

variable.a = 3 
variable.b = 5 
coolprint(vars(variable)) 

輸出:

vars(variable) = {'a': 3, 'b': 5} 

有沒有什麼功能這已經在那裏?或者我應該自己做?謝謝

+0

檢查pprint它可以做你想做什麼 –

+0

的Python不支持這一點。函數只能看到對象,而不能看到變量名。 'coolprint'不知道'3'來自一個名爲'num'的變量。 – user2357112

+1

根本不可能找到正確的變量,因爲可以有多個變量指向相同的值。 –

回答

0

我發現答案是否定的。沒有辦法做到這一點。然而,最好的辦法是這樣的:

from pprint import pprint 

def crint(obj, name): 

    if isinstance(obj, dict): 
     print '\n' + name + ' = ' 
     pprint(obj) 

    else: 
     print '\n' + name + ' = ' + str(obj) 

這樣,你可以這樣做:

crint(vars(table.content[0]), 'vars(table.content[0])') 

或:

j = 3 
crint(j, 'j') 
+1

另一種可能的選擇是使用映射數據結構,如字典。 –

1

一名官員的方式來完成這項任務可悲的是沒有按」即使它對許多人有用也是存在的。我想提出的以及我過去有時使用它的是以下內容(我不確定這是否是最好的方法)。

基本上你可以做的是創建一個自定義對象,每次模仿一個Python的數據類型。貝婁你可以找到一個整數的例子。

class CustomVariable(object): 

    def __init__(self, name, value): 
     self.name = name 
     self.value = value 

    def __str__(self): 
     return "{} = {}".format(self.name, self.value) 

    def __add__(self, val) : 
     return self.value + val 


myVar = CustomVariable("myVar", 15) 
print myVar 
myVar = myVar + 5 
print myVar 

Output: 
myVar = 15 
myVar = 20 

檢查命名的特殊方法 「___str____」