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  

  • 相关阅读:
    Python命令行下退格、删除、方向键乱码问题解决(亲测有效)
    提取MySQL binlog中指定表的操作记录
    windows下面安装Python和pip终极教程
    day1-作业2
    day1-作业
    centos6.5python2.6环境下安装ansible
    安装inotify-tools,用inotifywait命令监听文件或目录的访问信息(自动同步文件夹)
    GitHub开源MySQL Online DDL工具gh-ost参数解析
    GitHub开源MySQL Online DDL工具gh-ost安装文档
    mysql磁盘IO%util 居高不下之RAID卡 BBU Learn Cycle周期
  • 原文地址:https://www.cnblogs.com/jay54520/p/6251048.html
Copyright © 2011-2022 走看看