除了我先前提出的有助于回答的问题之外,一个新的相关问题是:
我如何追加'用户将超越函数输入到数学中。 python可以以通常的方式使用的前缀(math。 user_fn )吗?对不起初学者,我不确定我拍摄的精确术语,但我想我在这种情况下询问如何更改对象类型? e.g。
v1 = input("Type a transcendental function e.g. 'sin' or 'exp': ")
这样我就可以计算出类似的东西:
math.v1(2.3)
答案 0 :(得分:1)
你不能以通常的方式进行(即点访问)。您可以使用math.v1
在现场调用它。事实是,__getattribute__
将对模块对象执行v1
调用,并查找属性的名称不是'v1'
的值,而是,字符串getattr
本身。
失败了,没有办法改变它。
您应该选择getattr(math, v1)(2.3)
,这支持动态属性提取:
v1
这试图获取一个属性, name等于func = getattr(math, v1)
func(2.3)
的值,然后在现场调用它。它是一个较短的版本:
dummy_long_list = [1,2,3,4,5,6]*1000000