为什么类型强制在脚本/交互式提示符上的工作方式不同?

时间:2010-08-09 11:17:26

标签: python

我正在使用Python 3.1.2(Mac OS X 10.6)并发现这种奇怪的行为(我是新手,顺便说一下):

在交互式提示符上:

>>> fraction = 4 / 3
>>> print(fraction)
1.33333333333
>>> print(type(fraction))
<class 'float'>

但是,如果我在脚本中执行相同的操作,结果会有所不同:

## fraction.py

fraction = 4 / 3
print(fraction)
print(type(fraction))

输出:

1
<class 'int'>

这是正常的吗?

2 个答案:

答案 0 :(得分:2)

不,这不正常。您确定在该脚本中运行Python 3吗?可能会选择Python 2.5(Mac OS X上的默认安装)。尝试通过

进行验证
import sys
print (sys.version)

如果您将脚本作为./fraction.py运行,则可以通过添加

来强制shell使用Python 3.1
#!/usr/bin/env python3.1

在第一行。

答案 1 :(得分:1)

KennyTM说的话。原因是在Python&lt; 3中,如果两个参数都是整数,/表示整数除法。这很愚蠢,并且在Py3k中进行了更改,以便/始终返回float,即使将int分开。