Я делаю это много в Perl:
printf "%8s %8s %8s\n", qw(date price ret);
Однако лучшее, что я могу придумать в Python, это
print '%8s %8s %8s' % (tuple("date price ret".split()))
Мне просто интересно, есть ли более элегантный способ сделать это? Я в порядке, если вы скажете мне, что это так, и никаких улучшений сделать нельзя.
Что ж, определенно нет способа сделать именно то, что вы можете сделать в Perl, потому что Python будет жаловаться на неопределенные имена переменных и синтаксическую ошибку (возможно, отсутствует запятая). Но я бы написал это так (на Python 2.X):
print '%8s %8s %8s' % ('date', 'price', 'ret')
Если вы действительно привязаны к синтаксису Perl, я думаю, вы могли бы определить функцию qw
следующим образом:
def qw(s):
return tuple(s.split())
, а затем вы могли бы написать
print '%8s %8s %8s' % qw('date price ret')
, который в основном похож на Perl за исключением одной пары цитат по аргументу qw
. Но я бы не стал рекомендовать это. По крайней мере, не делайте этого только потому, что вы скучаете по Perl - он только позволяет вам отрицать, что вы сейчас работаете на новом языке программирования ;-) Это похоже на старую историю о программистах на Pascal, которые переходят на C и создают макросы
#define BEGIN {
#define END }