Argument & Variable differences

There is not much content available in doc’s about the differences between an Argument &Variable. I know argument has in and out direction. Most of the time we use only arguments. I want to know where we can use the variable and more differences about it!

According to me, the variables have scopes, and arguments are global for the whole process.

The scope can be for that particular canvas tool or the flowchart.
I have always used arguments whenever I have created a process.

Even, I want to know if there’s any advantage in using variables over arguments.
Also, does it works similar to access specifiers like public and private?