【问题标题】:Printing variable label in function在函数中打印可变标签
【发布时间】:2018-01-29 18:15:05
【问题描述】:

如何在函数中返回变量名。例如。如果我有这个功能:

def mul(a,b):
   return a*b

a = mul(1,2); a
b = mul(1,3); b
c = mul(1,4); c

这将返回:

2
3
4

我希望它返回:

a = 2
b = 3
c = 4

我该怎么做?

【问题讨论】:

  • 使用print("a = " + str(a)), print("b = " + str(b)) ...
  • 如果你想动态打印出名字:看这个:stackoverflow.com/questions/544919/…
  • @MEE 我要在函数中实现
  • 在哪个函数中?您上面的代码仅在交互模式下工作。没有调用打印函数。如果你想创建一个函数 printWithName(x) 来打印 x 的名称和 x 的值,请查看上面的链接
  • mul 有(并且可以有,没有对它出现的代码进行反省)没有知道如何处理它的返回变量,更不用说名称了它可能被分配到的变量。

标签: python variables printing sage


【解决方案1】:

不幸的是,您无法“向后”打印变量的名称。这在this StackOverflow post 中有更详细的解释。

你可以做的是把变量名放在字典里。

dict = {"a":mul(1,2), "b":mul(1,3), "c":mul(1,4)}

您可以从那里循环遍历键和值并将它们打印出来。

for k, v in dict.items():
    print(str(k) + " = " + str(v))

或者,如果您希望对值进行排序,可以将值放入元组列表中,然后在 for 循环中再次遍历它们。

lst = [("a", mul(1,2)), ("b", mul(1,3)), ("c",mul(1,4))]

【讨论】:

    【解决方案2】:

    以下是使用python-varname 包的方法:

    from varname import varname
    
    def mul(a, b):
       var = varname()
       return f"{var} = {a*b}"
    
    a = mul(1,2)
    b = mul(1,3)
    c = mul(1,4)
    
    print(a) # 'a = 2'
    print(b) # 'b = 2'
    print(c) # 'c = 2'
    

    包托管在https://github.com/pwwang/python-varname

    我是包的作者。如果您对使用它有任何疑问,请告诉我。

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      相关资源
      最近更新 更多