【问题标题】:Python type conversion using variable valuePython 类型转换使用变量值
【发布时间】:2022-11-17 00:43:04
【问题描述】:
mytype = "str"
myvalue = "35"
my_int_val = mytype(myvalue)

这会引发 -

TypeError: 'str' object is not callable

我似乎不记得这样做的方法。有任何想法吗?

【问题讨论】:

  • my_int_val = int(myvalue)
  • 您不是在围绕 myvalue 编写函数。您正在对变量调用变量。尝试 str("35") ,因为 str 是一个函数,而 mytype 中的 "str" 是一个字符串
  • 撇开错误不谈,你为什么期望 str("35") 返回一个整数值?

标签: python


【解决方案1】:
my_int_val = int(myvalue)
my_str_val = str(myvalue)

是最干净的方法来做到这一点。但出于某种原因,如果你希望类型存储在一个字符串中并调用它,你可以使用 eval:

t = "int"
my_int_val = eval(f"{t}({myvalue})")

【讨论】:

  • 除非我真的需要,否则我不会使用eval。在近 20 年的 Python 编程中我用过一次。必读:Eval really is dangerous。你不应该使用eval,直到你阅读并理解他的文章,并且在你阅读并理解它之后你不想再使用它了。
【解决方案2】:

mytype 是变量而不是数据类型

int_val = int(myvalue)
str_val = str(myvalue)

【讨论】:

    【解决方案3】:

    如果您想动态使用任何内置函数来转换数据,您可以从__builtins__ 获取它。

    mytype = "str"
    myvalue = "34"
    
    func = getattr(__builtins__, mytype)
    
    print(func(myvalue))
    print(type(func(myvalue)))
    

    这会给你

    34
    <class 'str'>
    

    如果你使用mytype = "float"你会得到

    34.0
    <class 'float'>
    

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 2014-02-16
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2018-03-07
      • 2012-06-20
      相关资源
      最近更新 更多