传递参数一次,但使用多次

发布于 2024-09-04 03:46:00 字数 269 浏览 5 评论 0原文

我正在尝试这样做:

commands = { 'py': 'python %s', 'md': 'markdown "%s" > “%s.html”; gnome-open "%s.html"', }

命令['md'] % '文件.md'

但是正如你所看到的,commands['md'] 使用了参数 3 次,但是commands['py']只需使用一次。如何在不更改最后一行的情况下重复该参数(因此,只需传递一次参数?)

I'm trying to do this:

commands = { 'py': 'python %s', 'md': 'markdown "%s" > "%s.html"; gnome-open "%s.html"', }

commands['md'] % 'file.md'

But like you see, the commmands['md'] uses the parameter 3 times, but the commands['py'] just use once. How can I repeat the parameter without changing the last line (so, just passing the parameter one time?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

も让我眼熟你 2024-09-11 03:46:00

注意:接受的答案虽然适用于较旧版本和较新版本的 Python,但在较新版本的 Python 中不鼓励使用。

由于 str.format() 相当新,许多 Python 代码仍然使用 % 运算符。但是,由于这种旧的格式设置最终将从语言中删除,因此通常应使用 str.format()。

因此,如果您使用的是 Python 2.6 或更高版本,则应使用 < code>str.format 而不是旧的 % 运算符:

>>> commands = {
...     'py': 'python {0}',
...     'md': 'markdown "{0}" > "{0}.html"; gnome-open "{0}.html"',
... }
>>> commands['md'].format('file.md')
'markdown "file.md" > "file.md.html"; gnome-open "file.md.html"'

Note: The accepted answer, while it does work for both older and newer versions of Python, is discouraged in newer versions of Python.

Since str.format() is quite new, a lot of Python code still uses the % operator. However, because this old style of formatting will eventually be removed from the language, str.format() should generally be used.

For this reason if you're using Python 2.6 or newer you should use str.format instead of the old % operator:

>>> commands = {
...     'py': 'python {0}',
...     'md': 'markdown "{0}" > "{0}.html"; gnome-open "{0}.html"',
... }
>>> commands['md'].format('file.md')
'markdown "file.md" > "file.md.html"; gnome-open "file.md.html"'
攒一口袋星星 2024-09-11 03:46:00

如果您不使用 2.6,则可以使用字典修改字符串:

commands = { 'py': 'python %(file)s', 'md': 'markdown "%(file)s" > "%(file)s.html"; gnome-open "%(file)s.html"', }

commands['md'] % { 'file': 'file.md' }

%()s 语法适用于任何正常的 % 格式化程序类型,并接受常见的其他选项: http://docs.python.org/library/stdtypes.html#string-formatting-operations

If you are not using 2.6 you can mod the string with a dictionary instead:

commands = { 'py': 'python %(file)s', 'md': 'markdown "%(file)s" > "%(file)s.html"; gnome-open "%(file)s.html"', }

commands['md'] % { 'file': 'file.md' }

The %()s syntax works with any of the normal % formatter types and accepts the usual other options: http://docs.python.org/library/stdtypes.html#string-formatting-operations

鹿港小镇 2024-09-11 03:46:00

如果您不使用 2.6 或者想使用那些 %s 符号,这里有另一种方法:

>>> commands = {'py': 'python %s',
...             'md': 'markdown "%s" > "%s.html"; gnome-open "%s.html"'
... }
>>> commands['md'] % tuple(['file.md'] * 3)

'markdown "file.md" > “文件.md.html”; gnome-打开“file.md.html”'

If you're not using 2.6 or want to use those %s symbols here's another way:

>>> commands = {'py': 'python %s',
...             'md': 'markdown "%s" > "%s.html"; gnome-open "%s.html"'
... }
>>> commands['md'] % tuple(['file.md'] * 3)

'markdown "file.md" > "file.md.html"; gnome-open "file.md.html"'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文