Python的in,is和id函数代码实例


Posted in Python onApril 18, 2020

1. in 和 not in —— 判断某个序列中是否存在某值

# in
aa = [1,2,3,'Cathy','太平洋']
if '大西洋' in aa:
  print('yes')
else:
  print('no') # no

# not in
if '大西洋' not in aa:
  print('yes') # yes
else:
  print('no')
  
#-------------------------------------------------------
# 判断字符串是否存在某子串  
if '马来西亚' in '马来西亚是一个太平洋国家':  
  print('of course') # 输出 'of course'

# ------------------------------------------------------
if 0 in (0,1,2,3):
  print('hhhh') #输出 'hhhh'

if 0 in [0,1,2,3]:
  print('kkkk') #输出 'hhhh'

2. is 和 is not —— 判断两个标识符是不是指向同一个地址(同一个对象),类似于判断 id(x) == id(y) —— 具体对于相同值的内存管理

# 相同
bb = 234
cc = 234
if bb is cc:
  print('bb is cc') #结果是 bb is cc 
else:
  print('bb is not cc')
print(id(bb)) # id()值一样,因为python的优化机制,相同的'数值'数据会使用同样的内存空间。
print(id(cc))

# 相同
bb = 'hhh'
cc = 'hhh'
if bb is cc:
  print('bb is cc') #同样也是因为python的自身机制,在某些'字符'位数下,相同字符串也会指向同一地址 ------ 有说20位的,与系统有关
else:
  print('bb is not cc')# 相同,python的对象引用机制
bb = [1,2,3] 
cc = bb
if bb is cc:
  print('bb is cc') #结果是 bb is cc 
else:
  print('bb is not cc')

# 不相同
bb = [1,2,3]
cc = [1,2,3]
if bb is cc:
  print('bb is cc')  
else:
  print('bb is not cc') #结果是 bb is not cc
print(id(bb)) # id()值不一样
print(id(cc))

3. id() 函数,获取对象的内存地址(不同电脑不一样),例如:

bb = 'hhh'
cc = bb
if bb is cc:
  print('bb is cc') #结果是 bb is cc 
else:
  print('bb is not cc')
print(id(bb)) # id()值一样,均为 1680346901336
print(id(cc))

4. 可变数据类型和不可变数据类型

不可变数据类型: 当该类型的变量值发生了改变,它对应的内存地址也会发生改变。

可变数据类型 :当该类型的变量值发生了改变,它对应的内存地址不发生改变。

这里的可变不可变,是指内存中的值内容(value)是否可以被改变。如果是不可变类型,在操作对象本身的时候,必须在内存新申请一块内存(因为原内存内容是不可变的)。如果是可变类型,操作对象的时候,不需要再在其他地方申请内存,只需要在此对象后面连续申请内存,所以它的地址会保持不变,但该内存区域大小会变化。

在python中:

int,string,float,tuple —— 属于python的不可变类型

object、list、set —— 属于python的可变类型

使用:可以使用内建函数id()来确认对象的地址在两次赋值前后是否发生了变化。

例如:分别对于数值和列表类型:

a = 1
print(id(a))
a = a+1 #a本身发生变化
print(id(a))
# 结果分别为:140732932812544 和 140732932812576,表示id值发生了变化

a = ['1']
print(id(a))
a.append('sss') #a本身发生变化
print(id(a))
print(a)  # 输出:['1', 'sss']
# 结果分别为:1680347029768 和 1680347029768,表示id值没有变化

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python移位运算的实现
Jul 15 Python
python实现桌面托盘气泡提示
Jul 29 Python
扩展Django admin的list_filter()可使用范围方法
Aug 21 Python
python能做什么 python的含义
Oct 12 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
Python中无限循环需要什么条件
May 27 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
vscode配置anaconda3的方法步骤
Aug 08 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
Python学习开发之图形用户界面详解
Aug 23 Python
Python json读写方式和字典相互转化
Apr 18 #Python
Python figure参数及subplot子图绘制代码
Apr 18 #Python
Python数组拼接np.concatenate实现过程
Apr 18 #Python
Python稀疏矩阵及参数保存代码实现
Apr 18 #Python
Python try except异常捕获机制原理解析
Apr 18 #Python
Python数据正态性检验实现过程
Apr 18 #Python
如何基于线程池提升request模块效率
Apr 18 #Python
You might like
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
正则表达式(语法篇推荐)
2016/06/24 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
深入解析Python中的变量和赋值运算符
2015/10/12 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
技术总监的工作职责
2013/11/13 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
追悼会家属答谢词
2015/09/29 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL