gpt4 book ai didi

Python:一种避免 < 转载 作者:行者123 更新时间:2023-12-04 16:57:37 26 4

gpt4 key购买 nike

我经常写

print "variable_name =", variable_name

在我的 python 脚本中,并且希望有类似的东西:
name_print(variable_name)

具有相同的功能,以节省打字时间。

有人有什么建议吗?

这是一种重复:
How can you print a variable name in python?

但是这个问题有很多“你做错了”类型的答案。
我觉得我的申请很合理,肯定是有人遇到过并解决过....

最佳答案

您在尝试实现类似 name_print(variable_name) 时会遇到的问题就是当函数被调用时,只传递它的值。该函数不知道变量在任何可能相关的范围内的名称。因此,您必须将名称作为字符串传递,然后从调用者的框架对象中挖掘该值:

from inspect import currentframe

def name_print(name):
frame = currentframe().f_back
locs, globs = frame.f_locals, frame.f_globals
value = locs[name] if name in locs else globs.get(name, "???")
print name, "=", value
del frame

n = 42
name_print("n")

您可以添加其他功能,例如属性查找(例如 start.line )甚至完整评估,但我将其留作练习。

将名称传递给函数而不必将其放在引号中的唯一方法是使用 __getattr__在一个物体上。所以你可以写这样的东西,但是为了避免使用字符串,这将是非常不寻常的语法。
from inspect import currentframe

class NamePrint(object):

def __getattribute__(self, name):
frame = currentframe().f_back
locs, globs = frame.f_locals, frame.f_globals
value = locs[name] if name in locs else globs.get(name, "???")
print name, "=", value
del frame

n = 42
name_print = NamePrint()
name_print.n

关于Python:一种避免 <<print "variable_name =", variable_name>> 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33837755/

26 4 0
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com