草庐IT

python - 使用 `exec` 调用时如何更新局部变量?

我以为这会打印3,但它会打印1:#Python3deff():a=1exec("a=3")print(a)f()#1Expected3 最佳答案 此问题在Python3buglist中有所讨论。.最终,要获得这种行为,您需要这样做:deffoo():ldict={}exec("a=3",globals(),ldict)a=ldict['a']print(a)如果您检查thePython3documentationonexec,您将看到以下注释:Thedefaultlocalsactasdescribedforfunctionloca

python - 使用 `exec` 调用时如何更新局部变量?

我以为这会打印3,但它会打印1:#Python3deff():a=1exec("a=3")print(a)f()#1Expected3 最佳答案 此问题在Python3buglist中有所讨论。.最终,要获得这种行为,您需要这样做:deffoo():ldict={}exec("a=3",globals(),ldict)a=ldict['a']print(a)如果您检查thePython3documentationonexec,您将看到以下注释:Thedefaultlocalsactasdescribedforfunctionloca

python - 如何将参数传递给函数的 __code__?

以下作品:defspam():print"spam"exec(spam.__code__)spam但是如果spam接受参数怎么办?defspam(eggs):print"spamand",eggsexec(spam.__code__)TypeError:spam()takesexactly1argument(0given)鉴于我无法访问函数本身而只能访问代码对象,我如何在执行代码对象时将参数传递给代码对象?eval可以吗?编辑:由于大多数读者往往不相信它的用处,请参阅以下用例:我想将小的Python函数保存到一个文件中,以便它们可以被调用,例如从另一台计算机。(这里不用说这个用例严重限

python - 如何将参数传递给函数的 __code__?

以下作品:defspam():print"spam"exec(spam.__code__)spam但是如果spam接受参数怎么办?defspam(eggs):print"spamand",eggsexec(spam.__code__)TypeError:spam()takesexactly1argument(0given)鉴于我无法访问函数本身而只能访问代码对象,我如何在执行代码对象时将参数传递给代码对象?eval可以吗?编辑:由于大多数读者往往不相信它的用处,请参阅以下用例:我想将小的Python函数保存到一个文件中,以便它们可以被调用,例如从另一台计算机。(这里不用说这个用例严重限

python - 为什么函数中的 exec 中的导入不起作用?

我可以将导入语句放在一个字符串中,执行它,它可以工作(打印一个随机数字):code="""importrandomdeff():printrandom.randint(0,9)"""deff():passexeccodef()现在,如果我把execcode和f()放在它们自己的函数中并调用它,它就不起作用了。deftest():execcodef()test()它说NameError:globalname'random'isnotdefined. 最佳答案 这个怎么样:deftest():exec(code,globals())f(

python - 为什么函数中的 exec 中的导入不起作用?

我可以将导入语句放在一个字符串中,执行它,它可以工作(打印一个随机数字):code="""importrandomdeff():printrandom.randint(0,9)"""deff():passexeccodef()现在,如果我把execcode和f()放在它们自己的函数中并调用它,它就不起作用了。deftest():execcodef()test()它说NameError:globalname'random'isnotdefined. 最佳答案 这个怎么样:deftest():exec(code,globals())f(

python - 将 PyPy 编译为 Exe

我知道如何使用cx_freeze将CPython文件编译为exe,但是否可以使用PyPy将简单程序编译为Exe? 最佳答案 据我所知,没有现成的方法或教程来说明如何使用PyPy解释器从程序中创建EXE。恐怕要让事情顺利进行并非易事。原则上,有两种方法可以考虑使用PyPy的翻译来获取EXE文件,使用PyPy解释器或编写自己的RPython程序(PyPy解释器本身就是一个RPython程序,即使用Python的受限子集)。如果您的程序使用RPython的受限子集并且没有依赖项,您可以考虑使用pypy/translator/goal中的翻

python - 将 PyPy 编译为 Exe

我知道如何使用cx_freeze将CPython文件编译为exe,但是否可以使用PyPy将简单程序编译为Exe? 最佳答案 据我所知,没有现成的方法或教程来说明如何使用PyPy解释器从程序中创建EXE。恐怕要让事情顺利进行并非易事。原则上,有两种方法可以考虑使用PyPy的翻译来获取EXE文件,使用PyPy解释器或编写自己的RPython程序(PyPy解释器本身就是一个RPython程序,即使用Python的受限子集)。如果您的程序使用RPython的受限子集并且没有依赖项,您可以考虑使用pypy/translator/goal中的翻

python - python exec() 中的全局变量和局部变量

我正在尝试使用exec运行一段python代码。my_code="""classA(object):passprint'locals:%s'%locals()print'A:%s'%AclassB(object):a_ref=A"""global_env={}local_env={}my_code_AST=compile(my_code,"MyCode","exec")exec(my_code_AST,global_env,local_env)printlocal_env导致以下输出locals:{'A':}A:Traceback(mostrecentcalllast):File"py

python - python exec() 中的全局变量和局部变量

我正在尝试使用exec运行一段python代码。my_code="""classA(object):passprint'locals:%s'%locals()print'A:%s'%AclassB(object):a_ref=A"""global_env={}local_env={}my_code_AST=compile(my_code,"MyCode","exec")exec(my_code_AST,global_env,local_env)printlocal_env导致以下输出locals:{'A':}A:Traceback(mostrecentcalllast):File"py