前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python技巧分享(七)

python技巧分享(七)

作者头像
俊采
发布2018-05-15 14:22:04
5730
发布2018-05-15 14:22:04
举报
文章被收录于专栏:LEo的网络日志LEo的网络日志

26 Feb 2018 python技巧分享(七)

这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 is 和 == 的区别

代码语言:javascript
复制
import os

str1 = os.__name__
str2 = "os"

print str1
# os
print str2
# os

print str1 == str2
# True

print str1 is str2
# False

由示例中可以看到,str1和str2的值都是字符串”os”,str1 == str2为True,但是str1 is str2却为False,即is和==不是一回事,is为True表示两个对象的id相同,即id(str1) == id(str2)时,str1 is str2才为True,is表示2个对象引用同一块内存内容,==表示2个对象的值相等。所以判断2个对象值是否相等时,使用==,判断2个对象是否引用同一块内存时,使用is。如果将上面示例中的str1 = os.__name__修改成str1 = “os”,你会发现str1 is str2为True,这是python为了性能考虑,将str1和str2都指向同一块内存,内存的值就是字符串”os”,所以导致str1 is str2为True,如下:

代码语言:javascript
复制
str1 = "os"
str2 = "os"

print str1
# os

print str2
# os

print str1 == str2
# True

print str1 is str2
# True

print id(str1) == id(str2)
# True

print id(str1)
# 31301840

print id(str2)
# 31301840

2 通过下划线_丢弃多余的返回值

  • 不推荐方式
代码语言:javascript
复制
def demo():
    return 0, 1, 2


multi_values = demo()

print multi_values[1]
# 1
  • 推荐方式
代码语言:javascript
复制
def demo():
    return 0, 1, 2


_, one, _ = demo()

print one
# 1

前一种方式将返回的多个值以元组的形式保存在变量multi_values中,然后读取第二个值,后一种方式中,通过下划线方式,丢弃多余的函数返回值,更加简洁易读。

3 如何判断文件是否被打开

代码语言:javascript
复制
with open("tmp") as f:
    print f.closed
    for line in f.readlines():
        print line

print f.closed

'''
False
line 1

line 2

line 3
True
'''

由示例中可以看到,使用with方式打开文件,文件在with语句块范围外会自动关闭。第一个print打印False,文件处于打开状态,第二个print在with语句的范围外,打印True,表明文件处于关闭状态。

LEo at 20:04

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.02.26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 26 Feb 2018 python技巧分享(七)
    • 1 is 和 == 的区别
      • 2 通过下划线_丢弃多余的返回值
        • 3 如何判断文件是否被打开
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档