Python中如何为函数参数赋值?能否在函数内修改传入变量值?
如何让Python函数内部修改外部变量并输出10?
当然可行,但你原来的写法没法达到目的——这是因为整数是Python的不可变类型,函数里的param只是外部n的一个局部引用副本,当你给param = 10赋值时,其实是创建了一个新的整数对象,和外面的n完全没关系了。
下面给你几种实用的解决思路:
方法1:返回修改后的值(最推荐)
直接让函数返回目标值,然后在外部把返回值重新赋值给n,这是Python里最清晰、最符合规范的做法:
def init_param(param): return 10 # 返回新值 n = 1 n = init_param(n) print(n) # 输出10
方法2:用可变类型包裹不可变值
如果不想用返回值的方式,可以用列表这类可变类型来包裹整数。因为可变类型的修改会直接作用在原对象上,不会创建新对象:
def init_param(param): param[0] = 10 # 修改列表里的元素 n = [1] # 用列表包裹初始值 init_param(n) print(n[0]) # 输出10
方法3:使用global关键字(不推荐)
如果n是全局变量,可以在函数里用global声明来直接修改它,但这种方式会破坏代码的封装性,让函数和全局变量强耦合,除非必要不建议使用:
def init_param(): global n # 声明要修改全局变量n n = 10 n = 1 init_param() print(n) # 输出10
内容的提问来源于stack exchange,提问作者facha
相关产品推荐
相关产品推荐

