あんまりうまく伝わってる気がしない……
とにかく変数名を管理しようとしてはいけない
管理できているうちはいいけど大体途中で無理が来る
管理しなくていいように引数とか戻り値とかの概念がある
# 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)