Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中打印变量值。有什么优雅的格式可以做吗?_Python_Python 2.7_Formatting - Fatal编程技术网

在python中打印变量值。有什么优雅的格式可以做吗?

在python中打印变量值。有什么优雅的格式可以做吗?,python,python-2.7,formatting,Python,Python 2.7,Formatting,我想用python打印变量值。 e、 g: 结果是: blah blah: a = 3, b = 5 我的问题是如何以简洁、优雅、易读的方式来做 e、 有没有一种方法可以编写类似(下面的伪代码)的东西 为了得到同样的结果 谢谢! (顺便说一句:我正在使用python 2.7) 编辑(澄清): 出于日志记录的目的,有时我有很多变量要打印,所以我不喜欢这样做 print 'a={}, b={}, c={},...'.format(a,b,c...) 因为它是bug的来源(即,我只想在字符串本身

我想用python打印变量值。 e、 g:

结果是:

blah blah: a = 3, b = 5
我的问题是如何以简洁、优雅、易读的方式来做

e、 有没有一种方法可以编写类似(下面的伪代码)的东西

为了得到同样的结果

谢谢! (顺便说一句:我正在使用python 2.7)

编辑(澄清): 出于日志记录的目的,有时我有很多变量要打印,所以我不喜欢这样做

print 'a={}, b={}, c={},...'.format(a,b,c...) 
因为它是bug的来源(即,我只想在字符串本身中指定变量名,而不关心变量的顺序)

e、 最后通牒,看起来像

print 'blah blah: {a}, {b}, {c}, {d}, {e}, {f}'.format(c,e,a,f,d,b)
其结果如下:

blah blah: a=3, b=5, c=7, d=22, e=2, f=532

如果知道
a
b
的顺序,则不需要在格式中将它们作为命名参数传递:

a = 3
b = 5

print('blah blah: a = {}, b = {}'.format(a, b))
或者,您可以将变量存储在字典中,如下所示,然后在将dict传递到format时使用解包

d = dict(a=3, b=5)

print('blah blah: a = {a}, b = {a}'.format(**d))

如果知道
a
b
的顺序,则不需要在格式中将它们作为命名参数传递:

a = 3
b = 5

print('blah blah: a = {}, b = {}'.format(a, b))
或者,您可以将变量存储在字典中,如下所示,然后在将dict传递到format时使用解包

d = dict(a=3, b=5)

print('blah blah: a = {a}, b = {a}'.format(**d))

您可以将第二种方法用于
**locals()
而不是
a、b
locals()
返回包含所有局部变量的dict<代码>**将其解压,以便在函数调用中使用(
函数(**{'a':3,'b':4,'c':14})
函数相同(a=3,b=4,c=14)

要避免
'a={a}'
您可以执行以下操作

print '{a}, {b}'.format(**{k:'{} = {}'.format(k,v) for (k,v) in locals().iteritems()})

您可以将第二种方法用于
**locals()
而不是
a、b
locals()
返回包含所有局部变量的dict<代码>**将其解压,以便在函数调用中使用(
函数(**{'a':3,'b':4,'c':14})
函数相同(a=3,b=4,c=14)

要避免
'a={a}'
您可以执行以下操作

print '{a}, {b}'.format(**{k:'{} = {}'.format(k,v) for (k,v) in locals().iteritems()})
然后将
localformat
导入到您想要的任何位置,并使用以下方法:

>>> a = 5
>>> b = 6
print(localformat('{a}, {b}'))
或者调用
flocals()
获取要传递到格式的字符串

d = dict(a=3, b=5)

print('blah blah: a = {a}, b = {a}'.format(**d))
然后将
localformat
导入到您想要的任何位置,并使用以下方法:

>>> a = 5
>>> b = 6
print(localformat('{a}, {b}'))


或者调用
flocals()
获取要传递到格式的字符串。

您的问题似乎是必须在
a=a,b=b
中重复
a
b
?是,为了打印参数的值,我发现将参数的名称重复4次并不优雅。问题是对象本身不知道它们绑定到什么名称。如果你想要这样的东西,你必须使用一个名称空间(例如dict),这让我想起MacroPy库,它的函数似乎可以满足你的需要
log[a]
打印出“a->3”(或者类似的东西,我自己还没有试过)看起来你的问题是你必须在
a=a,b=b
中重复
a
b
?是的,为了打印参数的值,我发现将参数的名称重复4次并不优雅。问题是对象本身不知道它们绑定到什么名称。如果你想要这样的东西,你必须使用一个名称空间(例如dict),这让我想起MacroPy库,它的函数似乎可以满足你的需要
log[a]
打印出“a->3”(或者类似的东西,我自己还没有试过)谢谢你的回答。但这不是我想要的。请参阅问题中的说明我进一步说明了我的问题。他希望通过输入值来打印变量名称和值。谢谢您的回答。但这不是我想要的。我进一步澄清了我的问题。他希望通过输入值来打印变量名和值。几乎完美!无论如何,缩短它以获得相同的结果?e、 例如print({a},{b})。format(一些操作(**locals()))不是不创建一个函数就可以完成的(将
'{a}'
转换为
'a={a}'
)。谢谢,我接受你的答案,并将我的解决方案添加为一个近乎完美的编辑器!无论如何,缩短它以获得相同的结果?e、 例如print({a},{b})。format(一些操作(**locals()))不是不创建一个函数就可以完成的(将
{a}
转换为
'a={a}
)。谢谢,我接受你的答案,并将我的解决方案添加为编辑
d = dict(a=3, b=5)

print('blah blah: a = {a}, b = {a}'.format(**d))