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 文件管理实例详解
Nov 10 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
python3.5 email实现发送邮件功能
May 22 Python
从django的中间件直接返回请求的方法
May 30 Python
python指定写入文件时的编码格式方法
Jun 07 Python
5分钟 Pipenv 上手指南
Dec 20 Python
Python中新式类与经典类的区别详析
Jul 10 Python
Python 分发包中添加额外文件的方法
Aug 16 Python
Python unittest discover批量执行代码实例
Sep 08 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
scrapy-splash简单使用详解
Feb 21 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
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
IE 当eval遇上function的处理
2011/08/09 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
名企HR怎样看待求职信
2014/02/23 职场文书
高三学习决心书
2014/03/11 职场文书
白血病捐款倡议书
2014/05/14 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书