主要内容 #
1. python内置函数:id() #
python内置函数id()用于获取对象的内存地址 内存地址可理解为内存条中,每一个数值的存放位置,这个位置可以用一连串数字表示 语法如下: add = id(object) 参数说明: object:需要获取地址的对象名 add: object的内存地址 功能:获取对象object的内存地址,该地址是个一连串的数字,表示该对象唯一的标识符。 例如:a = 16 b = 'dashima' c = [1, 2, 3] #分别打印对象a,b,c的地址 print(id(a)) #打印对象a的地址 print(id(b)) print(id(c))
2. 不可变类型:布尔型, 整型, 浮点型, 字符串, 元组 #
如果一个变量的内容一旦发生改变,该变量的内存地址(id)也随之发生改变, 那么该变量属于不可变类型。 id的改变,意味着创建了新的内存空间。 不可变类型包括:整型, 浮点型, 字符串, 元组 例如:
#布尔型
a = True
print('a=True的内存地址',id(a))
a = False
print('a=False的内存地址',id(a))
#整型
a = 16
print('a=16的内存地址',id(a))
a = 17
print('a=17的内存地址',id(a))
#浮点型
a = 16.01
print('a=16.01的内存地址',id(a))
a = 16.02
print('a=16.02的内存地址',id(a))
#字符串
a = 'dashima'
print("a='dashima'的内存地址",id(a))
a = 'python'
print("a='python'的内存地址",id(a))
#元组
a = (1, 2, 3)
print('a=(1, 2, 3)的内存地址',id(a))
a = (1, 2, 3, 0)
print('a=(1, 2, 3, 0)的内存地址',id(a))
3. 可变类型: 列表, 字典 #
如果一个变量的内容发生了改变,该变量的内存地址(id)依然不变, 那么该变量属于可变类型。 id没有被改变,意味着没有创建新的内存空间。 可变类型包括:列表, 字典 例如:
#列表
a = [1, 2, 3]
print('a=[1, 2, 3]的内存地址',id(a))
a[1] = 0
print('a=[1, 0, 3]的内存地址',id(a))
#字典
a = {'name':'dashima', 'score':99}
print("a={'name':'dashima', 'score':99}的内存地址",id(a))
a['name'] = 'python'
print("a={'name':'python', 'score':99}的内存地址",id(a))
4. 全局变量声明:global #
如果在函数中传入的参数为可变类型,那么在函数体内修改该参数,函数体外对应的变量也随之改变 例如:
#列表
def change_list(a):
a[1] = 0
print('函数体内,列表内容为:',a)
print('函数体内,列表id为:', id(a))
list1 = [1, 2, 3]
change_list(list1)
print('函数体外,列表内容为:',list1)
print('函数体外,列表id为:', id(list1))
如果在函数中传入的参数为不可变类型,那么在函数体内修改该参数,函数体外对应的变量不会被改变
例如:
#列表
def change_list(a):
a = 0
print('函数体内,变量a的内容为:',a)
print('函数体内,变量a的id为:', id(a))
a = 5
change_list(a)
print('函数体外,变量a的内容为:',a)
print('函数体外,变量a的id为:', id(a))
如果想在函数体内修改函数体外的不可变类型变量,则必须在函数体内使用global语句。
global的语法如下:
global var
参数说明:
var表示需要修改的全局变量
例如:
#列表
def F():
global a
a = 0
print('函数体内,变量a的内容为:',a)
print('函数体内,变量a的id为:', id(a))
a = 5
F()
print('函数体外,变量a的内容为:',a)
print('函数体外,变量a的id为:', id(a))