эквивалент python для perw qw ()

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

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

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

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

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

3 Solutions collect form web for “эквивалент python для perw qw ()”

Ну, определенно нет способа сделать именно то, что вы можете сделать в 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 } 

"date price ret" .split ()

QW() часто используется для печати заголовков столбцов с использованием join() в Perl. Головки столбцов в реальном мире иногда долгое время делают join("\t", qw()) очень полезным, потому что его легче читать и помогает устранить опечатки (например, "x","y" или "x\ty" ). Ниже приведен соответствующий подход в реальном Python:

  print("\t".join('''PubChemId Column ESImode Library.mzmed Library.rtmed Metabolite newID Feature.mzmed Feature.rtmed Count ppmDiff rtDiff'''.split())) 

Строка тройной цитаты – это странная вещь, потому что она удваивается как комментарий. В этом контексте, однако, это строка, и это освобождает нас от необходимости беспокоиться о разрывах строк (поскольку qw() будет).

Благодаря предыдущим ответам на этот подход.

  • Прояснение очевидных противоречий относительно слабо типизированных языков
  • Добавление printf к запуску всех функций в файле
  • Как совместить подстроку в строке, игнорируя регистр?
  • Должен ли один снижать код сервера, когда он находится в производстве?
  • Как надежно угадать кодировку между MacRoman, CP1252, Latin1, UTF-8 и ASCII
  • Низкая производительность чтения на Python
  • Используя Perl, Python или Ruby, как написать программу для «щелчка» на экране в запланированное время?
  • Что такое эквивалент Python «perl -V»
  • Python - лучший язык программирования в мире.