首页 > 其他分享 >可变和不可变数据类型

可变和不可变数据类型

时间:2024-01-13 23:24:45浏览次数:33  
标签:tuple hqq 不可 数据类型 可变 print id

【一】可变数据类型

  • 对于可变数据类型(如列表,字典等),在函数中修改参数会影响原始对象

【1】字典

dic = {'name': 'Green', 'sex': 'male', 'age': '22'}
print(id(dic))  # 1210849384512
# 修改字典中的值
dic['name'] = 'hqq' # 2359802091584
print(id(dic))
# 对字典进行操作时,值改变的情况下,字典的id也是不变的,所以字典也是可变数据类型

【2】元组

tuple_1 = ('green', 'hqq', [22, '10k'])
tuple_1[1] = 'tom' # 报错:TypeError
tuple_1.append('good') # 报错:TypeError
  • 元组内元素无法修改指的是元组内索引指向的内存地址不能被修改
tuple_1 = ('green', 'hqq', [22, '10k'])
print(tuple_1) # ('green', 'hqq', [22, '10k'])
print(id(tuple_1)) # 1730656266560
tuple_1[2][1] = 11
print(tuple_1) # ('green', 'hqq', [22, 11])
print(id(tuple_1)) # 1730656266560
  • 如果元组内存在可变类型,修改可变类型后内存地址不变,所以元组也是可变数据类型

【3】列表

list_1 = ['green', 'hqq', '21']
print(id(list_1))  # 2603191532992
list_1[1] = 'GG_BOND'
print(list_1)  # ['green', 'GG_BOND', '21']
print(id(list_1))  # 2603191532992
  • 可以看到修改列表内容后列表的内存地址没有发生改变,所以列表也是可变数据类型

【4】集合类型

my_set = {1, 2, 3}
print(id(my_set))  # 1175390100992

my_set.add(4)
print(my_set)  # {1, 2, 3, 4}
print(id(my_set))  # 1175390100992
  • 内存地址不变,集合也是可变数据类型

【二】不可变数据类型

【1】布尔类型

is_bool = True
print(is_bool) #True
print(id(is_bool)) # 140716556983144
is_bool = False
print(is_bool) # False
print(id(is_bool)) # 140716556983176
  • 布尔值的内容改变时,内存地址会改变,所以布尔值是不可变数据类型

【2】数字类型

num = 22
print(id(num))  # 140716558509512
num = 23
print(id(num))  # 140716558509544
  • 数字改变时,内存地址会改变,所以数字类型也是不可变数据类型

【3】字符串类型

str_1 = 'My name is green'
print(id(str_1))  # 1962745145152
str_1 = 'My name is hqq'
print(id(str_1))  # 1962744306032
  • 当字符串发生改变时,其内存地址也会改变,所以字符串是一个不可变数据类型

【三】补充

【1】Python的传递规则

  • 严格意义上来说,Python既不是值传递,也不是引用传递,python是自己的传递方式
  • 规则是:
    • 如果传递的是不可变类型,在函数中修改,就不会影响原来的变量
    • 如果传递的是可变数据类型,在函数中修改,不会影
def modify_immutable(x):
    x += 10
    print("函数内部:", x)
    return x


def modify_mutable(lst):
    lst.append(4)
    print("函数内部:", lst)
    return lst


a = 10
print(id(a))  # 140716576597064
print(id(modify_immutable(a)))  # 140716576597384
lis = [1, 2, 3, 4, 5]

print(id(lis))  # 2426037108160
print(id(modify_mutable(lis)))  # 2426037108160

标签:tuple,hqq,不可,数据类型,可变,print,id
From: https://www.cnblogs.com/Hqqqq/p/17963183

相关文章

  • 基本数据类型
    【一】基本数据类型引入【1】学习变量的目的学习变量有助于我们在程序中存储和操作数据,提高代码的灵活性和可维护性。通过使用变量,我们可以方便地引用和修改数据,使得程序能够动态地响应不同的输入和条件。【2】学习基本数据类型的目的学习基本数据类型有助于我们理解不同......
  • 数据类型的内置方法
    【一】数据类型内置方法介绍数据类型是用来记录事物状态的,而事物的状态是不断变化的(如:一个人年龄的增长(操作int类型)单个人名的修改(操作str类型),学生列表中增加学生(操作list类型)等),这意味着我们在开发程序时需要频繁对数据进行操作为了提升我们的开发效率python针对这些常用......
  • 引用数据类型
    ......
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了
    文编|JavaBuild哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光吧,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦!我们知道Java是面向对象的静态型编程语言,在Java的世界里万物皆对象。但我......
  • Python六个标准的数据类型
    Python3中有六个标准的数据类型,分别是:数字、字符串、列表、元组、集合、字典。1、Number(数字)Python中的数字有四种类型:整数、布尔型、浮点数和复数。int(整数),例如1、2、3。bool(布尔型),包括True和False两个值,分别代表真和假。举个例子:张三是不是男生?答案要么是真,要么是假。你只......
  • Powershell数据类型介绍-02
    当在PowerShell中定义和使用数据类型时,有几个注意事项需要考虑:#定义和使用数据类型的注意事项#类型声明,在定义变量时,可以使用[<类型>]语法显式声明变量的类型。这有助于提高代码可读性和类型安全性。[string]$myString="Hello,World!"#动态类型,PowerShell是一种动......
  • 04-核心定义:Kubernete 是如何搞定“不可变基础设施”的?
    在上一节课,我们已经了解了Kubernetes集群的搭建方式。从现在开始,我们就要跟Kubernetes集群打交道了。本节课我们会学习Kubernetes中最重要、也最核心的对象——Pod。在了解Pod之前,我们先来看一下CNCF官方是怎么定义云原生的。云原生技术有利于各组织在公有云、私有云......
  • IT外包必不可少的派单管理工具【推荐】
    背景IT外包单位也叫系统集成商,主要业务是承接甲方企业与政企的IT类运维、桌面管理等工作,甲方员工发IT办公类故障或设备故障需要外包单位来处理,存在故障统一报修入口,乙方维修员上门维修过程不透明,需要系统做管理。三点痛点据青鸟云报修平台大量的IT外包商反映,他们在日常管理中存在如......
  • 数据类型
    数据类型不同的数据会有不同的数据类型为了定义不同数据,python提供了以下的数据类型数字类型整形height=180#作用:描述号码#定义方式height=180#方法:+-*%//浮点型#作用:商品99.9#定义方法salary=99.9#方法:同上1+121-101*222%203//21......
  • MEM0701 Correctable memory error rate exceeded for . 内存可能无法正常工作。 这是
    ......