Python 官方文档:入门教程 => 点击学习
目录前言理解对象和类型关于不可变类型和可变类型关于动态静态强弱类型标准类型其它内建类型类型的类型None ->空类型内建类型的布尔值前言 全可以访问相同的对象, 因此我们讲 这
全可以访问相同的对象, 因此我们讲 这种变量名也叫对象的 "引用".
验证1:
a = 2
b = 3
print(id(a),id(b)) #140734889681584 140734889681616
b = 2
print(id(b)) #140734889681584
验证2:
b = 3
print(id(b)) #140734889681616
b +=1
print(id(b)) #140734889681648
相加其实是创建一个新的对象,然后把这个标签b移到这个新的对象上
思考: 为什么python的变量是这样的? 和C/C++差异这么大捏?
Python的GC机制, 是这样的设定的基础.
int
,str
,float
,tuple
其实是不可变类型的变量 (即:没办法修改一个已经存在的int类型的对象的值),只能创建新的,不能修改已经有的s = "hehe"
s[0] = 'a'; #error 报错 TypeError: 'str' object does not support item assignment
s = 'a'+s[1:] #只能重新创建
print(s) #aehe
#原来的hehe对象已经销毁,s贴在了aehe这个对象的身上
列表和字典都是可变对象:
类似的, C语言是一种静态弱类型语言. Java的类型检查更为严格, 一般认为是静态强类型, 而javascript则是动态弱类型
如:
int a = 10; long b = 20; a = b ->C++可以 java不可
int a = 10; bool b = false; a = b ->C++可以,把false当成0 java不可
动态类型:小规模下更好,使用灵活
大规模常用静态类型,否则多人协作容易有歧义
但是类型:越强越好
注意:如果想要比较两个浮点数是否相同,不能直接比较,因为会有精度损失,要做差比较
前面我们说, 类型也是对象
print(type(type(100))) #<class 'type'>
print(id(type(100))) #140734889206240
Python有一个特殊的类型, 称为NoneType. 这个类型只有一个对象, 叫做None
print(type(None)) #<class 'NoneType'>
def func():
print("haha")
ret = func() #打印haha 函数没有返回值却接收了,就是None
print(ret) #打印None,
所有的标准对象, 均可以用于布尔测试(放到if条件中).
下列对象的布尔值是False:
if "":
print("True")
else:
print("False")
#打印:False
其他情况下, 这些内建对象的布尔值就是True.
到此这篇关于python内建类型与标准类型的文章就介绍到这了,更多相关python内建类型 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: python内建类型与标准类型
本文链接: https://www.lsjlt.com/news/120094.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0