Python namespaces everything: Everything is in a module, and everything defined in a module has module scope rather than global scope (you have to go out of your way and do evil things to add something to "all" scopes). So name collisions aren't an issue. In PHP, on the other hand, if you just go ahead and define a function, you put it in the same scope everyone is using for global names. You either explicitly use a
namespace to prevent that, or you use a class as "namespace" (though the class should probably be in a
namespace itself). The added bonus is that classes benefit from autoloaders, whereas functions do not IIRC.
There are philosophical differences too. The Python community is (and long has been) very open to utilizing multiple paradigms. Classes, higher-order functions and simple procedural programming are all equally accepted ways of doing stuff, as long as they fit the problem. And module-level data + functions does just what, so unless you need polymorphism or want a strong association with a particular class, there's little benefit of attaching a non-method to a class.
In contrast, the PHP community (at least since the majority stopped screwing around and giving PHP the bad reputation it built up over the years) seems to be focused heavily on object-oriented programming. Free functions simply don't fit into this paradigm, whereas
static is widely accepted. I don't quite get the logic behind that, but such is the convention.
Finally, note that
staticmethod is not only eschewed because we don't like the concept of static methods. Sometimes we do want static methods, but then we usually prefer
classmethod, which does basically the same thing but gives more power to the method (it receives the class object, and can thus there can be polymorphism among
staticmethod is sometimes considered to be entirely redundant.