gpt4 book ai didi

python - python交互模式下的交替错误和无错误

转载 作者:行者123 更新时间:2023-11-28 16:50:37 25 4
gpt4 key购买 nike

使用文件 xx.py:

class Foo(object):
def __init__(self, x):
self.x = x

def __long__(self):
return long(self.x)

def __float__(self):
return float(self.x)


y = Foo(22)

print '%d' % y
print '%d' % y

交互模式:

$ python -V
Python 2.6.7

$ python -i xx.py
22
22
>>>
TypeError: int() argument must be a string or a number, not 'Foo'
>>> '%d' % y
'22'
>>> '%d' % y
TypeError: int() argument must be a string or a number, not 'Foo'
>>> '%d' % y
'22'
>>> '%d' % y
TypeError: int() argument must be a string or a number, not 'Foo'

为什么它在打印“22”和引发 TypeError 之间交替?

为什么它会在第一个回车(没有输入)时引发错误?

谢谢。

最佳答案

看起来像 python 中的错误!我的猜测是它是由旧的基于字符串的异常的一些遗留问题引起的。

十六进制的东西是一个转移注意力的东西,你也可以通过简单地分配 y = Foo(1) 并只使用 '%d' % y 来获得奇怪的行为展示有趣的切换东西。

应该在脚本中的第一个 print '0x%x' % y 处得到一个 TypeError,因为那部分不是很好-定义。但是结果不知何故被强制转换,看起来像一个基于字符串的异常不知何故被...遗漏了,而它可能应该变成一个 TypeError

如果这个字符串替换的东西有问题,那么这是转向首选的字符串格式化新方法的另一个原因,例如打印 '{0:x}'.format(22)

关于python - python交互模式下的交替错误和无错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8130826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com