当我通过程序中的选项(计算生物学实验)时,我通常会将它们传递给.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 函数:
def func(x):
"""Function docstring."""
result = x + 1
if result > 0:
# comment 2
return result
else:
# comment 3
return -1 * result
Run Code Online (Sandbox Code Playgroud)
而且我想要一些函数来打印沿执行路径遇到的所有函数文档字符串和注释,例如
> trace(func(2))
Function docstring.
Comment 2
3
Run Code Online (Sandbox Code Playgroud)
事实上,我试图实现的是提供一些关于如何计算结果的评论。
可以用什么?据我所知,AST 不会在树中保留评论。
我最近问了一个标题为“python find the type of a function”的问题,并得到了非常有用的答案。这是一个相关的问题。
假设我导入我编写的 *.py 文件,这些导入导致f
成为我定义的函数之一。现在我写信给我的 python 解释器x = f
。后来,我想看到 的完整定义f
,最好还有注释,只知道x
。这可能吗?python 是否记得定义是从哪个文件导入的,这当然不足以给出 的完整定义f
,除非可以找到实际的相关定义?
我想知道传递给函数时局部变量名是什么.我不确定这是否可行.让我们考虑这个例子:
功能定义:
def show(x):
print(x)
Run Code Online (Sandbox Code Playgroud)
用法:
a = 10
show(a)
Run Code Online (Sandbox Code Playgroud)
这打印10.但我喜欢打印"a = 10".这在python中可能吗?
背景:
我想在给定行长度的元素中切片pandas数据帧,并对它们执行计算.
pandas.DataFrame.rolling将允许我这样做,但似乎只有内置函数,如sum()
示例中所示df.rolling(2, win_type='triang').sum()
.我还想绘制这些子集(我可以通过切片和一些For循环来做到这一点,但它有点慢).
我发现了什么:
从如何获取Python函数的源代码?我已经知道我可以阅读使用的源代码,pandas.DataFrame.rolling??
这将给我这个:
但是试图从这里深入挖掘使用例如rolling??
似乎是徒劳的:
那么,是否有可能以pandas.DataFrame.rolling
某种方式引用底层函数,或者这是使用Python结束的?我想是的,因为文档声明大熊猫是用Cython或C编写的,但我真的好奇这个,所以我也想在这里问一下这个问题.
谢谢你的任何建议!
这个探索从一个简单的 LeetCode 问题开始。我正在学习 python 并试图解决 leetcode 中的一个问题,其中我在检查 while 循环中的条件时使用了len() 。我很好奇如果我在 while 中写入len(nums)我的程序会进行更多计算。为了找到这个问题,我开始寻找源代码。
while i < len(nums):
#if both the numbers are same we can pop the ith number
#else just increase the index and return the length in the end.
if nums[i] == val:
nums.pop(i)
else:
i+=1
return len(nums)
Run Code Online (Sandbox Code Playgroud)
现在,我有两个问题:
我对此有两个假设:
我得到了源代码。然而,它再次使用另一个函数来计算长度。
static PyObject *
builtin_len(PyObject *module, PyObject *obj)
/*[clinic end generated code: output=fa7a270d314dfb6c input=bc55598da9e9c9b5]*/ …
Run Code Online (Sandbox Code Playgroud) 我在 jupyter 笔记本中做了一个函数,单元格被删除了。我想知道函数中的代码。我无法使用,undo deleted cell
因为它很久以前就被删除了。该函数不会从笔记本内存中删除,因为我可以运行它。有没有办法让代码写在函数内部?