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  

  • 相关阅读:
    ensp实验:使用Serial接口
    1146
    Navicat连linux上mysql数据库报错can't connect to mysql server ... 10060
    Bug 23572982,Oracle19c新建pdb受限模式,SYNC PDB FAILED WITH ORA-959 DURING 'CREATE USER
    内核参数限制导致无法su切换登录用户
    模拟测试恢复redhat7.5系统权限
    Oracle-OGG,双向同步过滤OGG自身用户的DML失效,如何处理?
    OGG-Oracle同步Sequence
    Scalable Sequences 学习测试
    OGG-DDL同步报错OGG-00516 ORA-12991: column is referenced in a multi-column constraint]
  • 原文地址:https://www.cnblogs.com/jay54520/p/6251048.html
Copyright © 2011-2022 走看看