变量作用域

观察以下代码

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不相关了

相关推荐
程序员雷欧几秒前
LongAdder
开发语言·python
月光船幽幽11 分钟前
分层阈值规避归藏协议过度重置
人工智能·python
鱼子星_13 分钟前
【C++】反向迭代器:反向迭代器的底层认识与模拟实现
开发语言·c++·笔记·stl
名字还没想好☜15 分钟前
Java 用 MethodHandle 替代反射:调用性能实测、invokeExact 的坑与缓存
java·开发语言·缓存·反射·methodhandle
SMF191917 分钟前
【Linux】完美解决缩略图工具gm调用java.io.FileNotFoundException: gm问题
java·开发语言·python
㳺三才人子19 分钟前
初探 Data Analysis - Matplotlib
python·plotly·pandas·matplotlib
念何架构之路22 分钟前
路由注册:RouterGroup(routergroup.go)
开发语言·后端·golang
Darkwanderor30 分钟前
C++的流简介和简单使用
开发语言·c++
Python私教30 分钟前
0、null、未采集:AI Agent 反馈系统最容易踩的语义坑
人工智能·python
北斗落凡尘39 分钟前
LangGraph 入门实战(5)
python·langchain