问题描述
当我使用“打印”语句时,我喜欢描述我正在打印的变量的名称。例如。我会这样做:
A = 1
B = 2
print(f'A = {A}\nB = {B}\n')
获得:
>> A = 1
B = 2
我想编写一个函数来打印所打印变量的名称,这样我就不必一直编写 f 字符串了。 我试过了:
import inspect
def new_print(*args):
for arg in args:
variable_name = inspect.signature(new_print)
print(f'{variable_name} = {arg}')
print('')
new_print(A,B)
但我明白了:
(*args) = 1
(*args) = 2
解决方法
从 Python 3.8 开始,您可以使用此 f-string syntax 来打印表达式及其值,而不是创建新函数:
>>> a = 123
>>> print(f'{a=}')
a=123
>>> print(f'Debug output: {a*2=}')
Debug output: a*2=246
,
变量的名称只是在您所在的任何范围内引用该值的一种方式。它不会随变量一起移动,当然也不会通过 *args
。最多,您可以发送 **kwargs
并引用密钥,但您必须像 new_print(A=A,B=B)
def new_print(**kwargs):
for argname,argval in kwargs.items():
print(f"{argname} = {argval}")
print("")
像这样运行:
A = 1
B = 2
new_print(A=A,B=B)
给出输出
A = 1
B = 2