Python 变量的基本作用域规则是什么?

Python 变量的基本作用域规则是什么?

基于它们的范围,变量分为全局变量和局部变量。全局变量和局部变量的主要区别在于 全局变量 可以在整个程序中全局访问,而局部变量只能在它们被定义的函数或块内访问。

局部变量 是在函数内定义但其作用域仅适用于该函数的变量,与全局变量相反,后者在任何函数之外定义且具有全局作用域。换句话说,虽然全局变量可以在整个程序和所有函数内访问,但局部变量只能在初始化它们的函数内部访问。局部变量是在函数内部创建的变量,其只属于该函数。它不能在函数外的任何地方访问。让我们来看一下如何创建局部变量。

阅读更多:Python 教程

Python中的局部变量

局部变量是一种特殊类型的变量,当它声明的方法或语句块定义了变量的作用域和范围时可以使用。for each语句将其用作迭代变量,特定-catch子句将其用作异常变量,而using语句将其用作资源变量。

在声明它的方法或语句块中,它还可以用作值不可更改的常量。通过使用一个由编译器从其右侧表达式推导出类型的隐式类型局部变量来处理返回匿名类型的语言集成查询(LINQ)。这使得每个LINQ结果集可以创建一个自定义类型。

示例

让我们看个示例来创建一个局部变量。

def f():
   #local variable
   L = "Hello World"
   print(L)
# Driver code
f()

输出

输出如下。

Hello World

全局变量

仅当在函数中分配值或更改全局变量时,我们才需要使用全局关键字。对于打印和访问,不需要使用global。由于在f()内部对s进行赋值,Python“假设”我们要一个局部变量,这就是为什么第一句会抛出错误的原因。如果在函数内修改或创建变量而没有将其定义为全局变量,则被视为局部变量。

示例

下面是创建全局变量并访问它的示例。

pi = 3.142
radius = 8
def circle():
   #radius is a global varible
   global radius
   radius = radius * 2
   area_of_circle = pi * (radius) ** 2
   print("The area of circle is: ", area_of_circle)
circle()

输出

产生的输出如下。

The area of circle is:  804.352

封闭或非局部作用域

嵌套函数中指定的变量称为非局部变量。它表明该变量在范围上不能既是局部的又是全局的。nonlocal关键字用于生成非局部变量。内部函数嵌套在我们在以下代码中生成的外部函数中()。函数Inner()在outer()函数的范围内定义。对在inner()函数中声明的非局部变量进行的更改将反映在外部函数的输出中。

示例

以下示例演示用法

def Outer():
   x = "local"
   def Inner():
      nonlocal x
      x = "nonlocal"
      print("inner:", x)
   Inner()
   print("outer:", x)
Outer()

输出

输出如下。

inner: nonlocal
outer: nonlocal

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程