zoukankan      html  css  js  c++  java
  • 对 Python 语法不够了解导致的 bug

    对 Python 语法不够了解导致的 bug。

    `in`

    '20' in '11264,6144,4096,3072,2048,1024,300,30'
    Out[7]: 
    True
    
    a_list = '11264,6144,4096,3072,2048,1024,300,30'.split(',') a_list Out[10]:
    ['11264', '6144', '4096', '3072', '2048', '1024', '300', '30'] '20' in a_list Out[11]: False

    然后我去搜索 python `in`,有很多噪音,因为 `in` 这个词出现太多了。然后想到 Python 自带的 help,于是我在Python shell 中写 

    help('in')

    Membership test operations
    **************************
    The operators "in" and "not in" test for membership. "x in s"
    evaluates to true if *x* is a member of *s*, and false otherwise. "x
    not in s" returns the negation of "x in s". All built-in sequences
    and set types support this as well as dictionary, for which "in" tests
    whether the dictionary has a given key. For container types such as
    list, tuple, set, frozenset, dict, or collections.deque, the
    expression "x in y" is equivalent to "any(x is e or x == e for e in
    y)".
    For the string and bytes types, "x in y" is true if and only if *x* is
    a substring of *y*. An equivalent test is "y.find(x) != -1". Empty
    strings are always considered to be a substring of any other string,
    so """ in "abc"" will return "True".
    For user-defined classes which define the "__contains__()" method, "x
    in y" is true if and only if "y.__contains__(x)" is true.
    For user-defined classes which do not define "__contains__()" but do
    define "__iter__()", "x in y" is true if some value "z" with "x == z"
    is produced while iterating over "y". If an exception is raised
    during the iteration, it is as if "in" raised that exception.
    Lastly, the old-style iteration protocol is tried: if a class defines
    "__getitem__()", "x in y" is true if and only if there is a non-
    negative integer index *i* such that "x == y[i]", and all lower
    integer indices do not raise "IndexError" exception. (If any other
    exception is raised, it is as if "in" raised that exception).
    The operator "not in" is defined to have the inverse true value of
    "in".
    Related help topics: SEQUENCEMETHODS

    出现的解释很有帮助。所以对于 built-in 的关键字或者函数,我们应首先使用自带的 help 进行查询,而不是去谷歌搜索。

    引申出  is 与 == 的区别  

    5 is 5
    Out[16]: 
    True
    5 == 5
    Out[17]: 
    True
    nan = float('NaN')
    nan is nan
    Out[19]: 
    True
    nan == nan
    Out[20]: 
    False
    

      

    参考

    python-in-operator-use-cases  

  • 相关阅读:
    log4j 使用笔记整理中
    执行bat文件
    excel让每个单元格的宽度随着字体自动变动的两种方式(有更好方法的大神,请忽略,求评论下)
    XML中CDATA及其字符实体的使用
    Java文件读写操作指定编码方式。。。。。
    尾数为0零BigDecimal不能装成正常数
    jquery 自动补全控件(支持IE6)待整理
    $.ajax提交,后台接受到的值总是乱码?明天再总结
    js定义变量需赋予初始值
    存储过程的优缺点
  • 原文地址:https://www.cnblogs.com/jay54520/p/6251048.html
Copyright © 2011-2022 走看看