コードベースを分割するために、より小さなネストされた関数に分割したメソッドがあります。
def foo(x,y):
def do_this(x,y):
pass
def do_that(x,y):
pass
do_this(x,y)
do_that(x,y)
return
ネストされた関数の1つを単独で実行する方法はありますか?例えば:
foo.do_this(x,y)
編集:
pyramid_breakerを使用して構築したWebサーバーでキャッシュをセットアップしようとしています
def getThis(request):
def invalidate_data(getData,'long_term',search_term):
region_invalidate(getData,'long_term',search_term)
@cached_region('long_term')
def getData(search_term):
return response
search_term = request.matchdict['searchterm']
return getData(search_term)
これは私の理解が正確ではないかもしれないということです:
これを持っている理由は、デコレータがキャッシュキーを作成するために使用する名前空間が、関数と引数から生成されるためです。したがって、リクエスト変数は一意であり、キャッシュは役に立たないため、getThisにデコレータを配置することはできません。そこで、繰り返し可能な引数(search_term)を持つ内部関数を作成しました。
ただし、キャッシュを無効化(つまり更新)するには、無効化関数はスコープが「getData」関数を認識している必要があるため、ネストする必要もあります。したがって、入れ子関数を呼び出す必要があります。あなたの素晴らしい人々はそれが不可能であることを明らかにしたので、誰かが私が別の構造でそれを行う方法を説明することができますか?