python技巧分享(七)

26 Feb 2018 python技巧分享(七)

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

1 is 和 == 的区别

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,如下:

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 通过下划线_丢弃多余的返回值

  • 不推荐方式
def demo():
    return 0, 1, 2


multi_values = demo()

print multi_values[1]
# 1
  • 推荐方式
def demo():
    return 0, 1, 2


_, one, _ = demo()

print one
# 1

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海天一树

小朋友学Python(3):布尔类型

本节讲解C/C++/Java/Python中的布尔类型。 一、C语言 C语言中没有布尔类型,判断时 ,0为假,非0为真。 二、C++ C++的bool是布尔类型...

28611
来自专栏乐百川的学习频道

Python学习笔记 输入输出

str和repr内置函数 在介绍Python的输入输出之前,我们先来介绍两个内置函数,str()和repr(),它们都用来输出对象的字符串形式。不过它们之间有一...

2728
来自专栏Hongten

J2SE 断言 [Assert]

/**  * 断言 [Assert]  *  从jdk1.4版本开始,java语言中引入了断言 [Assert]  *  机制,允许java开发者在代码中加入一...

821
来自专栏Android Note

Kotlin —  Destructuring Declarations(解构声明)

1232
来自专栏程序员同行者

python split()函数使用拆分字符串 将字符串转化为列表

1905
来自专栏代码世界

Python之内置函数

内置函数 python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使...

3097
来自专栏魂祭心

原 Curry的js实现

3505
来自专栏C语言及其他语言

[蓝桥杯]Hello, world!

题目描述 This is the first problem for test. Since all we know the ASCII code, your ...

3458
来自专栏吴裕超

exports 和 module.exports 的区别

require 用来加载代码,而 exports 和 module.exports 则用来导出代码。但很多新手可能会迷惑于 exports 和 module.e...

2854
来自专栏青青天空树

2017-统计字符个数

输入:输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。

1041

扫码关注云+社区