python笔记 函数的作用域上

131 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

0 环境

  • 编辑器:idea或vscode
  • 系统版本:windows10
  • python版本:3.9.6

1 概念

在没学函数前,是不太接触到作用域的,毕竟所写的代码都在main下,现在有函数就不一样了。

2 全局作用域

在函数的外面,定义并初始化a,也被称为全局变量,内部函数a+1,会报错,不能直接使用全局变量的a,但你能在函数中打印a的值。网上这么的,每个程序都有一个全局作用域,相对于就有一个局部作用域。有种只读的赶脚。

a = 1

def inc():
    a += 1

if __name__ == '__main__':
    inc()

image.png

3 局部作用域

在函数体内定义并使用,一旦出了函数,那就不好使了。

4 全局变量(global关键字)

假如我们需要用到全局变量,对其变量进行操作。global关键字就出现了。它可以提升该变量的作用域为全局变量。

a = 1

def inc():
    global a
    a += 1
    print(a)

if __name__ == '__main__':
    inc()

image.png

假如如下代码的 a变量,你在函数外没有定义这个a变量(但是不建议这样做),直接使用global a,a+1也是可以的,但是其他的函数调用这个a+1会报错。global提升对本作用域有用,但是其他作用域也想操作该变量,需要在global标记一下。 image.png

5 小结

全局作用域和局部作用域,正常都有了解,但是全局变量(global关键字),就有点像vip会员的意思,你这个函数global 变量,就相当于冲了会员,就可以对全局变量进行操作,而且其他的函数没有冲global会员,不好意思,只能看它的直播,当你不确定global用的对不对,不清楚它会带来什么影响,请慎用,最好不要使用它。