📜  python 变量定义 - Python (1)

📅  最后修改于: 2023-12-03 15:19:08.142000             🧑  作者: Mango

Python 变量定义

Python 是一种高级编程语言,它支持非常丰富且动态的变量定义。在 Python 中,变量是一种动态类型数据,可以用来存储各种不同类型的数据,例如数字、字符串、列表、元组等等。本文将为您介绍 Python 中如何定义变量以及一些相关的知识点。

基本语法

在 Python 中定义变量非常简单,只需要使用等号(=)即可,例如:

a = 1

这个代码片段定义了一个叫做 a 的变量,并把值 1 赋给了它。在 Python 中,等号不是严格的赋值符号,而是一个“将右边的值赋给左边的变量”的语法糖。

Python 是一种动态类型语言,这意味着变量类型是根据赋值运算符右侧的表达式来推导的。例如:

a = 1       # a 是整型
a = 'hello' # a 是字符串

在这个例子中,a 的类型在第一次赋值时是整型,因为右边是一个整数,但在第二次赋值时,a 的类型变成了字符串,因为右边是一个字符串。

Python 中的变量名是区分大小写的,而且命名规则有些限制。变量名必须以字母或下划线开头,后面可以跟字母、数字或下划线。变量名不能以数字开头,也不能是 Python 的关键字(如 and、class、if 等)。

多重赋值

Python 还支持多重赋值,这是一种将多个变量绑定到多个值的便捷方式。例如:

a, b, c = 'foo', 'bar', 'baz'

这段代码将 'foo'、'bar'、'baz' 依次赋值给 a、b、c 这三个变量,即 a = 'foo',b = 'bar',c = 'baz'。

如果右侧的值数量不足变量数量,会抛出 ValueError 异常。如果右侧的值数量超过变量数量,那么多余的值会被自动忽略。

元组赋值

多重赋值背后的原理是元组赋值。元组赋值是一种将多个变量绑定到一个元组的便捷方式。例如:

t = ('foo', 'bar', 'baz')
a, b, c = t

这段代码和前面那个例子等价,都会将 'foo'、'bar'、'baz' 依次赋值给 a、b、c 这三个变量。

全局变量和局部变量

在 Python 中,变量的作用域有两种:全局作用域和局部作用域。

全局变量是在程序任何位置都可以访问的变量。在函数外定义的变量就是一个全局变量。例如:

a = 1

def foo():
    print(a)

foo() # 输出 1

这段代码中,变量 a 是在函数外定义的,所以它是一个全局变量。在函数内部,我们可以直接使用它。

在函数内部定义的变量是局部变量。局部变量只能在函数内部使用,函数外部无法直接访问。例如:

def foo():
    a = 1
    print(a)

foo() # 输出 1
print(a) # 抛出 NameError 异常

这段代码中,变量 a 是在函数内部定义的,所以它是一个局部变量。我们不能在函数外部直接使用它。

global 和 nonlocal 语句

如果我们需要在函数内部修改全局变量,需要使用 global 语句,例如:

a = 1

def foo():
    global a
    a = 2
    print(a)

foo() # 输出 2
print(a) # 输出 2

这段代码中,我们在函数内部使用了 global 语句来声明变量 a 是一个全局变量。然后我们修改了 a 的值,并在函数内部打印了它。在函数外部,我们也可以通过 a 来访问修改后的值。

在嵌套函数中,如果我们要修改外层函数中的变量,可以使用 nonlocal 语句,例如:

def outer():
    a = 1
    b = 2

    def inner():
        nonlocal a
        a = 3
        print(a, b)

    inner() # 输出 3 2
    print(a, b) # 输出 3 2

outer()

这段代码中,我们在 inner 函数中使用了 nonlocal 语句来声明变量 a 是一个外层函数的局部变量。然后我们修改了 a 的值,并在 inner 函数内部打印了它。在 outer 函数内部,我们也可以通过 a 和 b 来访问修改后的值。

总结

Python 的变量定义非常灵活。在 Python 中,变量名可以包含字母、数字、下划线以及后退(其中后退不是很常用)。变量名也不能以数字开头,而且不能是 Python 的关键字。Python 中支持多重赋值和元组赋值,可以很方便地将多个变量绑定到多个值上。在 Python 中,变量的作用域有两种:全局作用域和局部作用域。如果我们需要在函数内部修改全局变量,可以使用 global 语句;如果我们需要在嵌套函数内部修改外层函数的变量,可以使用 nonlocal 语句。