健康的编程实践

时间:2012-02-04 19:30:27

标签: python function math module

我需要建议。我正在写一个计算器;我已经掌握了它的基本功能,并最终转向使用它的处理功能。在这方面,我发现Python提供的标准数学函数库不令人满意。

虽然定义了更常用的函数,但一些较为模糊的函数缺乏适当的提及。这方面的例子包括弧双曲余切,弧双曲余割,双曲余割,割线等。虽然其中一些只是对所提供功能的操纵,但似乎更好的选择是提供我们的定义并将程序引用到它遇到了他们。

这就是我的问题所在。我应该在主脚本中定义这些函数,还是应该使用单独的文件?如果我是后者,我该如何引用单独的文件?我对Python比较陌生,所以如果我缺少常用技术或其他东西,请告诉我。提前谢谢。

4 个答案:

答案 0 :(得分:5)

  

我应该在主脚本中定义这些函数,还是应该使用单独的文件?如果我是后者,我该如何引用单独的文件?我对Python比较陌生,所以如果我缺少常用技术或其他东西,请告诉我。提前谢谢。

import语句是python的一个重要部分:

将您的功能放在单独的文件中,例如mymath.py

def foo(x):
    # Code goes here

然后导入您的模块:

import mymath
print(mymath.foo(y))

答案 1 :(得分:3)

我会像你建议的那样制作一个小型数学实用程序模块。只需使用

创建advmath.py即可
def csch(z):
    "Hyperbolic cosecant"
    return 1 / sinh(z)

def sinh(z):
    "Hyperbolic sine"
    ...

然后您可以在主脚本中import使用此模块:

import advmath

您现在可以访问模块中定义的函数和变量:

advmath.csch(x)

答案 2 :(得分:1)

你应该得到包含许多这些功能的numpy和scipy库。

  

我应该在主脚本中定义这些函数,还是应该   使用单独的文件?

这取决于你的计算器有多复杂。但它可能应该放在一个单独的文件中。

  

如果我是后者,我该如何引用单独的文件?

使用导入。 import foo会尝试加载文件foo.py。然后,您可以访问foo中的函数foo.function_name。您应该能够在本网站上找到很多关于使用它的问题。

答案 3 :(得分:1)

你应该花一些时间在python网站上关于modules的优秀教程。

总的来说,是的。如果您有要重用的组件,则最好将它们保存在单独的模块文件中。

示例:

#!/usr/bin/python

def fib(n):    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a+b

if __name__ == "__main__":
    print "testing fib(10)"
    fib(10)   

将该代码放在已知目录中名为fib.py的单独文件中 - 例如您的个人bin文件夹。从该目录运行python交互式shell。

现在:

>>> import fib
>>> fib.fib(10)
1 1 2 3 5 8

使用此方法,您可以构建一个随时可用的个人函数库。

请注意以下代码:

if __name__ == "__main__":
    print "testing fib(10)"
    fib(10)   

这允许您放置测试工具和模块的末尾,如果执行模块而不是库导入,则执行模块。

然而,其中大部分可能没有必要。优秀的numpyscipy可能具有您梦寐以求的所有数学函数。