Python 如何将用户输入的(字符串)函数转换为数学模块
除了我先前回答的问题之外,还有一个新的相关问题: 如何将用户输入的超越函数“附加”到数学上。python可以以通常方式使用的前缀(math.user_fn)?抱歉,作为初学者,我不确定我使用的确切术语,但我想我是在问在这种情况下如何更改对象类型? e、 g 这样我就可以计算如下:Python 如何将用户输入的(字符串)函数转换为数学模块,python,python-3.x,Python,Python 3.x,除了我先前回答的问题之外,还有一个新的相关问题: 如何将用户输入的超越函数“附加”到数学上。python可以以通常方式使用的前缀(math.user_fn)?抱歉,作为初学者,我不确定我使用的确切术语,但我想我是在问在这种情况下如何更改对象类型? e、 g 这样我就可以计算如下: math.v1(2.3) 你不能用通常的方式(即点访问)来做这件事。您可以使用getattr获取并即时调用它。事实上,math.v1将对模块对象执行\uuu getattribute\uuu调用,并查找一个属性,该
math.v1(2.3)
你不能用通常的方式(即点访问)来做这件事。您可以使用
getattr
获取并即时调用它。事实上,math.v1
将对模块对象执行\uuu getattribute\uuu
调用,并查找一个属性,该属性的名称不是v1
的值,而是字符串'v1'
本身
这是失败的,没有办法改变它
您只需选择getattr
,这支持动态属性获取:
getattr(math, v1)(2.3)
这将尝试获取一个属性,该属性的名称等于v1
的值,然后立即调用它。这是一个较短的版本,用于:
func = getattr(math, v1)
func(2.3)
接受的答案使用getattr。可能是的重复项
func = getattr(math, v1)
func(2.3)