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  

  • 相关阅读:
    交换实验
    路由引入和控制
    ISIS
    BGP联盟
    BGP2
    bgp
    Linux日常总结
    配置本地yum源方法
    达梦数据库常见问题-安装
    达梦数据库常见问题-安装
  • 原文地址:https://www.cnblogs.com/jay54520/p/6251048.html
Copyright © 2011-2022 走看看