[英]Two versions of python giving two different results for the same code
如果使用 Python2 或 Python3 运行,以下代码会产生两种不同的结果。 为什么?
from skyfield.api import wgs84, load
latitude = -35
longitude = 150
altitude = 100
year = 2022
month = 1
day = 21
hour = 14
minute = 6
seconds = 43.941372
ts = load.timescale()
t_meas = ts.utc(year,month,day,hour,minute,seconds)
radar = wgs84.latlon(latitude, longitude, altitude)
radar_ECI = radar.at(t_meas)
print(radar_ECI.position.m)
Output 带天场 1.41 [-2804378.01051857 4419981.90545062 -3632070.86144542]
Output 带天场 1.40 [-2804356.81834716 4419995.31425895 -3632070.90655877]
Skyfield的两个版本并不相同。 1.40 版安装在 Python2 上,1.41 版安装在 Python3 上。 一旦我升级到 1.41,问题就解决了。 但是,Skyfield 的更改日志中似乎没有任何内容可以解释为什么它会在这两个版本之间产生不同的结果。
我建议更新您的问题以显示您获得的两个输出。 没有它们,读者无法判断您是在询问 output 中的一个非常大的差异还是一个非常小的差异。
一个可能的答案(但没有看到输出,我不知道它们之间的差异是否在合理的范围内与这个解释相匹配):大多数 Skyfield 版本——理想情况下,所有 Skyfield 版本,但有时我忘记了——进行全新下载来自 IERS 的最新和最新的 ΔT 表。 他们不断地预测,然后测量地球的方向。 在 Skyfield 1.40 和 1.41 之间,表格已更新,这可能意味着对过去几个月地球指向的估计略有不同。 通常这意味着东西方向的差异,但返回的 position 在南北方向上没有差异。
毫无疑问,Python 2和3的编码方式有很多不同,应该考虑。 但是如果你想使用 Python 3 和相同的 Python 2 编码,你可以使用这个未来的内置库。 给出的金额可能会有所不同
syntax : from __future__ import ..
您可以在官方 Python 文档中了解它:
https://docs.python.org/3/howto/pyporting.html#the-short-explanation
也许这篇文章也会对您有所帮助,为了更好地理解差异:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.