变量的深入学习
我们在平时开发过程中,了解到变量是存储数据的即可。但是其实他的底层原理还是比较复杂的。我们可以做一个简单的了解,对我们理解编程,或者以后解决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