本问题已经有最佳答案,请猛点这里访问。

输入命令0xbin()返回假:

>>> 0xbin()

False

为什么会这样?这个语法应该没有任何意义。函数不能以0开头,十六进制中没有"i"和"n",bin函数必须有一些参数。

它需要争论!0xbin(013,37)。

@如果你想得到True,你可以用一个单一的论点来尝试0xbin(11,)。

0xbin(013,37)也会给出正确的答案;)(在python 2.7中)

这仅仅是因为lexer和parser的实现者只关心通过良好格式化的代码获得所需的行为。将0xb和in并列应视为无效的令牌。

与0xband()比较对比。tokenizer贪婪,把0xba作为tokenizer。

@投票重新开放的人:请解释为什么这不是一个骗局。如果你说服我,我会重新打开它。

@Kevin可能是dupe的目标,"为什么有时候代币之间不需要空格?"这个问题就像"代币是什么?"(我可以重新开放自己,但既然我回答了,而且有很多选票,我就不会这么做了,以防它被视为COI)

python似乎把0xbin()解释为0xb in (),意思是空元组中有11个。答案是否定的,因此False。

所以很明显"in"、"is"等不需要空间?我第一次遇到这个问题,但它是有意义的,因为"

显然是的。python引用说,只有当标记之间的连接可以解释为不同的标记时,才需要标记之间的空白。但我只在"代码高尔夫"中见过这样的代码。

@matts这就是为什么有效的python标识符(和许多其他语言)只接受字母或下划线作为标识符的第一个字母,然后允许数字。由于完全支持Unicode,实际实现相当复杂,但标识符的纯ASCII regex是:r'[_a-zA-Z][_a-zA-Z0-9]*'。

@Aaron:[_[:alpha:]][_[:alnum:]]*,使用允许(Unicode)字符类的正则表达式语言,即不使用Python的。;-]

哇,我以为这种解析只在Fortran和Basic中完成。我不敢相信现代语言能做到这一点。

C语言家族中对"预处理数"的特殊定义的原因之一是为了防止出现这种情况;在这些语言中,0xbin将被视为单个标记,即使它不能被解释为有效的数字文字。

@davidfoerster您可以使用regex,而不是内置的re。它提供了相同的API,但增加了许多功能,包括匹配的Unicode属性等。我希望在一些版本中,将取代标准的re模块…(我相信作者也有这个希望,因此两者之间的高度兼容)。

@巴尔马Python很老。

@Ronjohn我已经编程40年了,Python还不到30年。据我所知,这是一个年轻的鞭打者。

@Barmar:python希望保持ll(1)语言。这实际上与这个示例没有任何关系,但是它说明了他们对"哑"解析器的持续需求(也提供了一些解释方式)。tl;dr:他们不想让python像perl一样结束。

如果反汇编代码,您将看到yself的答案,其中提到0xbin()被解释为0xb in ()得到确认:

>>> import dis

>>> dis.dis('0xbin()')

1           0 LOAD_CONST               0 (11)

2 BUILD_TUPLE              0

4 COMPARE_OP               6 (in)

6 RETURN_VALUE

list(tokenize.tokenize(io.BytesIO(b"0xbin()").readline))可能更合适

您可以使用Python自己的标记器进行检查!

import tokenize

import io

line = b'0xbin()'

print(' '.join(token.string for token in tokenize.tokenize(io.BytesIO(line).readline) if token.type!=59))

这将打印字符串中的标记,用空格分隔。在这种情况下,结果将是:

0xb in ( )

换句话说,它返回false,因为数字11(0xb不在空元组(()中)。

(多亏罗马奥达西在评论中建议使用tokenize!)

编辑:为了更全面地解释代码:tokenize函数希望输入的格式有点奇怪,所以io.BytesIO(line).readline是一个将字节序列转换为tokenize可以读取的函数。tokenize然后对其进行标记化,并返回一系列namedtuples;我们获取表示每一个的字符串,并用空格将它们连接在一起。type != 59部分用于忽略将在开头显示的编码说明符。

这是目前最好的答案,"dis"和"ast"的答案掩盖了不常见符号背后所发生的事情,这在普通的Python中清楚地显示了这一点。

可以使用ast模块获取表达式的抽象语法树:

>>> import ast

>>> m = ast.parse('0xbin()')

>>> ast.dump(m)

'Module(

body=[Expr(

value=Compare(left=Num(n=11),

ops=[In()],

comparators=[Tuple(elts=[],

ctx=Load())

]

))])'

有关如何解释表达式,请参见抽象语法,但tl;dr:Num(n=11)是0xb部分,Tuple(elts=[], ...)提示使用空元组而不是函数调用。

