震惊!Python竟然是这样的修改全局变量

本文通过一个具体的Python示例,解释了如何在函数内部修改定义在函数外部的变量。与Java不同,Python允许使用global关键字来标记并直接修改外部变量。

Python变量问题

Python函数内部修改函数外部的变量

我比较熟悉Java,所以今天在修改一个函数外部的一个变量时调试了好久,原来是这样修改一个外部变量。

python代码如下

x = 20


def func():
    global x
    x = 100
    print(str(x))  # 打印这个外部变量


if __name__ == '__main__':
    func()

打印结果为 100
原来要想修改函数外部变量,只需要 在函数里面将外部变量标记为global 即可。Java中则没有这个关键字。

Python 中创建全局变量有以下几种常见方法: ### 直接在模块中定义 可以在函数体外部直接定义变量,这些变量就是全局变量,它们可以在整个模块范围内访问。示例如下: ```python # 定义全局变量 global_variable = 10 def test_function(): print(global_variable) test_function() ``` 这种方式定义的全局变量在整个模块内都可以被访问和使用。 ### 使用 `global` 关键字在函数修改全局变量 当需要在函数内部修改全局变量的值时,需要使用 `global` 关键字进行声明。示例如下: ```python num = 1 # 这是一个全局变量 def update(): global num # 使用 global 声明 num,在函数中就可以修改全局变量的值 num += 1 # 全局变量可以参与运算 return 0 print(num) # 调用函数前查看全局变量 update() # 调用函数修改全局变量 print(num) # 调用函数后查看全局变量 ``` 如果函数变量有赋值语句,而这个变量名又刚好同全局变量一样,若希望使用的是全局变量就要加 `global`,反之函数就会创建自己的局部变量[^2][^3]。 ### 在单独的模块中定义全局变量 可以创建一个专门的模块来管理全局变量。示例如下: ```python # global_variable.py 文件 global_dict = None def set_value(value): # 定义全局变量 global global_dict global_dict = value def get_value(): # 获取全局变量 try: return global_dict except KeyError: return '不存在的key' ``` 在其他模块中使用这些全局变量: ```python import global_variable # 设置全局变量的值 global_variable.set_value(20) # 获取全局变量的值 value = global_variable.get_value() print(value) ```
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值