Python 变量


Python中变量是一个容器,可以将变量看做一个盒子,对变量赋值,就是往盒子中放一个对象(数据)。


对象有类型和值,变量只是对象的引用。同一个变量在不同时间可以引用不同类型的对象。

变量类型

Python有两种变量:

  • 全局变量(global variable)
  • 本地变量(local variable)

如果只在函数中使用变量(不对变量赋值),则变量是全局的。如果变量在函数内被赋值,则变量是本地的;如果变量在函数内使用globl声明,则变量是全局的。

下面是变量类型的例子:

#!/usr/bin/python

x = 2

def test():
    # x is global
    print('x =', x) # 2

test()

def test2():
    # x is local
    x = 3;
    print('x is', x)    # 3

test2()
print('x =', x) # 2

def test3():
    # x is global
    global x
    x = 5

test3()
print('x =', x) # 5

变量赋值

可以给一个变量赋值,也可以在一行中给多个变量赋值。在不同时间,可以给同一个变量赋值不同类型的对象。

下面是变量赋值的例子:

#!/usr/bin/python

i = 2
i2 = i3 = 5;
b, f, s = True, 1.2, 'hello'
print(i, i2, i3, b, f)  # 2 5 5 True 1.2

print('s =', s, type(s))    # hello <class 'str'>

s = [1, 2]
print('s =', s, type(s))    # [1, 2] <class 'list'>

None对象

给一个变量赋值为None,就是重置变量为不引用任何值(对象)。None相当于其它语言中的空指针。比较变量和None,使用is而不是==。

下面是None对象的例子:

#!/usr/bin/python

f = None
i = 2
if f is None:
    print('f is None')  # f is None

if i is not None:
    print('i is not None')  # i is not None

检测变量是否定义

如果globals()和locals()函数返回值中都不存在指定变量,则表示没有定义该变量。

下面是检测变量是否定义的例子:

#!/usr/bin/python

x = 1

def test():
    y = 2
    print('locals = ', locals())    # {'y': 2}
    print('globals = ', globals())
    if 'y' in locals() or 'y' in globals():
        print('y exist');   # y exist

test();

print('locals2 = ', locals())
print('globals2 = ', globals())
if 'y' in locals() or 'y' in globals():
    print('y exist');

变量命名规则

  • 变量名只能包含字母、数字和下划线。
  • 变量名不能以数字开头。
  • 变量名区分大小写。