Python - 如何保存函数

时间:2014-01-05 20:00:37

标签: python function save

我在python中开始。我有四个功能,工作正常。我想要做的就是保存它们。我想在python中随时调用它们。

以下是我的四个函数的代码:

import numpy as ui


def simulate_prizedoor(nsim):
    sim=ui.random.choice(3,nsim)
    return sims

def simulate_guess(nsim):
        guesses=ui.random.choice(3,nsim)
        return guesses

def goat_door(prizedoors, guesses):


        result = ui.random.randint(0, 3, prizedoors.size)
        while True:
            bad = (result == prizedoors) | (result == guesses)
            if not bad.any():
                return result
            result[bad] = ui.random.randint(0, 3, bad.sum())

def switch_guesses(guesses, goatdoors):


            result = ui.random.randint(0, 3, guesses.size)
            while True:
                bad = (result == guesses) | (result == goatdoors)
                if not bad.any():
                    return result
                result[bad] = ui.random.randint(0, 3, bad.sum())

4 个答案:

答案 0 :(得分:14)

您要做的是获取您的Python文件,并将其用作模块

没有办法让这四个功能自动可用,无论如何,100%的时间,但你可以做一些非常接近的事情。

例如,您在文件的顶部导入了numpynumpy是一个已设置的模块或库,只要您导入,就可以在任何时候运行python。

您想要做同样的事情 - 将这4个函数保存到文件中,并随时导入它们。


例如,如果将这四个函数复制并粘贴到名为foobar.py的文件中,则可以执行from foobar import *。但是,这只有在您保存代码的同一文件夹中运行Python时才有效。

如果要在整个系统范围内使用模块,则必须将其保存在 PYTHONPATH 的某个位置。通常,将其保存到C:\Python27\Lib\site-packages将起作用(假设您正在运行Windows)。

答案 1 :(得分:4)

如果您决定将它们放在项目文件夹中的任何位置,请不要忘记创建一个空白的 init .py文件,以便python可以看到它们。这里可以提供更好的答案:http://docs.python.org/2/tutorial/modules.html

答案 2 :(得分:3)

将它们保存在文件中 - 这使它们成为module

如果将它们放在名为mymod.py的文件中,则在python中可以按如下方式加载它们

from mymod import *
simulate_prizedoor(23)

答案 3 :(得分:3)

快速解决方案,无需显式创建文件 - 依赖于IPython及其storemagic

IPython 4.0.1 -- An enhanced Interactive Python.
details.

In [1]: def func(a):
   ...:     print a
   ...:     

In [2]: func = _i #gets the previous input

In [3]: store func #store(magic) the input 
                   #(auto-magic enabled or would need '%store')
Stored 'func' (unicode)

In [4]: exit

IPython 4.0.1 -- An enhanced Interactive Python.

In [1]: store -r func #retrieve stored string

In [2]: exec func #execute string as python code

In [3]: func(10)
10

只需存储了一次所有功能,然后您就可以使用store -r将其全部恢复,然后在每个新会话中为每个功能恢复exec func

(在交互式python会话中寻找“快速保存”功能(最方便的方式)的解决方案时遇到这个问题 - 为未来的读者添加我当前的最佳解决方案)