あんまりうまく伝わってる気がしない……
とにかく変数名を管理しようとしてはいけない
管理できているうちはいいけど大体途中で無理が来る
管理しなくていいように引数とか戻り値とかの概念がある
# x を受け取って y を返す関数
def f(x):
y = 2*x
return y
def main():
y = 1
# f() の仮引数名が x であることを忘れてしまったので
# y で呼び出す
# また f() の戻り値の名前が y であることも
# 忘れてしまったので x で受ける
x = f(y)
# それでも正しく動作する
print(x)