<p>在Python 3上,它可能看起来像:</p>
<pre><code>with open("output.txt", "a") as file: # append to the file
print(*kF, sep=', ', file=file)
# etc...
</code></pre>
<p>为了便于阅读,我在逗号后面加了空格。见<a href="https://stackoverflow.com/q/36901/4279">What does ** (double star) and * (star) do for parameters?</a></p>
<p>在Python2上,您可以在脚本的顶部添加<code>from __future__ import print_function</code>,并手动转换为字符串<code>", ".join(map(str, kF))</code>,或者仅仅:</p>
^{pr2}$
<p>您可以使用<code>kF</code>对象来代替<code>kFx</code>,<code>kFy</code>,<code>kFz</code>,例如元组/列表:</p>
<pre><code>kF = "kFx value", "kFy value", "kFz value"
</code></pre>
<p>或者为了可读性,您可以<a href="https://docs.python.org/3/library/collections.html#collections.namedtuple" rel="nofollow noreferrer">use ^{<cd7>}</a>创建一个自定义类:</p>
<pre><code>from collections import namedtuple
Point3D = namedtuple("Point3D", "x y z")
kF = Point3D("kFx value", "kFy value", "kFz value")
# -> Point3D(x='kFx value', y='kFy value', z='kFz value')
</code></pre>
<p>它启用<code>kF.x</code>、<code>kF.y</code>、<code>kF.z</code>语法。如果需要可变对象,可以<a href="https://docs.python.org/3/library/types.html#types.SimpleNamespace" rel="nofollow noreferrer">use ^{<cd11>}</a>:</p>
<pre><code>from types import SimpleNamespace
kF = SimpleNamespace(x="kFx value", y="kFy value", z="kFz value")
kF.x += " modified"
# -> namespace(x='kFx value modified', y='kFy value', z='kFz value')
</code></pre>
<p>在Python2上,可以使用<code>class Point3D: pass</code>部分模拟它。在</p>
<p>要获得更丰富的功能,您可以<a href="https://pypi.python.org/pypi/attrs" rel="nofollow noreferrer">try ^{<cd13>} package</a>:</p>
<pre><code>#!/usr/bin/fades
import attr # fades.pypi attrs
Point3D = attr.make_class("Point3D", ["x", "y", "z"])
kF = Point3D("kFx value", "kFy value", "kFz value")
kF.x += " modified"
# -> Point3D(x='kFx value modified', y='kFy value', z='kFz value')
</code></pre>
<p>要运行此代码示例和其他需要来自PyPI的第三方Python包的代码示例,可以<a href="https://fades.readthedocs.io/" rel="nofollow noreferrer">use ^{<cd14>} for convenience</a>(要安装,请运行:<code>sudo apt-get install fades</code>)。虽然这不是必需的,但是您可以手动安装依赖项:<code>pip install attrs</code>(确保运行脚本时使用与<code>pip</code>相同的<code>python</code>可执行文件:<code>head -1 $(command -v pip)</code>)。在</p>
<p>要将<code>kF</code>打印到文件:</p>
<pre><code>print(*attr.astuple(kF), sep=', ', file=file)
# -> kFx value modified, kFy value, kFz value
</code></pre>
<p>要以JSON格式保存:</p>
<pre><code>import json
with open("kF.json", "w", encoding='utf-8') as json_file: # overwrite the file
json.dump(attr.asdict(kF), json_file)
# -> {"x": "kFx value modified", "y": "kFy value", "z": "kFz value"}
</code></pre>