やること
タイトルが何言ってるかわからないと思いますが、Pythonで
x = function()
と関数を呼んだとき、関数内から「お、こいつはxに代入しようとしてるな」を検出できないかということです。
結論から言うとそんな便利な方法は用意されていないのですが、無理やり実現することはできます。
方法
こんな感じです。
import inspect
def function():
#被代入変数名の検出
frame = inspect.currentframe().f_back
code = frame.f_code
calling_line = frame.f_lineno
with open(code.co_filename, 'r', encoding='utf-8') as f:
lines = f.readlines()
calling_code = lines[calling_line - 1]
variable_name = calling_code.split('=')[0].strip()
del frame
print(f'{variable_name}に代入したよね?')
return [None] * len(variable_name.split(','))
x = function()
x, y = function()
xに代入したよね?
x, yに代入したよね?
要は実行されたコードを調べて、関数を呼び出している行の=の左側にある文字を検出するんですね。
ただこの方法は非常に脆くて環境によってあっさりエラーが出るのでまったくおすすめしません。Colabでも機能しません。あしからず。
おわりに
いつ使うんだこれ?