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

一个程序的所有变量并不是在任何位置都可以被访问。每个变量都有自己的作用域,更通俗地讲,就是在什么范围是可用。根据作用域,我们可以将变量氛围两种类型:

  • 局部变量
  • 全局变量

1.局部变量

每次函数的调用都会创建一个局部变量。

def f():
    x=10
    return x*x
print(f())
   print(x)
NameError: name 'x' is not defined

当我们输出x的时候,报错了。由此我们可以看出“x=10”发生在定义函数的内部,变量x是局部变量。当我们在f()外访问x时,超出了x的作用域,于是就会报错。

2.全局变量

def f():
    x=10
    return x*x
x=1000
print(x)

1000

第一个x在函数定义的范围内,而第二个x在函数之外赋值。由上面我们可以推出。
当代码中只有一个x变量,且在函数之外赋值,那么它就是全局变量。

3.全局变量和局部变量同名

def f():
   x=5
   print('f内部:x=',x)
   return x*x
x=10
print('f()=',f())
print('f外部:x=',x)
>>>
f内部:x= 5
f()= 25
f外部:x= 10

当既能访问局部变量,哟能访问全局变量的时候,Python遵循:局部优先。也就是当局部变量和全局变量同名的时候,局部变量屏蔽全局变量。

注意
如果一定要在函数定义中访问全局变量的话,就使用关键字global声名。

def f():
	global x
    x=10
    return x*x
print(x)
>>>
10
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值