python里面变量作用域是什么?

这期内容当中小编将会给大家带来有关Python中函数和变量名的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

函数是Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构,用于将相关功能打包并参数化

Python中可以创建4种函数:

1)、全局函数:定义在模块中,每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文

2)、局部函数:嵌套在其它函数中

3)、lambda函数:表达式

4)、方法:与特定数据类型关联的函数表,并且只能与数据类型关联一起使用

Python提供众多内置函数

Python创建、改变、查找变量名都是在名称空间中进行,在代码中变量名被复制的位置决定了其能被访问到的范围

如图,函数可以通过多种方法获得输入以及产生输出:

1)、def是一个可执行语句,可以出现在任何能够使用语句的地方,甚至可以嵌套在其它语句中,例如if或while语句。

2)、def创建一个对象并将其赋值给一个变量名(即函数名)

3)、return用于返回结果对象,为可选参数,无return语句时函数自动返回none对象。返回对个值时,使用逗号隔开,并组合称一个元组对象返回

4)、def语句运行之后,可以在程序中使用函数后附加括号进行调用,每次对函数的调用都会创建一个新的本地作用域,赋值的变量除非声明为全局变量,否则均为本地变量

5)、所有的变量名都可以归纳为本地、全局或内置的(由__builtin__模块提供)

例1:交互式模式下创建并调用函数

例2:编辑test.py,测试全局变量和函数内本地变量

52 #调用函数产生的输出,函数内变量

27 #print产生的输出,本地变量

例3:编辑test.py,测试全局变量和函数内变量的作用域

#函数内部可以使用全局变量,局部同名变量不影响全局变量,并且全局变量无定义时无法自行使用函数内同名变量。

#函数内部赋值的变量可以使用global声明为全局变量,则全局中均会调用该变量值。

例4:编辑test.py,定义全局变量

#本地变量,函数内部声明“global y”后该参数不会被调用

变量名引用分三个作用域进行

首先是本地、之后是函数内、接着是全局、最后是内置,作用域越小,优先级越高

上述就是小编为大家分享的Python中函数和变量名的作用是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

python 和 js 变量作用域问题的不理解

本人目前刚学习python,遇到了关于变量作用域的一些问题,如下:
下面这个就不是非常明白
这里新声明了一个变量b,对a进行了引用,然后就可以访问到a了,不是明白为什么
另外如果将代码1换成js,结果又不同
在js中不仅仅能够访问到全局变量,甚至可以对全局变量进行修改,所以在js里面作用域机制和python又有什么区别?
另外,本人所了解到js与python都是静态作用域,原理应该相同,但是上面显示的结果却很不一样,麻烦能有前辈清楚的解答一下,本人才学疏浅,见谅!

我来给你解释一下吧,对于举例中的python和js中var定义的变量,他们作用域规则相似变量作用域在定义它的函数内(整个python或js文件可以看做一个大函数)根据第1点:函数内出现与全局中定义的同名变量,在函数内,它会覆盖全局的。不同点js函数内定义变量要明确在变量名前写上var(我们先不讨论let和const),否则就是直接调用全局的python中定义变量直接写变量名pyhton函数中如果想给全局变量赋值,需要在赋值之前写上global变量名基于以上前提知识,请看注释中的解释Python的代码a=3#全局的adeff():a+=4#a=a+4,相当于先重新定义一个新变量a'(函数体f内的a),#然后执行a'+4时报错:”没有赋值就使用“print(a)#没执行到这步就,已经在上面报错了。f()#调用时被报错a=3#全局的adeff():globala#加上这句后,下面再给赋值,就是针对全局变量了。a+=4#全局的a被加4,变为7了print(a)#f()#7a=3deff():b=a+4#此处的a是全局的aprint(a)#打印的是全局的a,没上面那句b的赋值此处也是全局的af()#3Javascript的代码vara=3constf=()=>{a+=4//没有用var,此处引用的是全局aconsole.log(a)}a//3此处因为还没执行f函数,a还没有被改变f()//7你的问题描述中写的4,正确是7a//7执行过f(),全局的a已经被改变

打开App,查看更多内容

我要回帖

更多关于 Python全局变量的作用域是 的文章

 

随机推荐