Python 学習:goto ( decorator ) 発見

2014-03-24 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
2、3、1、1、2、 0、0、0、0、1(38)で、換算ポイント 59pt 。
特段のランク変動は無し?
・-・ - -・

さて、本文。

前回(2014-03-22)の記事:
Python 学習:16bpp 白黒TIFF画像入力
に続いて、更なる Python の学習。


先日(2014-03-20)の記事:
Python 学習:無いコトねだり
で、「goto」文を見つけたが、Python 2.7 では使えなかった。
と書いた。
これは、
  2004年4月1日にリリースしたもので、
  所謂“4月フール”の“ジョーク”。
  でも、チャンと動作はする。
と、作者は云っていた。


それで、諦めきれず探していたら、
「Stack Overflow」に、
compilation - 'goto' in Python
があった。
この質問者も、例に漏れず、
  何故、「goto」を欲しがるのか? と質問される。
と云っている。

<紙>の返答は、
“前方参照が出来ない”事への対処の為に、欲しい。
goto文があれば、最初に前方にジャンプし、
そこで、必要な関数定義をしておいて、
元に戻って、主処理を記述すれば、
一見、前方参照のようになる。
と云うこと。


それで、このQ&Aの回答は、
The goto decorator」(Python recipe by Carl Cerecke)
はどうか?と云うことですね。
「decorator」って、Python に備わっている機能の様ですが、
<紙>は良く理解できない。
でも、使えそう。

また、
この「Python recipe」って?
「Active Python」や「Active Perl」を出している、
「ActiveState」社のサイト内にあって、
この場合は「Python」だが、各言語の“レシピ”を提供しているページ。
これもブックマークしました。


さて、このレシピ No.576944 をダウンロードすると、
「recipe-576944-1.py」になる。
(ハイフンは使えないので、アンダーバーに変え、)
最後のテストメイン処理を除外して、「recipe_576944.py」とし、
(文字コードを UTF-8 で)セーブした。

一方、
除外したテストメインに、
“from recipe_576944 import *”
を追加して、
「test_goto.py」を作った。

この2つのファイルで、テストしたら、
x86 でも、x64 でも、WinPython 2.7.6.3 で正常に実行できた。
(つまり、「assert(test1(10) == 55)」で何も起こらなかった。)


これは、使える。

でも、関数定義の直前に「@goto」と書かないと機能しない。
これが、decorator と云うモノ???

だから、「goto」文 では無い!!!


プログラム全体(の殆ど)を1つの関数の中に閉じこめて、
(この関数を呼び出す文は、本当の最後に記述する。)
その1つの関数の中で、
最初に goto で先に飛ばし、事前処理をし、
そして、goto の次に(gotoで)戻る。

と云った事になる?


そうすると、新たな疑問が湧いてくる。
関数の中に関数を定義できるの?
ローカル変数/グローバル変数はどうなるの?


もっともっと、Python の学習が必要ですね。



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140228
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 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 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク