Tips:PythonのイースターエッグPythonのイースターエッグについてご紹介します。・・・の説明の前に、まずは「イースターエッグ」について。イースターエッグとは、開発者の遊び心で作られた隠し機能のことです。Wikipediaのページでは次のように説明されています。egg)とは、コンピュータのソフトウェア・書籍・CDなどに隠されていて、本来の機能・目的とは無関係であるメッセージや画面の総称である。ユーモアの一種である。これらを「イースター・エッグ」と呼ぶのは、キリスト教の復活祭の際に、装飾した卵(イースター・エッグ)をあちこちに隠して子供たちに探させる遊びにちなむ。個人的には、もともとの卵を探す遊びの方を知らないので、イースターエッグといえばこちらのイースターエッグが思い浮かびます。Pythonにもイースターエッグが存在するようです。以下、いくつか見ていきます(これから知る方にとってネタバレにならないよう、やり方だけ・・・)。Python」(禅オブPython)がズラズラーっと表示されます。world」ですよね。phello」、でしょうか。bracesこれはPythonのインデント構文にまつわるイースターエッグです。結果は「ありえないっす!」的なニュアンスでしょうか。なんて導入するわけないじゃん!」的な感じなのかな。antigravityこれは、やってみてのお楽しみ。antigravityは「反重力」的な意味です。is...最後に、これはイースターエッグではないのですが、Pythonインタプリタを使ったことば遊びとしてPythonメーリングリスト上で紹介されたそうです。loveTrueTrue以上です。件のコメント:2013/07/22ライブラリ:timeitPythonの「timeit」というライブラリについてご紹介します。timeit「timeit」は実行時間を計測するためのライブラリです。スクリプト内で使うこともコマンドラインからも使うこともできます。以下、順に見ていきます。0.45...など時間を計測するには、Timerクラスのインスタンスを生成した後timeit()メソッドを実行すれば行うことができます。Timerクラスを生成するときは、「時間を計測したい処理」と、その最初に実行したい「前処理」を与えます。デフォルトでは100万回実行されたときの合計時間が返ってきます。time)ではありません。t.timeit(1000)timeit()に整数を渡すと、実行回数を変更することもできます。この場合は1000回の繰り返しとなります。min(t.repeat(5))repeat()は、timeitによる計測をn回連続で行い、結果を長さnのリストに格納して返してくれます。この場合は長さ5のリストが返ってきます。timeit()が返す数値は他の実行中のプロセスなどによって変わったりもするため、複数回試した場合は、その平均値よりも最小値(min)を見ておくのがよいそうです。in.つづいて、コマンドライン上での使い方について。timeit」のあとにオプションをつけて使います。デフォルトでは、3回実行したうちの最小の時間が帰ってきます。range(1000)]"オプション「n」で1試行あたりの実行回数、「r」で試行回数、「s」で前処理を指定することができます。この場合であれば、処理を10回連続で実行したときの時間を5回計測し、そのうちの最短の時間を返してくれます。ほかにもオプションがありますので、詳しくは公式ドキュメントをご参照ください。件のコメント:2013/07/20ライブラリ:calendarPythonの「calendar」というライブラリについてご紹介します。calendar「calendar」は、名前のとおりカレンダー情報を扱うためのライブラリです。中身はとてもシンプルで、「何年何月」という形で特定の月を指定すればその月の日・曜日情報を返す、といった機能がメインです。広い範囲で日付や時間の情報を扱いたい場合は「datetime」や「time」といったライブラリが便利です。以下、主な機能を見ていきます。31month()は、年と月を整数で渡せば、その月のカレンダーを文字列として返してくれる関数です。strと表示される返ってくる中身は通常の文字列です。Calendarカレンダーをひとつ表示するだけであればmonth()で十分ですが、ちょっと複雑な(といってもシンプルですが)カレンダー情報を扱うのであればCalendarクラスを利用するのが便利です。表示されるインスタンスメソッドiterweekdays()は、曜日を表す0から6の数字を生成してくれるイテレータです。0が月曜日、6が日曜日に対応しています。表示される始まりの曜日はデフォルトでは月曜日となっていますが、変えたい場合はオプションfirstweekdayが利用できます。曜日)を返してくれるメソッドです。その月の「最初の日を含む週の最初の日」から「最後の日を含む週の最後の日」までの日付が返ってくるため、要素数は必ず7の倍数です。その月に属さない日の日付部分はすべて0となります。名前に「2」のつかないitermonthdays()というメソッドもあって、こちらは曜日情報を含まない日付の部分のみをリストで返します。曜日)というフォーマットで返しましたが、itermonthdates()は各要素をdatetimeライブラリのdatetime.date型のインスタンスとして返します。6)]itermonthdays2()はすべての日付をフラットに返しましたが、monthdays2calendar()は、itermonthdays2()が返す要素を週単位に分けて返してくれます。2013-07-29monthdays2calendar()と同様に、datetime.dateを週単位にまとめて返してくれるmonthdatescalendar()というメソッドもあります。週単位にまとめるのでlen(c4)は5(5週)となっています。メインとなるのはこのCalendarクラスですが、その他にも、カレンダーを表示することに特化したTextCalendar、HTMLCalendarというクラスが用意されています。c5.formatyear(2013)TextCalendarは、カレンダー情報をテキストとして出力するためのクラスです。formatmonth()は月単位、formatyear()は年単位で次のような整形されたカレンダーを出力することができます。31HTMLCalendarTextCalendarがプレーンテキストに表示するのに対し、HTMLカレンダーは、タグ付きのHTMLフォーマットのカレンダーを出力します。8))f.close()以上です。件のコメント:2013/07/18ライブラリ:timePythonの「time」というライブラリについてご紹介します。time「time」は、時間関連の情報や関数を集めたライブラリです。用途によって変わってはくるかと思うのですが、頻度の高い使いどころとしては次のようなものがあるでしょうか。システムの現在時刻を取得する時刻形式のデータを生成する時刻のフォーマットを変更するスリープ以下、順番に見ていきます。・・・の前にひとつ前置きを。以下、epoch(エポック)ということばが出てきますが、これは「原点となる時点」を表すことばとして使っています。西暦であれば西暦0年1月1日の0時がエポックですし、平成であれば平成元年1月1日の0時がエポックといえます。Unixの世界では、これが1970年の1月1日0時に設定されており、そこからの経過秒数がベースとなっています。公式ドキュメントにも説明が載っています。それでは以下、順番に。epochからの秒数を返しますepochからの時間を秒数で得るにはtime()を使います。time.struct_timeオブジェクトとして返します人間にとってわかりやすい年・月・日という形式の時刻情報を取得するには、gmtime()を使います。これは、time.struct_timeという形式で現在時刻を返してくれます。情報をアトリビュートとして持ったオブジェクトです。年・月・日など以外にも、曜日、その年の頭から数えての経過日数、サマータイムに関するフラグなどの情報も持っています。それぞれ名前は次のとおりとなっています。サマータイムのフラグ公式ドキュメントの該当するパートもよろしければごらんください。tm_isdst=0])時刻形式形式のデータを生成するには、time.struct_timeに時刻情報が入ったリストを渡します。時刻情報は、上述の年・月・日などの9つの情報となります。epochからの秒数struct_time形式の時刻を「epochからの秒数」に変換するには、mktime()を使います。1秒以下の精度でも時間を計測することができます。変換するには、gmtime()、localtime()に引数を与えて使います。返されますstruct_time形式の時間をフォーマット指定で文字列に変換するには、strftime()を使います。...文字列を読み取ってstruct_time形式に変換するには、strptime()を使います。引数のひとつめに文字列を、ふたつめにフォーマットを渡します。strftime()とstrptime()のフォーマットにおける規則はこちらに一覧が載っています。3.5秒停止Pythonプロセスの実行を一定時間停止するには、sleep()を使います。引数の単位は「秒」です。インストールtimeはPython本体をインストールすれば最初から入っているため、別途インストールは必要ありません。件のコメント:2013/07/06ライブラリ:datetimePythonの「datetime」というライブラリについてご紹介します。datetime「datetime」は、時間に関するデータを取り扱うためのライブラリです。Pythonの標準モジュールとしてPythonに同梱されています。時間情報を扱う同様のライブラリとして「time」「calendar」などがあります。日付)が手軽に取り扱えるなどのポイントがtimeと異なる点かと思います。以下、おもな機能を見てみます。timedatetimeには、datetime、date、timeという3つのタイプのデータ型があります。名前のとおり、datetimeは日付と時刻をまとめた時間、dateは日付のみ、timeは時刻のみを扱うオブジェクトです。timedeltaまた、日付間、時刻間の差分を表す型として、timedeltaというものが用意されています。マイクロ秒(100万分の1秒)という情報を持ったデータ型です。...)という形式でインスタンスを作ることができます。メソッドtoday()を使うと、現在の日・時を得ることができます。t1と同じフォーマットで現在時刻が表示されるfromtimestamp()というメソッドを使えば、time.time()が返すような、1970年1月1日0時からの経過秒数で表された時刻フォーマット(POSIXタイム)をdatetime形式に変換することができます。表示される文字列で表された時刻をdatetime型に変換するには、strptime()を使います。年や月などの情報にアクセスするには、アトリビュートやメソッドを使います。「-」演算子を使うことで、2時刻間の差分も簡単に得ることができます。表示される差分を取ることで、timedeltaインスタンスが自動的に生成されます。datetime型の変数に「+」「-」演算子でtimedeltaを加えることで、元の日付にその差分を加えた日付を得ることも可能です。情報のみを持ったデータ型です。datetimeが持つパラメータや機能のうち時刻の部分を取っ払って日付に関する部分だけを抽出したような内容となっています。データとしては日付部分だけしか見なくてdatetimeは冗長だ、といった場合なんかには便利かと思います。マイクロ秒のみを持ったデータ型がtimeです。timeはdatetime、timeと比べて機能がシンプルで、today()やnow()なども用意されていないようです。ほかにも、タイムゾーンを表現する「tzinfo」や「timezone」といったオブジェクト、フォーマットの変換機能なんかも用意されていておもしろいので、詳しくは公式ドキュメントをごらんになってください。インストール「datetime」は標準モジュールとしてPythonに同梱されているので、別途インストールの必要はありません。使い方について書いています。系でところどころ異なるため参考にされる際は各記事の対象バージョンにご注意ください。簡素を追求する禅のような言語で、使っていて禅僧のような気分になれるところが魅力です(個人の感想であり効果・効能を示すものではありません)。:)author後藤隼人おかげさまで元気にやっています。