python函数中的变量取出来_如何在Python中获取/设置函数的局部变量(从外部)?

Glenn Maynar..

16

没有.没有运行的功能没有本地人; 它只是一个功能.询问如何在函数未运行时修改函数的本地函数,就像询问如何在程序未运行时修改程序的堆.

但是,如果你真的想要,你可以修改常量.

def func():

a = 10

print a

co = func.func_code

modified_consts = list(co.co_consts)

for idx, val in enumerate(modified_consts):

if modified_consts[idx] == 10: modified_consts[idx] = 15

modified_consts = tuple(modified_consts)

import types

modified_code = types.CodeType(co.co_argcount, co.co_nlocals, co.co_stacksize, co.co_flags, co.co_code, modified_consts, co.co_names, co.co_varnames, co.co_filename, co.co_name, co.co_firstlineno, co.co_lnotab)

modified_func = types.FunctionType(modified_code, func.func_globals)

# 15:

modified_func()

这是一个黑客攻击,因为没有办法知道co.co_consts中的哪个常量是哪个; 这使用了一个标记值来计算出来.根据您是否可以足够约束您的用例,这可能就足够了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值