变量作用域

观察以下代码

python 复制代码
def getPoint():
    x = 10
    y = 20
    return x, y

x, y = getPoint()

在这个代码中,函数内部存在x,y 函数的外部也有x,y.但是这两组x,y不是相同的变量,而只是恰好有一样的名字

变量只能在所在的位置的内部生效

在函数getPoint()内部定义的x,y只是在函数的内部生效,一旦出了函数的范围这两个变量就不在生效

python 复制代码
def getPoint():
    x = 10
    y = 20
    return x, y

getPoint()
print(x, y)

在不同的作用域中,允许出现相同的变量名

python 复制代码
x = 20

def test():
    x = 10
    print(f"函数内的x:{x}")
test()
print(f"函数外的x:{x}")

在函数内部的变量叫"局部变量", 不在任何函数内部的变量叫"全局变量"

如果函数内部尝试访问不到的变量在局部不存在,就会去尝试去全局作用域中查找

python 复制代码
x = 10

def test():
    print(f"x = {x}")
    
test()

如果想在函数内部,修改全局变量的值,需要使用global关键字声明

python 复制代码
x = 20

def test():
    global x
    x = 10
    print(f"函数内的x:{x}")

test()
print(f"函数外的x:{x}")

如果此处没有global,则函数内部的x = 10就会被视为是创建一个局部变量x,这样就和全局变量x不相关了

相关推荐
天天进步20151 小时前
拒绝“玄学”Bug:C++ 多线程调试指南与 ThreadSanitizer 实战
开发语言
透明的玻璃杯1 小时前
VS2015 +QT5.9.9 环境问题注意事项
开发语言·qt
卿雪1 小时前
Redis的数据类型 + 底层实现:String、Hash、List、Set、ZSet
数据结构·数据库·redis·python·mysql·缓存·golang
清水白石0081 小时前
什么是猴子补丁(Monkey Patch)?生产环境能用吗?——实战导读
python·安全·系统安全
say_fall1 小时前
C语言编程实战:每日一题:用队列实现栈
c语言·开发语言·redis
xiaoqi9766336901 小时前
免费文字转语音助手 python+edge_tts+FFMPEG
python·edge·ffmpeg
董世昌411 小时前
前端跨域问题:原理、8 种解决方案与实战避坑指南
开发语言·前端·javascript
liupenglove1 小时前
go-echarts基础使用方法
开发语言·golang·echarts
APIshop1 小时前
用“爬虫”思路做淘宝 API 接口测试:从申请 Key 到 Python 自动化脚本
爬虫·python·自动化