gpt4 book ai didi

python - 如何将我的函数导入到 python 文件并从中获取输入?

转载 作者:行者123 更新时间:2023-12-01 02:35:04 25 4
gpt4 key购买 nike

我有一个名为analyze()的函数,如下所示:

def analyze():
for stmt in irsb.statements:
if isinstance(stmt, pyvex.IRStmt.WrTmp):
wrtmp(stmt)
if isinstance(stmt, pyvex.IRStmt.Store):
address = stmt.addr
address1 = '{}'.format(address)[1:]
print address1
data = stmt.data
data1 = '{}'.format(data)[1:]
tmp3 = store64(address1, int64(data1))
if isinstance(stmt, pyvex.IRStmt.Put):
expr = stmt.expressions[0]
putoffset = stmt.offset
data = stmt.data
data4 = '{}'.format(data)[1:]
if (str(data).startswith("0x")):
#const_1 = ir.Constant(int64, data4)
tmp = put64(putoffset, ZERO_TAG)
else:
put64(putoffset, int64(data4))
if isinstance(stmt.data, pyvex.IRExpr.Const):
reg_name = irsb.arch.translate_register_name(stmt.offset, stmt.data.result_size(stmt.data.tag))
print reg_name
stmt.pp()

此代码函数获取以下输入并尝试分析它:

CODE = b"\xc1\xe0\x05"  
irsb = pyvex.block.IRSB(CODE, 0x80482f0, archinfo.ArchAMD64())

当这个输入位于我的代码中的同一个文件中时(让我们将整个文件称为analyze.py),它就可以工作,并且pythonanalyze.py将为我提供一个输出。但是,我想创建一个单独的文件(调用 array.py),在那里调用分析并将输入放入其中并运行 python array.py 以获得相同的结果。我对 array.py 执行了以下操作:

from analyze import analyze

CODE = b"\xc1\xe0\x05"
irsb = pyvex.block.IRSB(CODE, 0x80482f0, archinfo.ArchAMD64())
analyze()

但是,当我运行 array.py 时,它会因错误而停止;

NameError: name 'CODE' is not defined

如何解决这个问题?解决办法是什么?

最佳答案

对函数进行简单的更改,添加参数:

def analyze(irsb):   # irsb here called parameter
...
# The rest is the same

然后在调用时传递参数:

from analyze import analyze

CODE = b"\xc1\xe0\x05"
irsb_as_arg = pyvex.block.IRSB(CODE, 0x80482f0, archinfo.ArchAMD64())
analyze(irsb_as_arg) # irsb_as_arg is an argument

我刚刚将这里的irsb更改为irsb_as_arg以引起注意,但可以是相同的名称

关于python - 如何将我的函数导入到 python 文件并从中获取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46348623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com