我对Python比较新,但通常觉得很容易找到它。我只是遇到了一些东西,这让我有点兴奋。
我知道类型检查不是非常Pythonic但是我处理用户输入并且它在这里似乎很有用。我期望以下代码(在Python 2.7.6中)将不相关的输入更改为空字符串,但在交互式解释器中尝试时,它返回了一个意外的int。任何人都可以告诉我这是否是Python中的特殊值,或解释为什么会发生这种情况。
我想也许"代码"可能是保留变量的名称,即。一个在内部使用,但更改名称似乎没有结果。
>>> code = 0134
>>> if type(code) is not int: code =""
...
>>> code
92
我确信我可以找到另一种方法去做我在这里尝试做的事情,所以这不是重点。我只是想弄清楚意外的int会发生什么。
谢谢,
罗布
答案 0 :(得分:1)
>>> code = 0134
在python 2.7.6中,由于前导0,它定义了八进制数132.这等于小数92.
>>> if type(code) is not int: code =""
如果它不是int,那么你清除它。
>>> code = 0134
>>> type(code)
<type 'int'>
正如你所看到的,你确实有一个int。当你打印出来时,你得到了基数为10的表示,即92。
这种引起混淆的特殊原因导致了以下PEP http://legacy.python.org/dev/peps/pep-3127/
答案 1 :(得分:1)
当一个数字在Python中以0开头时,它被解释为八进制数。在八进制中的0134是十进制的92。
我不确定为什么你认为该值的类型不是int。这是一个整数。