python在函数中改变外部变量

本文详细解析了Python中如何在函数内部修改全局变量,以及Python的参数传递机制。通过实例说明了当函数接收到可变对象引用时,可以直接修改原始对象;而接收到不可变对象引用时,则无法直接修改原始对象。同时,介绍了如何使用global关键字在函数内部修改外部变量。
部署运行你感兴趣的模型镜像

python在函数中改变改变外部变量

python在函数中修改变量值的方法

和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值’来传递对象。

在函数中修改外部变量

  1. 函数中使用global,将临时变量改变为全局变量
x = 1
def test():
    global x
    x = 2
    print(x)

test()    #2
print(x)    #2
  1. 不定义全局变量,函数里面的变量不影响外边,而且函数不能调用外边的变量,相当于两个变量了。
x = 1
def test():
    x = 2
    print(x)

test()    #2
print(x)    #1
  1. 在函数外边声明的变量,在函数里边是不能直接用的,正如2所说,他们属于两个不同的变量了。
x = 1
def test():
    print(x)    #Error
    x = 2
    print(x)

test()
print(x)

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Python 函数内修改全局变量的方法 在 Python 中,可以通过 `global` 关键字声明一个变量为全局变量,从而允许在其所在的函数内部对其进行修改。以下是具体方法和示例: #### 使用 `global` 关键字 当需要在一个函数中修改全局变量时,在该函数中通过 `global` 声明此变量即可。这会告知 Python 解释器该变量是全局作用域中的变量,而非局部作用域。 ```python x = 10 # 定义全局变量 x y = 20 # 定义全局变量 y def modify_global_variables(): global x, y # 声明 x 和 y 是全局变量 x = 100 # 修改全局变量 x 的 y = 200 # 修改全局变量 y 的 print(f"函数内部修改后的全局变量 x = {x}, y = {y}") # 打印修改后的[^3] modify_global_variables() # 调用函数 print(f"函数外部修改后的全局变量 x = {x}, y = {y}") # 验证全局变量已被修改 ``` 运行上述代码的结果如下: ``` 函数内部修改后的全局变量 x = 100, y = 200 函数外部修改后的全局变量 x = 100, y = 200 ``` #### 不使用 `global` 的情况 如果不使用 `global` 关键字,则在函数内部对同名变量的操作会被视为创建一个新的局部变量,而不会影响到全局变量。例如: ```python x = 10 # 全局变量 x def try_modify_without_global(): x = 20 # 创建了一个新的局部变量 x,未修改全局变量 x print(f"函数内部的局部变量 x = {x}") try_modify_without_global() print(f"函数外部的全局变量 x = {x}") ``` 运行结果表明,函数内的操作并未更改全局变量 `x` 的: ``` 函数内部的局部变量 x = 20 函数外部的全局变量 x = 10 ``` 因此,为了真正修改全局变量,必须显式地使用 `global` 关键字[^1]。 --- #### 注意事项 虽然可以使用 `global` 来修改全局变量,但在复杂程序设计中应谨慎使用。过度依赖全局变量可能导致代码难以维护和调试。推荐的做法是在函数间传递参数和返回来实现数据共享[^4]。 ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值