Python基础——函数——变量作用域

本文探讨了Python中函数内的变量作用域,包括全局变量和局部变量的区别。当全局变量与局部变量冲突时,函数内部优先使用局部变量。针对不可变类型如数字的全局变量,函数内无法直接修改,而可变类型如集合在函数内部可以被修改。通过使用`global`关键字,可以在函数内部修改全局变量。示例代码展示了如何在函数中改变全局变量的不可变类型。
摘要由CSDN通过智能技术生成

Python基础——函数——变量作用域

可变对象和不可变对象

全局变量:定义在函数外部的变量
局部变量:定义在函数体内的变量

#定义一全局变量total
total = 2021#不可改变————number类型
#定义一个全局变量set1
set1 = set([1,2,3])#可改变类型————set集合型
#定义一个函数
def func(a,b):
    total = a+b#定义一个和全局变量同名的局部变量
    #对set1作操作
    set1.add(total)
    return total

#调用函数
print('打印调用函数的返回值total:',func(1,3))
print('查看全局变量total:',total)
print('查看全局变量set:',set1)

输出:
在这里插入图片描述

全局变量和局部变量冲突时,优先使用局部变量

total = 2021#定义一个全局变量,——不可改变number类型
set1 = set([1,2,3])#定义全局变量——可变set集合类型
'''全局变量和局部变量冲突时,优先使用局部变量'''
def func(a,b):
    total = a+b
    set1 = set([4,5,6])
    set1.add(total)
    return total
print('打印调用函数的返回值total:',func(1,7))
print('查看全局变量total:',total)
print('查看全局变量set:',set1)#优先使用局部变量,全局变量未做改变

输出:
两个全局变量都没有被改变原因:
total:不可变类型
set1 :和局部变量发生冲突,从而函数使用局部变量,不调用全局变量
在这里插入图片描述

改变全局变量中的不可变类型

对于全局变量,在在函数内部没有global修饰时,不可变数据类型不能改变
要改变不可变全局变量,要在局部同名变量前用global修饰
可变数据类型,加不加global都可以改变

total = 2021#定义一个全局变量,——不可改变number类型
set1 = set([1,2,3])#定义全局变量——可变set集合类型
def func(a,b):
    global total
    total = a + b
    global set1
    set1 = set([4, 5, 6])
    set1.add(total)
    return total
print('打印调用函数的返回值total:',func(1,7))
print('查看全局变量total:',total)
print('查看全局变量set:',set1)

输出:
用global 修饰的total和set1都发生了改变
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

企鹅家的北极熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值