重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
局部变量是不可以再函数外访问的。
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比承留网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式承留网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖承留地区。费用合理售后完善,10年实体公司更值得信赖。
如果坚持访问,有两个办法:
1)把a修改成全局变量;
2)把function2定义在function1的内部。
这涉及到变量的生命周期问题,一般的,在函数里面声明的变量在函数外是不起作用的。
一个比较简单的解决办法是你在函数外就先声明这个变量,声明成全局变量。然后在函数里面进行操作和赋值。
最后就能在函数外获取变量的值了。例如:
123456 x = 0def a(): x = 2if __name__ == '__main__': a() print x
最终x打印出来的结果就是2
import inspect
from demo import demo
#传入函数,改变函数内部变量a,从a=1改变成a=2
def cfunc(func):
#当前位置的全部局部变量
lc=locals()
#获得函数的内容
func_code=inspect.getsource(func)
#使用replace改变函数内部的变量
func_code=func_code.replace('a=1','a=2')
#动态创建函数
exec(func_code)
#获得函数并返回
res_func=lc[func.__name__]
return res_func
demo=cfunc(demo)
demo()
你写的只是引用,也可以说读取是可以的,但不能修改。
比如这样写,外面的i 仍然=0