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

 更新时间:2020年04月18日 14:35:41   作者:落日峡谷  
这篇文章主要介绍了python的in,is和id函数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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自动化办公操作excel的示例详解

    python自动化办公操作excel的示例详解

    这篇文章主要为大家详细介绍了如何利用python来实现自动化办公操作excel文件进行各种样式展示,并自动发送文件给"老板"的邮箱,希望对大家有所帮助
    2024-03-03
  • Python高级应用探索之元编程和并发编程详解

    Python高级应用探索之元编程和并发编程详解

    Python作为一种简单易用且功能强大的编程语言,广泛应用于各个领域,本文主要来和大家一起探索一下Python中的优化技巧、元编程和并发编程,希望对大家有所帮助
    2023-11-11
  • Python文件操作方法详解

    Python文件操作方法详解

    这篇文章主要介绍了Python文件操作方法详解,需要的朋友可以参考下
    2020-02-02
  • vc6编写python扩展的方法分享

    vc6编写python扩展的方法分享

    有些C/C++的代码要在Python中要用到,又不想转成python,所以就写成python的扩展来调用,以下是我尝试后,在VC6下编写python扩展的过程
    2014-01-01
  • Python文件操作利器的十大库使用实例

    Python文件操作利器的十大库使用实例

    Python拥有多个库用于文件操作,提供了各种功能来管理、读取和写入文件,这些库覆盖了从基本的文件系统交互到高级的文件压缩和数据格式处理等多个方面,文件操作是编程中不可或缺的一部分,因此了解这些库对于开发者来说是至关重要的
    2024-01-01
  • Python如何把字典写入到CSV文件的方法示例

    Python如何把字典写入到CSV文件的方法示例

    这篇文章主要介绍了Python如何把字典写入到CSV文件的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Django中使用SMTP实现邮件发送功能

    Django中使用SMTP实现邮件发送功能

    在 Django 中使用 SMTP 发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在 Django 中配置 SMTP 发送邮件吧
    2025-01-01
  • Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程

    Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程

    RabbitMQ是一个消息队列服务器,在本文中我们将学习到Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程,需要的朋友可以参考下
    2016-06-06
  • Flask框架使用DBUtils模块连接数据库操作示例

    Flask框架使用DBUtils模块连接数据库操作示例

    这篇文章主要介绍了Flask框架使用DBUtils模块连接数据库操作,结合实例形式较为详细的分析了flask框架使用DBUtils模块连接数据库的常见操作技巧与相关注意事项,需要的朋友可以参考下
    2018-07-07
  • Python的Django框架中的数据过滤功能

    Python的Django框架中的数据过滤功能

    这篇文章主要介绍了Python的Django框架中的数据过滤功能,为更新数据库数据时的数据查找提供了方便,需要的朋友可以参考下
    2015-07-07

最新评论