I'm wondering if there is a package or method to add content around delicate commands without changing the command's name. For example, let's say I want to change \sqrt[#1]{#2} command to yield \displaystyle{\sqrt[#1]{#2}} without having to change anything in the body of my document. I want the optional arguments and standard arguments to all work as they already did... I just want to make it so every square root is in display style. Is there a nice way to add this into the already existing macro? What if the macro is non-expandable, or it may be redefined later in the document (but I want my change to persist); can this be done as well?
Edit: I apparently picked a weird example, so how about if I wanted to edit \log to render \displaystyle\log instead? The actual commands aren't really important, it's the appending and/or prepending content to an existing macro without changing the syntax of that macro in the body of the document that I am wondering about.

\displaystyle{\sqrt}:\displaystyleis a declaration that remains valid for the current scope. – egreg Jul 24 '18 at 20:13\sqrtis a rather odd example actually as by far the largest part of the code is making it work consistently in\display, text,script,scriptscriptstyleso you are asking to disable almost all its functionality. – David Carlisle Jul 24 '18 at 20:17\displaystyle{\sqrt}does not work at all, so good or bad doesn't really apply. the\displaystylewould ignore the{}and make the rest of the expression displaystyle and the{}would stop\sqrttaking the argument expression to go under the radical. – David Carlisle Jul 24 '18 at 20:18\displaystyleis similar to\bfseriesa switch like macro, it doesn't take an argument but changes the style of the current scope (so group). E.g.$\frac{5}{7}\displaystyle{\frac{5}{7}}\frac{5}{7}$will change two\fracs to be display style not only one. – Skillmon Jul 24 '18 at 20:20