关于python的全局变量和局部变量、以下不正确_python3的全局变量和局部变量

局部变量

定义在函数体内部的变量称为局部变量

函数的形参也是局部变量

局部变量的作用范围只在声明该局部变量的函数体内

局部变量在函数调用时被创建,在函数调用完成后自动销毁

全局变量

定义在函数体外,模块内的变量称为全局变量

全局变量在所有函数体内都可以进行访问

全局变量在函数体内不能直接修改绑定关系a = 100

def test():

a = 50

print(a)

test()

print(a)

输出结果:

50

100

python3的作用域

作用域也叫命名空间,是访问时查找变量的范围空间

python3有四个作用域

作用域

英文解释

英文简写

局部作用域(函数内)

Local(function)

L

外部嵌套函数作用域

Enclosing function locals

E

函数定义所在模块作用域

Global(module)

G

python内置模块的作用域

Bui

B

当访问一个变量的时候,变量查找顺序是先查找本地变量,然后是包裹此函数外部的函数内的变量,之后是全局变量,最后是內建作用域内的变量 。

在默认情况下,变量名赋值会在当前作用域内创建变量和修改变量。

v = 100 # 全局作用域

def fun1():

v = 200 # 外部嵌套函数作用域

print('fun1.v=', v)

def fun2():

v = 300 # 局部作用域

print('fun2.v=', v)

print(max) # max函数都没有创建,在内建函数作用域中,只读,不能改变

# 可以在其余三个作用域重新创建。

fun2()

fun1()

print("全局变量.v=", v)

print(max) # max变量定义在内置模块的作用域,是解释执行器提前定义好的

global关键字

作用

声明一个或多个变量,这些变量的作用域为模块级的作用域的变量,即全局变量

将赋值变量映射到模块文件内部的作用域

a = 10

def test():

global a

a = 5

print(a)

test()

print(a)

输出结果:

5

5

说明:

全局变量如果要在函数内部被赋值,则必须经过全局声明,否则会被认为是局部变量

不能先声明局部变量,再用global声明为全局变量

global变量列表里的变量名不能出现在次作用域内的形参列表

nonlocal语句

nonlocal声明的变量的作用域是外部嵌套函数作用域

def test():

a = 10

def test2():

nonlocal a

a = 5

print(a)

test2()

print(a)

test()

说明:

nonlocal语句只能在被嵌套函数内部进行使用

访问nonlocal变量将对外部嵌套函数作用域内的变量进行操作

当有两层或两层以上函数嵌套时,访问nonlocal变量只对最近一层的变量进行操作

nonlocal语句的变量列表的变量名不能出现在此函数的参数列表里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值