Pythonでre.sub()をwrapしてreplの中でキャプチャした文字列を取得する関数
やりたいこと
関数fの中で定義した関数f1から、自分(f1)の外にある変数を更新する
ラッパー(f)では、ラップ対象(f1)によって更新された結果を返す
ポイント
返したい結果を入れる変数(fileanames)の初期化は、ラップ対象(f1)の前で行う
f1内でfilenames=[]を書いちゃうと、f1内localのfilenames、となってしまう
かといってglobal filenamesとしちゃうと、「global(fの外)にあるfilenames」という意味になってしまう
Pythonでは「globalじゃないけどひとつ上のスコープ」を指す命令はない(はず)
code:py
def f(x):
filenames = []
def f1(x):
if x%2==1:
filenames.append('odd')
return
filenames.append('even')
return
f1(1)
f1(2)
f1(x)
return filenames
print(f(1))
print(f(2))
print(f(3))
https://gyazo.com/927436410d2f4d16f8a5ec272442c04d