Steven D'Aprano <st...@pearwood.info> writes: > What design mistakes, traps or gotchas do you think Python has?
* Imports are fiendishly complex, hidden below deceptively simple syntax. It's a reasonable expectation that one can import a module from a source code file given its path on the filesystem, but this turns out to be much more complicated than in many other languages. There are reasons for this, some good, some merely historical baggage, some workarounds for OS misdesign, and some that may be Python's own mistakes. Those reasons are difficult to appreciate when first encountering the problem. * Somewhat related, and not really part of language design: The import mechanism and the packaging tools are woefully behind the state of the art in getting applications and their libraries to cooperate with operating system package management. This has the terrible effect that developers choose to insulate Python from the operating system, essentially losing all the benefits of the operating system package manager for their dependencies and needing to re-implement package management all over again, badly. This is largely the fault of operating systems with package dependency managers that are poor (Apple's) to nonexistent (Microsoft's). But the result is that Python's tools have been particularly woeful in this area compared to some other languages, and the Python community now has learned to subvert all OS package managers, even the good ones. > Gotchas are not necessarily a bad thing, there may be good reasons for > it, but they're surprising. * Python requires every programmer to know, or quickly learn, the basics of Unicode: to know that text is not, and never will be again, synonymous with a sequence of bytes. This is, in the long run, a good thing for all programmers and those who will use their programs. Programmers should expect to deal with non-ASCII text earlier than the innocent might suppose, and the likelihood goes up all the time. The sooner we replace the erroneous “text is ASCII” in the common wisdom with “text is Unicode”, the better. Nevertheless, the outstanding robustness of Python's Unicode support is different from most languages, and so is a gotcha. -- \ “Life does not cease to be funny when people die any more than | `\ it ceases to be serious when people laugh.” —George Bernard Shaw | _o__) | Ben Finney -- https://mail.python.org/mailman/listinfo/python-list