python中0x是什么意思_在python中,为什么0xbin()返回False?相关推荐

  1. python修改散点图中点的颜色_更改散点图中不同虚拟值的点的颜色 - python

    在我的数据集中,我有一个Price列用于房价,还有5个虚拟列用于城市中的不同位置.我要做的是用不同的颜色在散点图上显示数据点. 例如,在一个包含所有房屋价格的散点图上,我想要: 当dummy1表示房屋 ...

  2. python怎么把变量付给数组_使用Python将数组的元素导出到变量中(unpacking)

    解决的问题 需要将数组(list)或元组(tuple)中的元素导出到N个变量中. 解决的方案 任何序列都可以通过简单的变量赋值方式将其元素分配到对应的变量中,唯一的要求就是变量的数量和结构需要和序列中 ...

  3. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  4. python中有这样一条语句_在Python中一行书写两条语句时,语句之间可以使用__________作为分隔符。_学小易找答案...

    [填空题]Python表达式4.5/2.4.5//2和4.5%2的值分别为__________________________. [填空题]我国古代文献中所记载的最早的学校类型有两种,分别是 和 . ...

  5. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  6. python搜索pdf内容所在页码_利用Python在pdf文档中寻找某些词出现的页码

    要研究pdf文件的页码,首先要考虑这个文件的种类.pdf可能是一本书的电子版,可能是一份简历.可能是由Word.PPT或其他文档导出的--如果不是一本书,通常页面内容里是没有页码的:如果是一本书,虽然 ...

  7. python什么是高阶函数_说说 Python 中的高阶函数

    高阶函数(higher-order function)指的是:接受一个函数为参数,或者把函数作为结果值返回的函数1. 1 sorted() 比较常见的高阶函数是 sorted(),其内部的关键字参数 ...

  8. python中使用函数编程的意义_总结Python编程中函数的使用要点

    为何使用函数 最大化代码的重用和最小化代码冗余 流程的分解 编写函数 >>def语句 在Python中创建一个函数是通过def关键字进行的,def语句将创建一个函数对象并将其赋值给一个变量 ...

  9. python一切皆对象的理解_在 Python 中万物皆对象

    在 Python 中一切都是对象,并且几乎一切都有属性和方法.所有的函数都有一个内置的 __doc__ 属性,它会返回在函数源代码中定义的 doc string:sys 模块是一个对象,它有一个叫作 ...

  10. python中的静态方法如何调用_关于Python中如何使用静态、类、抽象方法的权威指南(译)...

    对于Python中静态.类.抽象方法的使用,我是一直很迷糊的.最近看到一篇技术文章对这方面解释的很好,在此翻译一下,加深印象,也为有需要的同学提供一个方便. Python中方法是如何工作的: 方法即函 ...

最新文章

  1. 顶尖985高校,异地布局!
  2. 怎么学操作系统和计算机网络?
  3. php循环不出数据,在thinkphp模板中循环数组没有循环出所需要的数据
  4. 第三次作业-介绍一款原型设计工具
  5. GRE难句典型结构2
  6. python treading模块
  7. sql2005数据导入出错问题
  8. Windows平台release版本内存泄漏检查办法
  9. DFA算法实现 敏感词过滤
  10. 规划--如何成为一名web安全工程师
  11. 知识图谱学习(一) py2neo
  12. ie主页被劫持怎么办 解决浏览器主页劫持方法
  13. 计算机网络技术-Mooc
  14. 南阳oj _600花儿朵朵(树状数组插线问点+坐标离散化)
  15. php订阅号发送消息,关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题,_PHP教程...
  16. 工控物联网案例-如何利用LTE-658 4G DTU实现水文水利远程物联网监控
  17. RTX 30系列性能≥2倍图灵GPU!AI算力前瞻,性价比超泰坦
  18. SQL中的COALESCE()函数
  19. linux常用命令(61):ps命令
  20. Linux系统进程的理解与相关命令的使用系列

热门文章

  1. 如何设置变更Word页面颜色?干货经验!怎样操作更改word背景颜色?
  2. 学习一门技术不能浅尝遏止
  3. 电脑计算机怎么显示到桌面,怎么显示我的电脑到桌面
  4. pcr扩增的原理和步骤
  5. 微信公众号开发2自动回复
  6. Nik Collection 4
  7. 【计算机图形学】几何
  8. Qt:Exception at 0xeefde9, code:0x0000005: read access violation at: 0x0, flags = 0x0(first chance)
  9. zyf整合ssm环境
  10. 带妹入坑,她该怎样提高自己的编程能力?