如何解决导入时传递输入?
我正在开发一个项目,我的代码分布在不同的文件中;例如,在 convex.py
中,我通过在顶部调用 rings.py
来调用我在 from rings import *
中编写的方法。在 rings
中,我使用 p
定义了一个常量 mpmath
,它用于 rings
的各种函数中,因此它取决于我手写到 {{ 1}}(例如通过 rings
)。但是,当使用 mpmath.mp.dps = 40
时,我稍后可能希望 convex
具有更高的精度。当我将它导入到 p
时,有没有办法让 rings
接受一些输入?例如也许我想要一次 50 位十进制数字,下次使用 100 位,所以完美的解决方案是让 convex
接受输入 rings
并在那里设置 D
,然后在 { {1}} 可能有
mpmath.mp.dps = D
(然后在文件的其他地方使用 convex
,我也可以自由更改 D = 50
from rings[D] import *
(以及我想在 D
中更改的任何其他内容,而无需更改)每次都回到D
))。 (上面建议的符号是将 convex
视为 rings
的函数。)
我看到的唯一具体解决方法是修改我的每个 rings
方法,以将输入作为我在 {{1} 中定义的依赖于精度的常量的all },在D
中重新定义它们,然后将它们作为参数传递;但这似乎是一个笨拙且整体糟糕的解决方案。
如果我能澄清其中任何一个,请告诉我。提前致谢。
编辑:示例代码
rings
rings
解决方法
我脑子里最直接的解决方案是声明一个类,它允许更新值 D
。
rings.py
import mpmath as mp
from mpmath import sqrt
class Ring:
def __init__(self,D=40):
mp.mp.dps = D
def set_d(self,D):
mp.mp.dps = D
def f(self,x):
p = sqrt(2)
return p * x
凸面.py
import mpmath as mp
from mpmath import sqrt
from rings import Ring
D = 50
ring = Ring(D)
q = sqrt(3)
print(D + ring.f(q))
我希望我正确理解了您的问题。如果这有帮助,请告诉我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。