2024-10-17 06:13:48 发布
网友
我正在尝试学习python中符号操作的来龙去脉(我是一个初学者)。
我有下面的基本代码,输出给了我一个错误,告诉我它“无法将表达式转换为float”。
这个代码有什么问题:
from sympy import * from math import * def h(x): return log(0.75392 * x) x = symbols('x') hprime = h(x).diff(x) print(hprime)
这是PEP-8中有关通配符导入的经典示例:
Wildcard imports ( from <module> import * ) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools.
from <module> import *
问题是您需要使用^{}类,但使用^{}函数而不是^{}对象,而不是^{}对象。
当你写作时
from sympy import *
您正在模块名称空间中导入sympy包在顶层提供的所有内容(有很多东西,很多东西您根本不需要),包括sympy.log类。
sympy
sympy.log
下一句话之后
from math import *
您正在导入math模块中的所有内容,包括覆盖先前导入的sympy.log类的math.log。
math
math.log
考虑到这一点,你的例子可以写成
import sympy def h(x): return sympy.log(0.485022 * x) x = sympy.symbols('x') h_x = h(x) hprime = h_x.diff(x) print(hprime)
给了我们
1.0/x
p.S.:我删除了math导入,因为它在给定示例中没有使用。
这里的问题是sympy和math包都定义了一个名为log的函数。
log
将它们导入为from sympy import *,然后from math import *使用math.log重写sympy.log。
最好总是使用import sympy,然后调用函数sympy.log,或者(如果像我一样懒的话)执行import sympy as sym,然后sym.log。一定要用数学软件包。这种方法将在将来为您节省许多麻烦,并使您的代码更容易为其他人理解。
import sympy
import sympy as sym
sym.log
这是PEP-8中有关通配符导入的经典示例:
问题是您需要使用^{} 类,但使用^{} 函数而不是^{} 对象,而不是^{} 对象。
当你写作时
您正在模块名称空间中导入
sympy
包在顶层提供的所有内容(有很多东西,很多东西您根本不需要),包括sympy.log
类。下一句话之后
您正在导入
math
模块中的所有内容,包括覆盖先前导入的sympy.log
类的math.log
。考虑到这一点,你的例子可以写成
给了我们
p.S.:我删除了
math
导入,因为它在给定示例中没有使用。这里的问题是
sympy
和math
包都定义了一个名为log
的函数。将它们导入为
from sympy import *
,然后from math import *
使用math.log
重写sympy.log
。最好总是使用
import sympy
,然后调用函数sympy.log
,或者(如果像我一样懒的话)执行import sympy as sym
,然后sym.log
。一定要用数学软件包。这种方法将在将来为您节省许多麻烦,并使您的代码更容易为其他人理解。相关问题 更多 >
编程相关推荐