相关疑难解决方法(0)

如何获取Python函数的源代码?

假设我有一个如下定义的Python函数:

def foo(arg1,arg2):
    #do something with args
    a = arg1 + arg2
    return a
Run Code Online (Sandbox Code Playgroud)

我可以使用函数的名称foo.func_name.如上所示,我如何以编程方式获取其源代码?

python function

373
推荐指数
11
解决办法
20万
查看次数

Python反射 - 我可以使用它来获取方法定义的源代码

重复..


我有一个成功运行的方法定义,但想在运行时修改它.

例如:如果我有方法

def sayHello():
    print "Hello"
Run Code Online (Sandbox Code Playgroud)

type(sayHello)给我答案'type function'.我能获取此函数对象的源代码字符串吗?它被认为是安全问题吗?

python reflection

10
推荐指数
3
解决办法
6350
查看次数

如何处理“inspect.getsource”的限制 - 或者如何仅获取函数的源?

我一直在使用inspectPython 标准库中的模块。

以下示例运行良好(假设inspect已导入):

def foo(x, y):
    return x - y
print(inspect.getsource(foo))
Run Code Online (Sandbox Code Playgroud)

...将打印def foo(x, y):\n return x - y\n并...

bar = lambda x, y: x / y
print(inspect.getsource(bar))
Run Code Online (Sandbox Code Playgroud)

...将打印bar = lambda x, y: x / y\n。到目前为止,一切都很好。然而,在下面的例子中事情变得有点奇怪:

print(inspect.getsource(lambda x, y: x / y))
Run Code Online (Sandbox Code Playgroud)

...将打印print(inspect.getsource(lambda x, y: x / y))并...

baz = [2, 3, lambda x, y: x / y, 5]
print(inspect.getsource(baz[2]))
Run Code Online (Sandbox Code Playgroud)

...将打印baz = [2, 3, lambda x, y: x / y, …

python inspect python-3.x

7
推荐指数
1
解决办法
2067
查看次数

你如何让Python写下它在内存中的函数代码?

当我通过程序中的选项(计算生物学实验)时,我通常会将它们传递给.py文件.
所以我有这个.py文件,如下所示:

starting_length=9
starting_cell_size=1000
LengthofExperiments=5000000
Run Code Online (Sandbox Code Playgroud)

然后我执行文件并获取数据.由于程序全部在我的机器上,没有其他人可以访问它,因此它是安全的.
我也可以很容易地写一个类似的文件:

def writeoptions(directory):
    options=""
    options+="starting_length=%s%s"%(starting_length,os.linesep)
    options+="starting_cell_size=%s%s"%(starting_cell_size,os.linesep)
    options+="LengthofExperiments=%s%s"%(LengthofExperiments,os.linesep)
...
    open("%s%soptions.py"%(directory,os.sep),'w').write(options)
Run Code Online (Sandbox Code Playgroud)

我想传递一个函数作为参数之一:

starting_length=9
starting_cell_size=1000
LengthofExperiments=5000000

def pippo(a,b):
    return a+b
functionoperator=pippo
Run Code Online (Sandbox Code Playgroud)

当然,在真正的实验中,函数pippo会复杂得多.不同于实验到实验.

但我无法做的是自动编写函数.总之,如果其中一个选项是函数,我不知道如何推广writeoptions函数以继续编写选项.我当然可以复制原始文件,但这是不优雅的,低效的(因为它包含许多未被使用的额外选项),并且通常不能解决问题.

你如何让python写下函数的代码,因为它记下了变量的值?

python artificial-intelligence

5
推荐指数
1
解决办法
2855
查看次数