如何在不使用global关键字的情况下修改字符串变量val的值?
不用global关键字修改全局变量val的方法
当然可以,你的原代码没生效是因为函数里的val是局部参数,和全局的val是完全独立的两个变量,修改局部的val不会影响全局的,而且你调用函数后也没把返回值赋值给全局val,所以print(val)还是输出test。
下面给你两种可行的实现方式:
方法一:利用函数返回值重新赋值
直接让函数返回新值,然后把全局val重新赋值为这个返回结果:
val = 'test' def setval(): return 'new' # 把函数返回的新值赋值给全局val val = setval() print(val) # 输出:new
方法二:用可变对象包裹变量
把val放到列表、字典这类可变对象里,函数内修改可变对象的内部元素,不需要global就能影响外部的对象:
# 用列表包裹原变量 val = ['test'] def setval(arr): # 修改列表的第一个元素 arr[0] = 'new' setval(val) print(val[0]) # 输出:new
内容的提问来源于stack exchange,提问作者CrotaL
相关产品推荐
相关产品推荐

