But I prefer globals because the code seems clearer when the functions take no arguments.
This is something you should unlearn as quickly as possible.
While I can see that feeling cleaner, consider the fact that anything, anywhere, at any time, can access and modify the variables.
As the project you're working on starts to grow, this will become a problem. Suddenly, the variable isn't what you expect it to be, and finding out why is extremely difficulty and time-consuming.
On the other hand, if you pass the variables you need into a function, you can follow it a lot easier. You won't pass lots of parameters that aren't used (because it's tedious and boring to pass everything all the time), so you'll end up with functions of code, for the most part, only take the parameters they actually need.
Globals are bad.
There are some exceptions (e.g. globals that are read-only aren't as bad), but for the most part you should stay away from them unless you have very very good reasons not to.