Talk:Python (programming language)/Archive 9

Object-oriented vs. Object-orientation
Is this correct?


 * Python supports multiple programming paradigms, including object-oriented, imperative and functional programming styles. (emphasis mine)

I think it should say "object-orientation", not "object-oriented". I have made this adjustment before and it was changed back. Am I in the wrong here?

EDIT: Boy I feel stupid. I did not read the full sentence. I'm sorry for wasting your time.

— Preceding unsigned comment added by Megakacktus (talk • contribs) 22:20, 27 May 2013 (UTC)

Proposed merge with CPython
It's important to make the distinction between language and implementation, but I don't think we need separate articles to do so. For the bulk of its users, and in many of the sources, CPython is Python, unless otherwise specified. AFAIK, the language spec is "do what CPython does (or documents)".

Also, a look at the current material on CPython shows a discussion of the GIL, but little else of encyclopedic value that isn't also discussed in this article. I think a section in this article is a better place to discuss the main implementation than a separate article. Q VVERTYVS (hm?) 19:40, 10 December 2015 (UTC)


 * Oppose. Python, more than other languages (maybe Java of 15 years ago), seems to have a community of developers who delight in nothing better than swapping between interpreters. The current article is a vacuous list of little more than version numbers, but there is scope for more interesting coverage on this topic (and the other interpreters).
 * I've got an all-day meeting on Monday that's likely to spend half of it talking about interpreter choices. If you're not good, I'll make you read the minutes! Andy Dingley (talk) 22:16, 10 December 2015 (UTC)


 * Oppose. There are many Python implementations, and almost all of them have their own page. CPython is by far the most commonly used Python implementation, so it wouldn't make sense for other implementations to have their own page, and CPython to not.
 * The main Python_(programming_language) is almost too long, and I'm not for putting more stuff in there. The Python_(programming_language) section could probably be trimmed a little (too much detail that is then covered in sub-pages).
 * peterl (talk) 22:30, 10 December 2015 (UTC)


 * Oppose. I think the list of supported platforms does have some value - I wouldn't want to delete that (and definitely not want to merge it into the main article). However, I agree with you that CPython is by far the most popular implementation, so things like the GIL should be treated in this article as well (in addition to the CPython article) — Preceding unsigned comment added by 194.118.194.68 (talk) 10:07, 14 December 2015 (UTC)


 * Oppose. Python is the programming language, while CPython is the official implementation. Having separate articles is nice and gives a suitable place for content about the official implementation. I think CPython is useful in the same way that Ruby MRI is useful. It's true that CPython is the official implementation, so it's obviously very special, but conceptually we should consider it to be an implementation of the Python language. Best regards. Huihermit (talk) 12:30, 16 December 2015 (UTC)


 * Oppose consensus apparent. Removing merge tag.

COI
I just linked to blogory.org after reading the policy guidelines.

Understandably Wikipedia is very sensitive about links, and so I want to be most respectful of the site. In case there is any concern about my posting, here is the background.

I run blogory.org. As of today, Jan 19, 2016 it has 169 links about Python, and 63 links about zodb.

Blogory.org is a site very similar to DMOZ or Yahoo Directory.

In contrast DMOZ, has 328 links about Python, and 1 link about zodb.

Really DMOZ is so out of date.

So I linked to the appropriate pages of my website from Wikipedia->Python blogory.org/python

and from Wikipedia->zodb blogory.org/zodb

I presume that is okay under the external links policy: "A well-chosen link to a directory of websites or organizations. Long lists of links are not acceptable. A directory link may be a permanent link or a temporary measure put in place while external links are being discussed on the article's talk page."

Please let me know if there is anything I should do to make this link more appealing to the Wikipedia community. Clozinski (talk) 14:07, 19 January 2016 (UTC)


 * Please see User talk:Clozinski. --Guy Macon (talk) 14:15, 19 January 2016 (UTC)

List of statements: style of paragraph on "=" statement does not fit with other statements
Currently the paragraph on the "=" statement is very long and does not really go well with the explanations on other statements. For example the 'if' statement is described like this:


 * The  statement, which conditionally executes a block of code, along with   and   (a contraction of else-if).

