python 函数变量的作用域

python 函数变量的作用域

1.出现的原因

变量的作用域:变量可以被使用【被访问】的范围

程序中的变量并不是在任意的语句中都可以被访问,访问权限取决于这个变量被定义在哪个位置

2.作用范围划分

局部作用域:L【Local】一般定义在函数中

函数作用域:E【Enclosing】 将变量定义在闭包外的函数中

全局作用域:G【Global】整个文件都可以调用

內建作用域:B【Built-in】python环境的内置,python环境都可以用

代码演示:

# 函数:有作用域
# 局部变量:函数内部的变量
#   特点:1.内存会被自动释放/回收(调用后会自动回收内存,退出函数就不可以使用)
#        2.不会被污染
# 全局变量:整个文件都可以使用的变量
#   特点:1.内存不会释放(消耗内存,但是可以一直使用),
#         2.容易被污染  (可能被其他地方修改)
#1.不同作用域变量的定义
num4 = int(2.9)    #B;內建作用域
num3 =  3    #G;全局作用域
def outer():
 num1 = 1    #E:函数作用域

 def inner():
     num2 = 2   #L:局部作用域

     #注意:当所有的变量不同名的时候,在闭包中,可以任意访问四种不同作用域对应的变量
     print(num4,num3,num2,num1)

 return  inner

f = outer()
f()
3.变量的查找规则

查找的顺序:L------>E------>G------>B【极端情况:当所有的变量同名的情况下】

代码演示:

#变量的查找规则

#注意:全局作用域和内置作用域,当重名的时候,谁出现在后面,则先匹配到谁
x = 0
x1 = int(3.3)

def outer1():
 j = 1
	
 def inner1():
     i = 2
     #【就近原则】
     print(x)

 return  inner1

f1 = outer1()
f1()
4.全局变量和局部变量

全局变量:将变量定义在函数的外面

局部变量:将变量定义在函数的内部

注意:局部变量只能在其被声明的当前函数中使用,而全局变量可以在整个程序中使用

代码演示:

#全局变量
total = 0

def show():
 print(total)
show()

if True:
 total = 20
 print(total)

total = 10
print(total)

def add(arg1,arg2):
 #arg1,arg2,total1都属于局部变量
 total1 = arg1 + arg2
 print(total1)

add(10,20)
#print(total1)
# nonlocal 关键字
p = 1
def f4():
   p = 2

   def f5():

       # global p  #使用全局变量p
       nonlocal p  # 使用局部变量p=2
       p += 3
       print('p = ',p)
   f5()
f4()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值