Python, эквивалентный Perl qw ()

Я делаю это много в Perl:

printf "%8s %8s %8s\n", qw(date price ret);

Однако лучшее, что я могу придумать в Python, это

print '%8s %8s %8s' % (tuple("date price ret".split()))

Мне просто интересно, есть ли более элегантный способ сделать это? Я в порядке, если вы скажете мне, что это так, и никаких улучшений сделать нельзя.

26
задан Zhang18 20 August 2010 в 20:37
поделиться

2 ответа

Что ж, определенно нет способа сделать именно то, что вы можете сделать в 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   }
23
ответ дан 28 November 2019 в 07:40
поделиться

"дата цена ret" .split ()

11
ответ дан 28 November 2019 в 07:40
поделиться