Я (справді) новачок у функціональному програмуванні (насправді мав контакт із ним лише за допомогою python), але, здається, це є гарним підходом до деяких завдань, що містять список, у середовищі оболонки.
Я хотів би зробити щось подібне:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
Чи є оболонка Unix з такою функцією? Або, можливо, якась функція, щоб дозволити легкий доступ до оболонки (команди, env / vars, readline тощо) зсередини python (ідея полягає у використанні інтерактивного інтерпретатора python в якості заміни bash).
Редагувати:
Можливо, порівняльний приклад уточнив би. Скажімо, у мене є список, складається з dir / file :
$ FILES=( build/project.rpm build/project.src.rpm )
І я хочу зробити дуже просте завдання: скопіювати всі файли на dist / AND встановити його в систему (це частина процесу збирання):
Використання bash:
$ cp $ {файли [*]} dist / $ cd dist && rpm -Uvh $ (для f у $ {файлах [*]}; виконайте базове ім’я $ f; виконано))
Використання підходу "пітонічна оболонка" (обережність: це уявний код):
$ cp [os.path.join ('dist', os.path.basename (файл)) для файлу у FILES] 'dist'
Ви можете бачити різницю? ТО про що я говорю. Як ще не можна вийти з оболонки з такими вбудованими матеріалами? Справжній біль обробляти списки в оболонці, навіть це настільки поширене завдання: список файлів, список PID, список всього.
І дійсно, дійсно, важливий момент: використання синтаксису / інструментів / функцій, які всі вже знають: sh та python.
IPython шви повинні бути в хорошому напрямку, але він роздутий: якщо ім'я var починається з "$", це робить це, якщо "$$" - це робить. Його синтаксис не є "природним", тому багато правил і "обхідних шляхів" ( [ ln.upper() for ln in !ls ]
-> помилка синтаксису)