跳至正文
View Categories

2 min read

主要内容 #

  • python内置函数:id()
  • 不可变类型:布尔型, 整型, 浮点型, 字符串, 元组
  • 可变类型: 列表, 字典
  • 全局变量声明:global
  • 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))

    5. 小结 #

  • python内置函数id()用于获取对象的内存地址
  • 不可变类型: 变量的内容一旦发生改变,该变量的内存地址(id)也随之发生改变
  • 可变类型: 变量的内容发生了改变,该变量的内存地址(id)依然不变
  • 如果想在函数体内修改函数体外的不可变类型变量,则必须在函数体内使用global语句
  • OJ训练题 #

    1、饮料瓶回收机 – ★
    2、回力车 – ★
    3、聪明的小白 – ★★
    4、字符串连接 – ★★
    5、最佳路径 – ★★★