美文网首页
Python冷知识

Python冷知识

作者: Python成长路 | 来源:发表于2019-02-28 19:26 被阅读0次

    1、省略号也是对象

    这有什么用呢?没什么实际用处,可以替代pass做占位符

    ```

    print(type(...))

    bool(...)

    ```

    2、增量赋值的性能更好

    下面两行其实在效果上是等价的,但在性能上,第二行高于第一行 这是因为+=的魔法方法是__iadd__ ,而+的魔法方法是__add__, 这两个方法的实现是不一样的,有兴趣的可以自己去了解

        a = 1; a += 1

        b = 1; b = b + 1

    3、索引越界

    报错还是输出什么?

        list1 = [1, 2, 3]

        print(list1[5:])

    4、for写一个死循环

        for i in iter(int, 1):

        pass

    iter的用法除了将序列变为迭代器,还能接受两个参数,一个是callable参数,另一个是sentinel参数,当这个callable返回的是sentinel,则迭代停止 而int是一个内建方法,只会返回0

    5、intern机制

        s1 = 'hello'

        s2 = 'hello'

        s1 is s2

    同样的字符串对象只保留一份,这就是intern机制,但当字符串有除ASCII以外的字符或长度超过20个字符时,不启用intern机制

    6、_ 的使用

    当要使用一些没有意义的变量时,一般会用_代替,比较常见的循环,比如 for _ in range(10) 我们只在乎循环次数,而不在乎循环变量

    7、for else和try else

    if else都知道怎么使用,那for else和try else呢

    8、空字符串

    想想下面的结果又觉得没有错,就是不对劲

        print('' in 'aabb')

        print('aabb'.count(''))

    9、---

    python允许不加括号,因为并不会产生歧义,但建议别这样写代码,没什么意义,还不好阅读,当然你非要把3写成------3也不报错

        print(--3)

        print(6---+-------------------4)

    10、字典有序

    字典的无序性一直是教学的一个知识点,但Python3.6之后,字典其实是有序的,但官方是这样解释的:这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来改变,因为考虑到向旧版本兼容的问题)。不过在Python3.7中,字典有序已经变成语言特性了。因为更节省内存,而带来的‘副作用’不过是字典的有序化。

    原文链接(出处):https://mp.weixin.qq.com/s/Er7e91UOEJ1sucbFN_n_-w

    相关文章

      网友评论

          本文标题:Python冷知识

          本文链接:https://www.haomeiwen.com/subject/fswkuqtx.html