This is easy to understand for even for beginners. On the other hand the "=" statement is described like this:


 * The assignment statement (token '=', the equals sign). This operates differently than in traditional imperative programming languages, and this fundamental mechanism (including the nature of Python's version of "variables") illuminates many other features of the language. Assignment in C, e.g., "x = 2", translates to "typed variable name x receives a copy of numeric value 2". The (right-hand) value is copied into an allocated storage location for which the (left-hand) variable name is the symbolic address. The memory allocated to the variable is large enough (potentially quite large) for the declared type.  In the simplest case of Python assignment, using the same example, "x = 2", translates to "(generic) name x receives a reference to a separate, dynamically allocated object of numeric (int) type of value 2."  This is referred to as "binding" the name to the object. Since the name's storage location doesn't "contain" the indicated value, it is not proper to refer to it as a "variable."  Names may be subsequently re-bound at any time to objects of wildly varying types, including strings, procedures, complex objects with data and methods, etc. Successive assignments of a common value to  multiple names, e.g., "x = 2"; "y = 2"; "z  = 2" result in allocating storage to (at most) three names and a single numeric object, to which all three names are bound. Since a name is a generic reference holder it is not reasonable to associate a fixed data type with it.  However at a given time a name will be bound to some object, which will have a type; thus there is dynamic typing.

I think this is too complicated and doesn't fit with the rest of this list. My suggestion would be:


 * The assignment statement, which assigns a value to a variable.

We could move the longer version to Python syntax and semantics.

What do you think? --Marko Knoebl (talk) 23:09, 1 February 2016 (UTC)


 * There is no point in a para that says "The assignment statement, which assigns a value to a variable.", no more than there is in the statement "The   statement, which conditionally executes a block of code, along with   and   (a contraction of else-if)."  Both of these are trivially obvious to anyone with the rudimentary level of knowledge we would assume for a reader interested in an article on a specific programming language. Both fail WP:MANUAL (by not even reaching that level!). Is there a single reader who reads past the lead (which introduces Python as an unsurprising block-structured procedural language) and will then learn anything new from such a bland statement? If we are to have descriptions no more detail than that, then we might as well state nothing about the assignment operator or the if statement at all and just save the length.
 * Python's assignment operator is a little more than this though. This article goes into it in some depth. This is useful depth and generally to be commended. We need more like that, not less.
 * We could move it, as there is an article at Python syntax and semantics. Given the two levels of articles this is viable. It's not there as yet and it is needed there. This description is quite important for understanding Python behaviour.
 * So I'd be OK with moving it, but I'd prefer to keep it and maybe re-cast it as an explanation of a broader typing and instancing concept than just "explaining what assignment operators are". It shouldn't be lost though. I don't like the idea either of replacing it with the bland statement. Of the two, I'd rather delete the vacuous and pointless explanation of the if statement. We're not a manual, we don't have to list every feature. Our job is to explain Python and its characteristic features, not exhaustively document it for a beginner's lesson. Our readers already understand the basics of assignment and conditional branches. Viam Ferream (talk) 13:03, 2 February 2016 (UTC)


 * Thanks for your constructive comments. What bothers me about the section is that it somehow diminishes the article's readability as more and more (unrelated) stuff is put in the section "Statements and control flow". If you look at that section from 2007 you'll see that it just included five statements. (In my eyes these five statements are amongst the "central" ones in Python and give a quite good overview of the language). In the past this section has been expanded to include many other (less significant) statements and has also absorbed other topics like coroutines or (in the edit at hand) an explanation of dynamic typing and reference types.
 * I'm wondering if we should restructure the section entirely and get rid of the list of statements (presenting its current content in a more meaningful way) --Marko Knoebl (talk) 22:40, 4 February 2016 (UTC)


 * I made bold change, but will now revert it myself after seeing that this has been under active discussion. I think my change was OK, but I should have come here first. Snori (talk) 06:00, 20 September 2016 (UTC)

"Compile time"
Under Typing, we currently have, "Type constraints are not checked at compile time...", although Python is introduced as an interpreted language. This is a paradox (as the linked articles for "compile time" and "interpreted language" support).

What is the intended meaning here? There seem to be two possibilities:

1. "Type constraints are not checked once, statically, but only when and if they are executed" (could even be independently checked every time they are executed).

2. "On those occasions when Python code is to be compiled instead of interpreted (as with PyPy, Cython, or other), type constraints are not checked at compile time."

Jmacwiki (talk) 05:36, 4 December 2016 (UTC)

Needs "Criticism"
Some other Wikipedia pages about programming languages have a subheader titled "criticism". Python's page doesn't have that. List criticism below to add it to the future subheader. Andrew Gunner (talk) 18:24, 23 February 2017 (UTC)


 * Criticism should rather be represented in prose instead of a list. Nevertheless, make sure to cite sources. -- ChamithN   (talk)  18:57, 23 February 2017 (UTC)


 * But be careful of this: "sections dedicated to negative material may violate the NPOV policy and may be a troll magnet, which can be harmful if it leads to users with strong opinions dominating the article but may simplify maintenance of the article if unhelpful edits are limited to a single section". -- peterl (talk) 21:10, 23 February 2017 (UTC)

As of Python 3.6, there is literal string interpolation
https://docs.python.org/3/whatsnew/3.6.html--Mister Infamous (talk) 05:53, 7 March 2017 (UTC)


 * Yes, and aren't they beautiful! I've updated the section that mentioned "no string interpolation". peterl (talk) 00:05, 8 March 2017 (UTC)
 * Thanks! All the best: Rich Farmbrough, 19:16, 15 April 2017 (UTC).

External links modified
Hello fellow Wikipedians,

I have just modified 5 external links on Python (programming language). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20070501105422/http://www.amk.ca/python/writing/gvr-interview to http://www.amk.ca/python/writing/gvr-interview
 * Corrected formatting/usage for https://www.python.org/community/pycon/dc2004/papers/24/metaclasses-pycon.pdf
 * Corrected formatting/usage for http://www.2kgames.com/civ4/blog_03.htm
 * Corrected formatting/usage for https://code.google.com/apis/documents/docs/1.0/developers_guide_python.html
 * Added archive https://web.archive.org/web/20081229095320/http://www.computerworld.com.au/index.php/id%3B66665771 to http://www.computerworld.com.au/index.php/id;66665771

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 22:12, 1 December 2017 (UTC)

Technical tag
I just read over the article, and came away mostly baffled. I am reasonably computer literate, and recognize some of the terms in the lead, but came away with only a slightly better understanding of Python than I had before I read it. Someone with more expertise needs to take a shot at making this more readable for the general public. Imagine your mom reading this, your mom who knows how to send and receive emails and can open up a Word document but who has never modified her computer registry or attempted to replace her internal hard drive— she knows there is a difference between a Mac and a PC, but isn't sure what it is. How would you explain Python to her in a way that would allow her to understand it? That is what this article needs to fix. The multiple links in the lead, etc., are good for obtaining this information, but Mom shouldn't have to click on a bunch of links to understand the basics of this article. Anyhow, someone please think about it. Thanks! KDS4444 (talk) 23:30, 21 August 2017 (UTC)


 * I disagree. I think this is a well-written article about the subject, and the first sentence provides plenty of context. The lead sentence "Python is a widely used high-level programming language for general-purpose programming, created by Guido van Rossum and first released in 1991." tells anyone what this article is about. Of course the rest of the article becomes more technical, but if you were not into programming one would read the first sentence and then move on. This article is less technical and uses less jargon than similar articles such as Java_(programming_language), C_(programming_language) and C++. peterl (talk) 09:10, 22 August 2017 (UTC)


 * I agree the article should be more readable for the general public, and this is also true for other programming language articles. When reading a wikipedia article about a car or a plant, I do not generally find a flow of bombastic jargon terms about the physics inside the engine or some very technical biology stuff. For example, is it really necessary to say "object-oriented, imperative, functional and procedural"? At least it seems non necessary to say it is procedural, this is not a very in-depth information, most useful languages used in engineering (not academia) are procedural; it does not mean so much to me.Danieldanielcolo (talk) 09:55, 25 February 2018 (UTC)


 * Yes, it is necessary to say "object-oriented, imperative, functional and procedural". These are different programming paradigms, and not all procedural languages have these other styles. So it's quite relevant. peterl (talk) 08:24, 27 February 2018 (UTC)

I disagree as well. I only started a little while ago,and I think I've gotten the hang of it. Here are some reasons I think it's good: 1.It has "batteries included". That means it comes with everything you need to get started. 2.It has good documentation. There is a pretty big online community, and the download comes with a help program. There are also lots of books. 3.Good for beginners. Python is easy to learn,but very powerful. I think you should try. CrazyMinecart88 (talk) 19:09, 25 February 2018 (UTC)

"fewer lines of code" in lead?
The lead says, "and a syntax that allows programmers to express concepts in fewer lines of code". Should that be removed? I have two problems. One, fewer than what (it says fewer than C or Java, but that's not saying much because they're small languages)? And two, it's not my experience anyway: compared to some languages (e.g. Perl, Matlab), I'd say Python is more verbose but also more readable. And it's not what I'd call a defining feature of python. Adpete (talk) 01:36, 14 March 2018 (UTC)


 * OK, I'm removing it. Adpete (talk) 02:02, 21 March 2018 (UTC)

I disagree. It says (said) "express *concepts* in fewer lines of code. Trying to create a hash map of linked lists in C requires an enormous number of LOC (assuming one statement = one line). I would consider the syntax a defining characteristic of the language. The statement was well ref'd, so I'd like it back in. peterl (talk) 03:27, 21 March 2018 (UTC)


 * Well I think you'd struggle to find a language which is less verbose than C for creating a linked list. But for the sentence to belong in the lead (let alone the first paragraph), Python should be less verbose than all, or nearly all, other languages. One ref says it is less verbose than C or Java (but I suspect that is also true for most other languages), and the other has a table showing 1/(lines of code): C 1, C++ 2.5, Fortran 2, Java 2.5, Visual Basic 4.5, Python Perl and Smalltalk all 6. So it's ahead of some pretty small languages, and equal with Perl and Smalltalk - nothing special. And it's from studies done in 1998-2000, so out of date. Adpete (talk) 06:05, 21 March 2018 (UTC)

Python 2 & 3
Should the second sentence of the lead in our very highest level introductory article on Python throw new readers immediately into the issue of Py2 vs Py3? See &. Andy Dingley (talk) 09:53, 18 April 2018 (UTC)
 * No, thanks for removing it. I take the point about 2 and 3 being different languages, but that is a detail for elsewhere in the article. Johnuniq (talk) 10:02, 18 April 2018 (UTC)
 * I think it's more than a "detail" and could use a substantial section. However it doesn't belong so early. Python is growing rapidly at the moment. A lot of Python coders now (by head count, rather than LoC count) have simply never used 2.  We could even try an article on the two (easily notable), but I think that would probably get stomped as WP:NOTMANUAL. Andy Dingley (talk) 10:09, 18 April 2018 (UTC)

Adding a "Learning Methods" section
Hello. New wiki editor here so I apologize if this topic has been hashed out before(although I couldn't find it in the talk archives). Would it be a good idea to add a short section about commond, and free, ways that programmers learn Python? I am thinking Python's built in library turtle, Google's free python course, etc. Since many people who land on this wiki will have at least a cursory interest in actually learning the basics of Python, it seems like a good place to encourage free and open source materials. Muhareer (talk) 15:32, 23 August 2018 (UTC)
 * It would have to be compliant with WP:NOTHOWTO. User:ALTAF ANSARI04/sandbox certainly isn't.
 * There's also the problem that it's now the start of term for Indian colleges and already we've seen a lot of trivial vandalism, and some well-intentioned but inappropriate changes. As a result, the article is likely to be locked from editing by new editors altogether.
 * It is difficult to use WP articles for three things simultaneously, although colleges keep trying! The article should be here as an encyclopedia article. It's not Wikipedia's role to be a classroom exercise in how to write articles though, obvious though that is as a thing to do in colleges. So it's good to get students engaged with article writing, but it must never be at the cost of the encyclopedia quality of those articles. Students also want to write a whole new article from scratch, and that's hard, as so many topics have been started now and what they need is expansion and improvement, not initial creation. It's much harder to teach article writing, when it's work on an existing article than when it's all new.  The third goal that colleges keep wanting to do is to write "how to" tutorial articles. These just don't belong here. There are places they do belong, even within Wikimedia projects, but not on the encyclopedia. Andy Dingley (talk) 09:21, 24 August 2018 (UTC)

Semi-protected edit request on 17 September 2018
Delete "(see Wikipedia's "Python IDE" article), " since there is not such article (any more?) and the link target is the same as the "see also" a few lines above. 2001:638:A0A:1192:1CFE:845C:B132:107F (talk) 10:59, 17 September 2018 (UTC)
 * Yes check.svg Done L293D (☎ • ✎) 11:45, 17 September 2018 (UTC)

Reads like a fan page
I came to this page to read about Python, but first I had to sit through how awesome the creator is, how long he worked as a leader and innovator, see a picture of him drinking beer... — Preceding unsigned comment added by 73.221.162.176 (talk) 15:05, 16 October 2018 (UTC)


 * Agreed. I cut the "History" section substantially and substituted a different photo of van Rossum from Commons:Category:Guido van Rossum.  Because there are separates article on the history of Python and Guido van Rossum, I hope we won't get too many complaints about these changes.


 * In the future, please feel free to make these kinds of changes yourself. The Wikimedia culture encourages us to be bold but not reckless, writing from a neutral point of view, citing credible sources.


 * In particular, if you still think that this reads like a fan page, feel free to make other edits -- but don't be surprised or offended if others have have different ideas. There's a fine art to communicating more by saying less.  DavidMCEddy (talk) 16:33, 16 October 2018 (UTC)

the loop variable of a for loop is NOT local in Python, it is global
in the section

Statements and control flow

it says under the description of the for keyword that it:

iterates over an iterable object, capturing each element to a local variable for use by the attached block.

the variable that the for loop uses is NOT local to the body of the loop, it is GLOBAL to the file:

for name in ['ted', 'ed', 'ned']: pass

print(name)   # this will print 'ned' because name is NOT local

(interestingly the loop variable in a list comprehension or generator expression IS local.)

Quizdog (talk) 03:32, 24 November 2018 (UTC)
 * Well it's not global to the file. If the above is in a function,  cannot be accessed from another function. Johnuniq (talk) 04:05, 24 November 2018 (UTC)

Steps down after 30 years
Who's doing the math here -- some magazine article? Even December 1989 until July 2018 isn't 30 years. Therefore September 1990 through July 2018 is definitely less than 30 years. If Wikipedia is just duplicating glorified journalistic fluff then what good is it? — Preceding unsigned comment added by 216.228.181.182 (talk • contribs) 12:44, 12 August 2018 (UTC)
 * It's from one of the cited sources, which I think was just rounding up. It obviously differs a bit depending on when you count the start, so rather than coming up with something original I just removed the claim for now. -- Beland (talk) 18:32, 30 November 2018 (UTC)

Order of implementations in the infobox
In the infobox, there is a list of "Major implementations". The list is currently in alphabetical order, but this puts a relatively minor implementation at the beginning. I think listing them in order of importance would be more appropriate. It might be difficult to determine the order of importance, but the Python (programming language) section does a good job of briefly explaining the differences between the versions. As CPython is the reference implementation, it should be the first listed in the infobox, and other implementations which are highly compliant and support Python 3 should follow. Implementations which have a limited subset of the Python language or standard library should be later in the list, or not included in the infobox at all. Just my opinion, I made an edit to this infobox list on 20 December 2018 and I'm not going to edit war over it.- gadfium 22:29, 13 March 2019 (UTC)


 * Completely agree. Certainly CPython needs to be first; is there an option in the infobox for "other implementations"?
 * peterl (talk) 09:00, 14 March 2019 (UTC)

Nomination of Portal:Python (programming language) for deletion
A discussion is taking place as to whether Portal:Python (programming language) is suitable for inclusion in Wikipedia according to Wikipedia's policies and guidelines or whether it should be deleted.

The page will be discussed at Wikipedia:Miscellany for deletion/Portal:Haskell (programming language) (it's part of a bundled nomination) until a consensus is reached, and anyone is welcome to contribute to the discussion. The nomination will explain the policies and guidelines which are of concern. The discussion focuses on high-quality evidence and our policies and guidelines.

Users may edit the page during the discussion, including to improve the page to address concerns raised in the discussion. However, do not remove the deletion notice from the top of the page. North America1000 00:44, 26 March 2019 (UTC)

PEP 8
PEP8 redirects here but is not explained in the article. -- Beland (talk) 15:48, 30 November 2018 (UTC)


 * Good point. I added it in. peterl (talk) 04:51, 26 March 2019 (UTC)

Languages that influenced Python
There is a section Languages influenced by Python. There should also be a section describing what languages that influenced Python. It seems likely to me that some of the features that are listed as being influenced by Python were actually features of languages that existed prior to Python. Sam Tomato (talk) 17:03, 27 July 2019 (UTC)