Python学习笔记--函数的作用域

本文介绍了Python中的函数作用域,包括全局作用域、局部作用域、上下级作用域、全局变量`global`、闭包函数、局部变量`nonlocal`以及默认参数作用域。讲解了如何在不同作用域中访问和修改变量,强调了使用`global`和`nonlocal`关键字的注意事项,以及在使用可变类型作为默认参数时的潜在问题。最后,作者指出对这部分知识的理解尚待深入。
摘要由CSDN通过智能技术生成

定义

一个变量的可见范围叫做这个变量的作用域
python是一个非块级作用域的语言

>>> for i in range(10):
...     name = i
...
>>> print(name)
9
>>> print(i)
9

这里变量是在for循环中定义的,但是循环结束之后这些变量仍然可以继续使用。这就是非块级作用域的语言。

全局作用域

>>> x = 1
>>> def inc():
...     x += 1
...
>>> inc()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in inc
UnboundLocalError: local variable 'x' referenced before assignment

这里报错的原因是变量x并没有被事先声明。
这就是作用域的关系了,x是在函数的外部被定义的,因此x也被称为全局变量,在函数内部是看不到x的。
函数内部是一个局部的作用域,不能直接使用全局作用域中的变量x。
但是当我们直接print时是可以用的,(不能使用x来进行运算),如下:

>>> x = 1
>>> def fn():
...     print(x)
...
>>> fn()
1

这是因为每个程序都由一个全局作用域,而在全局作用域里的局部作用域会随着我们层次的变深出现多个局部作用域。

局部作用域

>>> def fn():
...     xx = 1
...     print(xx)
...
>>> fn()
1
>>> print(xx)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'xx' 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值