mieki256's diary



2023/06/20(火) [n年前の日記]

#1 [python] Pythonには__END__が無かった

Pythonで実験用のスクリプトを書いていた際に、スクリプトソースの最後のあたりにデータ行を書けないのかなと思えてきた。

RubyやPerlならできる :

Ruby や Perl では、そういうことが ―― スクリプトソースの最後にデータを列挙することができる。

Ruby の場合、__END__ と書くと、そこから下はデータとして扱えて、DATA定数を使って取得することができる。

_Ruby の __END__ と DATA とは - Just do IT
_DATAと__END__でファイルオブジェクトを扱う | Ruby入門 - Worth Living
_[ Ruby ] DATA定数って何よ? [ 知ってる? ] - Qiita


Perl も似た感じで、__END__ 以降を <DATA> で取得することができる。

_ぺるりめも / DATAと__END__
_Perlでファイル内に書いた文字複数行を<DATA>で参照・ループする方法 - Qiita
_特殊ファイルハンドル DATA - ぱるも日記

Pythonはできない :

Ruby や Perl ではこういうことができるんだから、当然 Python にもあるんだろう。と思ってググってみたけど…。どうやら Python はそんな仕様を持ってないらしい…。

_Python, Ruby で簡単なテキスト処理 (1) - 特定の単語が含む行を抽出する | すぐに忘れる脳みそのためのメモ
_In Python what's the best way to emulate Perl's __END__? - Stack Overflow

「なんでそんなものが必要なんだ」とすら言われてるような…。Python の思想的に許せない何かがあるんだろうか。知らんけど。

考えてみれば、せっかくプログラム部分とデータ部分を分けた状態で作ってあっても、データ部分を変更したいだけなのにプログラムソースを書き換える羽目になるわけで、そこはデメリットかもしれないなと…。まあ、ちょっとしたスクリプトを配布する時に、プログラム部分とデータ部分の2つのファイルをわざわざ配布しなくて済む点はメリットなんだろうけど…。

さておき。Pythonも、自分で処理を書けば似たようなことができなくもないらしい。

_Pythonで__END__(もどき)を実現する - Qiita

以上、1 日分です。

過去ログ表示

Prev - 2023/06 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project