Well, the comparison by Peter Norvig makes Python and Lisp look pretty similar (https://norvig.com/python-lisp.html, also linked below in this thread).
In some cases, you can get around no-first-class-identifiers in Python by using strings and getattr(object, symbol) or locals()[symbol]. (What are other use cases of first-class identifiers, other than making some function arguments or macros look prettier?)
And when Norvig made that claim in from of McCarthy, McCarthy disagreed.
> Peter bravely repeated his claim that Python is a Lisp.
> Yes, John?" Peter said.
> I won't pretend to remember Lisp inventor John McCarthy's exact words which is odd because there were only about ten but he simply asked if Python could gracefully manipulate Python code as data.
> "No, John, it can't," said Peter and nothing more, graciously assenting to the professor's critique, and McCarthy said no more though Peter waited a moment to see if he would and in the silence a thousand words were said.
> What are other use cases of first-class identifiers, other than making some function arguments or macros look prettier?
You are completely missing the point. Not having identifiers be first-class objects with unique identity is how Python ended up being unable to reload code properly.
In some cases, you can get around no-first-class-identifiers in Python by using strings and getattr(object, symbol) or locals()[symbol]. (What are other use cases of first-class identifiers, other than making some function arguments or macros look prettier?)