测牛学堂:软件测试python学习之深入理解变量

59 阅读2分钟

变量的深入学习

我们在平时开发过程中,了解到变量是存储数据的即可。但是其实他的底层原理还是比较复杂的。我们可以做一个简单的了解,对我们理解编程,或者以后解决bug,面试,都是有帮助的。
1我们在定义一个变量去存数据的时候,会在内存中开辟两个空间。
2变量所对应的内存空间中存储的其实是数据存储的地址。
3变量中保存的数据的地址,我们称之为引用。
4python中所有数据的传递,其实都是传递的引用。
5赋值运算符 = 可以改变改变变量的引用。并且只有= 可以改变。
常见面试题:

list1 = [1,2,3,]
list2 = list1

list1[0] = 9
print(list2) # [9, 2, 3]

可以看到的是,list2因为和list同时引用的是一个列表的数据,所以当列表里面的元素修改的时候,打印list2是同样的改变。

可变类型和不可变类型

根据内存中的数据是否允许修改,将数据类型分为可变类型和不可变类型。
可变类型:可以被修改:列表,字典
不可变类型:不可以被修改。数字类型,字符串,元组

变量范围划分(局部变量和全局变量)

局部变量:在函数内部定义的变量,称为是局部变量。
特点:
1 局部变量只能在当前函数的内部使用
2 可以在不同函数定义变量名相同的局部变量
3 局部变量在函数执行的时候被创建,在函数执行结束后被删除
4 形参就是局部变量
5如果想要在外部使用局部变量,可以通过函数的return返回出去使用

def fn1():
    num1 = 10
    print(num1)

def fn2():
    num1 = 20
    print(num1)

fn1() # 10
fn2() # 20

def fn3():
    num3 = 30
    return num3
num3 = fn3()
print(num3) # 30

全局变量:
1在函数外部定义的变量就是全局变量,全局变量可以在任意的函数内部读取到。
2 在函数内要修改全局变量的引用,需要使用global关键字
3 如果函数的局部变量和全局变量的名字相同,函数内部使用局部变量,即就近原则

num1 = 20
def fn():
    global num1
    num1 = 10

fn()
print(num1) # 10