python语言中包含的标准数据类型有哪些_Python中的标准数据类型

Python3 中有六个标准的数据类型:

Number(数字)

String(字符串)

List(列表)

Tuple(元组)

Set(集合)

Dictionary(字典)

Python3 的六个标准数据类型中:

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

isinstance 和 type 的区别在于:

type()不会认为子类是一种父类类型。

isinstance()会认为子类是一种父类类型。

与Python字符串不一样的是,列表中的元素是可以改变的

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 =() # 空元组

tup2= (20,) # 一个元素,需要在元素后添加逗号

Set(集合)

集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

parame ={value01,value02,...}

或者set(value)

Python身份运算符

身份运算符用于比较两个对象的存储单元

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

>>>a = [1, 2, 3]>>> b =a>>> b isa

True>>> b ==a

True>>> b =a[:]>>> b isa

False>>> b ==a

True

变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误:

f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:

name = 'Runoob'f'Hello {name}'# 替换变量

f'{1+2}'# 使用表达式'3'w= {'name': 'Runoob', 'url': 'www.runoob.com'}

f'{w["name"]}: {w["url"]}'

'Runoob: www.runoob.com'

关于元组是不可变的

>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')>>> tup[0] = 'g'# 不支持修改元素

Traceback (most recent call last):

File"", line 1, in TypeError:'tuple' objectdoes not support item assignment>>>id(tup) # 查看内存地址4440687904

>>> tup = (1,2,3)>>>id(tup)4441088800 # 内存地址不一样了

直接赋值和 copy 的区别

#!/usr/bin/python

#-*- coding: UTF-8 -*-dict1= {'user':'runoob','num':[1,2,3]}

dict2=dict1 # 浅拷贝: 引用对象

dict3=dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用

# 修改 data 数据

dict1['user']='root'dict1['num'].remove(1)

# 输出结果

print(dict1)

print(dict2)

print(dict3)

关于可更改与不可更改类型, 以及其它语言的值类型与引用类型的介绍,一直一来感觉都不太严谨, 说法是否正确有待验证。

简单的说就是,不可更改类型传到函数里重新赋值后,两次输出值不一样,而可更改类型传到函数里对对象的"属性" 重新赋值后输出值一样。

这里照搬一下例子:

# 可写函数说明

def changeme( mylist ):"修改传入的列表"mylist.append([1,2,3,4])

print ("函数内取值:", mylist)return# 调用changeme函数

mylist= [10,20,30]

changeme( mylist )

print ("函数外取值:", mylist)

请注意:上面特意用了引号标准的部分,对可变类型或者引用的操作修改的是传过来的对象的属性。

可以这么理解(例子有点随意):我在画画,小明来了说他也要画,我让他和我一起画,他如果和我在同一个画板上画,那么我们两的画就会同时改变。 而如果他说不,我要另外用一块画板,然后重新拿了块画板画起来了,那么我们两的画自然就不一样了。

同理可更改类型 的属性进行操作,这只是对引用的内存块里面的值进行操作,引用并没变,自然所有引用它的对象的值都变了。而对不可更改的对象进行操作,因为它引用的内存块只是对应一个固定的值,不能进行修改,要重新复制实际上就是更新引用。

如果我们运行下面的例子,对可更改类型的引用进行修改,结果就不一样了。

# 可写函数说明

def changeme( mylist ):"修改传入的列表"mylist= [1,2,3,4]

print ("函数内取值:", mylist)return# 调用changeme函数

mylist= [10,20,30]

changeme( mylist )

print ("函数外取值:", mylist)

结果

函数内取值:[1,2,3,4]函数外取值:[10,20,30]

本文链接:https://my.lmcjl.com/post/9577.html

展开阅读全文

4 评论

留下您的评论.