python内建类型与标准类型
作者:芒果在努力??????? 发布时间:2021-06-03 19:47:45
前言
全可以访问相同的对象, 因此我们讲 这种变量名也叫对象的 "引用".
验证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++差异这么大捏?
空间考虑: 比如一个数字2, 在Python中只有这么一个数字2; 而一个C/C++程序中可能会有N个2.
时间考虑: 比如 a=b 这样的赋值, 只是修改了一下贴标签的位置, 不需要对对象进行深拷贝. 为什么Python可以这么做, 而C/C++不能这样设计呢?
C++中的赋值相当于深拷贝, a = 100 b = a ->内存中存放了两份100
java和python相当于浅拷贝 a = 100 b = a ->a和b都是100的引用,内存中只存放了一份100
Python的GC机制, 是这样的设定的基础.
理解对象和类型
关于不可变类型和可变类型
python中的
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这个对象的身上
列表和字典都是可变对象:
有些对象是 "相似" 的, 于是我们把对象归归类. 比如把所有的整数归为一类, 把所有的浮点数对象归为一类,把所有的字符串归为一类.
相同的类型的对象, 须有相同的操作. 比如, 所有的整数对象, 都可以进行加减乘除操作. 所有的字符串都可以使用切片操作.
关于动态静态强弱类型
Python是一种 动态强类型 编程语言.
动态是指运行时进行变量类型检查; 强类型 指类型检查严格, 并且"偏向于"不允许隐式转换.
动态类型:一个变量在运行过程中类型发生变化
静态类型:一个变量在运行过程中类型不能发生变化
强类型:越不支持隐式类型转化,类型越强
弱类型:越支持隐式类型转化,类型越弱
类似的, 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不可
动态类型:小规模下更好,使用灵活
大规模常用静态类型,否则多人协作容易有歧义
但是类型:越强越好
标准类型
整型
浮点型
注意:如果想要比较两个浮点数是否相同,不能直接比较,因为会有精度损失,要做差比较
复数型
布尔型
字符串
列表
元组
字典
其它内建类型
类型
NULL对象(None)
文件
函数
模块
类
类型的类型
前面我们说, 类型也是对象
print(type(type(100))) #<class 'type'>
print(id(type(100))) #140734889206240
None ->空类型
Python有一个特殊的类型, 称为NoneType. 这个类型只有一个对象, 叫做None
print(type(None)) #<class 'NoneType'>
NoneType类似于C语言中的void
None类似于C语言的空指针NULL(NULL的含义:特指0号地址的内存)
None这个对象没啥有用的属性, 它的布尔值为False
def func():
print("haha")
ret = func() #打印haha 函数没有返回值却接收了,就是None
print(ret) #打印None,
内建类型的布尔值
所有的标准对象, 均可以用于布尔测试(放到if条件中).
下列对象的布尔值是False:
None
False
所有值为0的数字(0, 0.0, 0.0 + 0.0j (复数))
"" (空字符串)
[] (空列表)
() (空元组)
{} (空字典)
if "":
print("True")
else:
print("False")
#打印:False
其他情况下, 这些内建对象的布尔值就是True.
来源:https://juejin.cn/post/7132270212530847774


猜你喜欢
- 查看数据库状态:service mysqld status 启动数据库:service mysqld start&
- 1、相关说明此脚本可以将Mysql的数据导出成Json格式,导出的内容可以进行select查询确定。数据传入参数有:dbConfigName
- 本文实例讲述了Python使用回溯法解决迷宫问题。分享给大家供大家参考,具体如下:问题给定一个迷宫,入口已知。问是否有路径从入口到出口,若有
- SQL Server 数据库定时自动备份,供大家参考,具体内容如下在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备
- 在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定
- 1.最大值max(3,4) ##运行结果为42.最小值min(3,4) ##运行结果为33.求和sum(range
- 一、在javascript中嵌入php代码javascript若是通过js文件包含进来的,那么js文件中也可以直接写php代码,
- virtualenv与virtualenvwrapper当涉及到python项目开发时为了不污染全局环境,通常都会使用环境隔离管理工具vir
- 本文实例讲述了Python基于回溯法子集树模板解决0-1背包问题。分享给大家供大家参考,具体如下:问题给定N个物品和一个背包。物品i的重量是
- CKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、
- 最近,随着数据库的日益庞大,本来两个差不多的数据库,我开始发现我的数据库查询起来越来越比我朋友网站的慢了,经过初步对照,问题好像出在访问记录
- 1.初始化(使用session前都要使用,一个页面用一个就可以了)session_start();2.保存$_SESSION[$sessio
- 需求描述制作一个H5页面,打开之后可以录音,并将录音文件提交至后台微信录音最长时长为1min微信官方文档--音频接口代码如下 /
- 目录【Python压缩文件夹】导入“zipfile”模块【python压缩文件】导入“zipfile”模块补充zipfile是python里
- MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是My
- Vue3 新的发展方向(来源于尤大知乎)Vue 3 将在 2022 年 2 月 7 日 成为新的默认版本基于 Vite 的极速构建工具链&l
- 本文实例讲述了Go语言获取数组长度的方法。分享给大家供大家参考。具体实现方法如下:// getting the length of an a
- 远程登陆SQLServer (2014)数据库,供大家参考,具体内容如下两台电脑,同一个局域网内,IP同一网段配置:Computer1: W
- 前言centos 是自带python的。但是版本稍微旧一些。搞python开发,肯定要用新一点的稳定版。所以,要升级一下python。本文将
- <?php //设置我们将要使用的文件 $srcurl = "http://localhost/index.php"