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  

  • 相关阅读:
    Android SHA1与Package获取方式
    《C++语言基础》实践參考——数组作数据成员
    Linux进程间通信——使用共享内存
    Java中ArrayList和LinkedList差别
    hdu1695(莫比乌斯)或欧拉函数+容斥
    Android学习路线(二十四)ActionBar Fragment运用最佳实践
    HTML——使用表格对表单进行布局
    Nginx 訪问日志增长暴增出现尖刀的具体分析
    基于特定值来推断隐藏显示元素的jQuery插件
    怎样配置PHP环境和安装Zendstdio编辑器
  • 原文地址:https://www.cnblogs.com/jay54520/p/6251048.html
Copyright © 2011-2022 走看看