Python 将独立代码转换为函数

Python 将独立代码转换为函数,python,function,anaconda,spyder,Python,Function,Anaconda,Spyder,免责声明:几个月前开始编写代码,我经常倾向于使用不正确的语言,提前道歉 我正在编写一个函数,将sbml模型(.xml文件)转换为latex中更可读的文件(转换为.tex文件) 我在将独立代码转换为函数时遇到问题。我的最佳猜测是,问题出在嵌套函数中(在传输后)listfiller 我从sbml模型中获取信息的主要(也不是很漂亮)方法是将代码预写到列表中(在函数中称为命令,这些基本上是对libSBML库中的函数的调用,这些函数提取一些信息[字符串、整数等])listfiller根据我输入嵌套函数的任

免责声明:几个月前开始编写代码,我经常倾向于使用不正确的语言,提前道歉

我正在编写一个函数,将sbml模型(.xml文件)转换为latex中更可读的文件(转换为.tex文件)

我在将独立代码转换为函数时遇到问题。我的最佳猜测是,问题出在嵌套函数中(在传输后)
listfiller

我从sbml模型中获取信息的主要(也不是很漂亮)方法是将代码预写到列表中(在函数中称为
命令
,这些基本上是对libSBML库中的函数的调用,这些函数提取一些信息[字符串、整数等])
listfiller
根据我输入嵌套函数的任何对象(称为
obj
)进行计算

出于某种原因,一旦我将整个代码移动到一个函数中,
listfiller
就再也看不到对象了。此外,它确实看到了字面上命名为
obj

试图将
*args
**kwargs
而不是
obj
放入,但无效

将所有事物命名为“obj”是不可能的(即,非常麻烦)

下面是函数本身(需要运行:
pip install tellurium
)和libSBML类的任何.xml文件

错误:

Traceback (most recent call last):

  File "<ipython-input-56-48f48283afb5>", line 1, in <module>
    xml2tex('model.xml')

  File "/Users/sergejczan/Desktop/Lab/untitled1.py", line 38, in xml2tex
    RL = listfiller(Rlist, obj = R, twoD=0) #starting the element of common matrix/list to append at the end

  File "/Users/sergejczan/Desktop/Lab/untitled1.py", line 23, in listfiller
    templin[i] = eval(Commands[i])

  File "<string>", line 1, in <module>
NameError: name 'R' is not defined
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
xml2tex('model.xml')
xml2tex中的文件“/Users/sergejczan/Desktop/Lab/untitled1.py”,第38行
RL=listfiller(Rlist,obj=R,twoD=0)#开始公共矩阵/列表的元素以追加到末尾
文件“/Users/sergejczan/Desktop/Lab/untitled1.py”,第23行,在listfiller中
templin[i]=eval(命令[i])
文件“”,第1行,在
NameError:未定义名称“R”

您显示的代码不涉及变量
某物
(不包括在模糊的括号中),因此您的错误消息缺乏足够的上下文。请提供一个.Btw。此外,没有理由预定义列表长度,您可以使用。和
tofill.append(templin)
将附加整个列表,而不是它的元素(不太确定它是否是您需要的)。修改为尽可能可复制。明白了,现在就把完整的错误消息放到这里。您发布的唯一代码是函数定义。函数定义本身不会触发运行时错误。调用函数时发生运行时错误(如果有)。您的代码不会调用它定义的函数。您显示的回溯似乎指的是您没有实际发布的代码。您显示的代码不涉及变量
something
(不包括在模糊的括号中),因此您的错误消息缺少足够的上下文。请提供一个.Btw。此外,没有理由预定义列表长度,您可以使用。和
tofill.append(templin)
将附加整个列表,而不是它的元素(不太确定它是否是您需要的)。修改为尽可能可复制。明白了,现在就把完整的错误消息放到这里。您发布的唯一代码是函数定义。函数定义本身不会触发运行时错误。调用函数时发生运行时错误(如果有)。您的代码不会调用它定义的函数。您显示的回溯似乎引用了您实际上没有发布的代码。
Traceback (most recent call last):

  File "<ipython-input-56-48f48283afb5>", line 1, in <module>
    xml2tex('model.xml')

  File "/Users/sergejczan/Desktop/Lab/untitled1.py", line 38, in xml2tex
    RL = listfiller(Rlist, obj = R, twoD=0) #starting the element of common matrix/list to append at the end

  File "/Users/sergejczan/Desktop/Lab/untitled1.py", line 23, in listfiller
    templin[i] = eval(Commands[i])

  File "<string>", line 1, in <module>
NameError: name 'R' is not defined