[issue28976] incorrect description that dose not conform to the actual behavior
New submission from woo yoo: The paragraph that describes the precedence of semicolon encounters a minor error, which said : "Also note that the semicolon binds tighter than the colon in this context, so that in the following example, either all or none of the print() calls are executed: if x < y < z: print(x); print(y); print(z)" However,the series of print function calls could execute partly if the previous ones are legal. ---------- assignee: docs@python components: Documentation messages: 283232 nosy: docs@python, woo yoo priority: normal severity: normal status: open title: incorrect description that dose not conform to the actual behavior versions: Python 3.5 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: Forget to attach the link https://docs.python.org/3/reference/compound_stmts.html#compound-statements ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Brendan Donegan added the comment: Can you provide a code snippet that demonstrates the actual problem? As far as I can see this code behaves as documented ---------- nosy: +brendan-donegan _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: code :
if 1<2<3:print(123);print(op);
Output: 123 Traceback (most recent call last): .... NameError:... ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Brendan Donegan added the comment: How does that contradict the documentation? Both print statements were executed - the second one raised an exception because of 'op' not being defined. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: code :
if 1<2<3:print(123);print(op);print(opi);
Output: 123 Traceback (most recent call last): .... NameError:name 'op' is not defined The third 'print' call hasn't been executed. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Brendan Donegan added the comment: Indeed, but that's merely because an exception has been raised. The example given doesn't include any statements that would raise an exception. I'm not sure it's necessary to re-iterate well known Python behaviour in this section. Anyway, that's my 2c ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: Thanks for your attention. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Changes by R. David Murray <rdmurray@bitdance.com>: ---------- resolution: -> not a bug stage: -> resolved status: open -> closed _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: Why the issue was closed? ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Changes by woo yoo <chaozhou1232@gmail.com>: ---------- resolution: not a bug -> status: closed -> open _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
R. David Murray added the comment: Because the documentation is correct. There is no bug here. As Brendan said, there is no need to repeat a fundamental (that statements can raise exceptions) in this context. The point of the passage is that if x: a; b; c; is equivalent to if x: a b c not if x: a b c And that is what it clearly says, in my opinion. The language reference is a specification and not a tutorial, so more words here would not be a good idea. ---------- nosy: +r.david.murray _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: According to the original description, "either all or none...",what does 'none' represent? ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Brendan Donegan added the comment: None represents the case where the if statement is false On Thu, 15 Dec 2016 at 20:40 woo yoo <report@bugs.python.org> wrote:
woo yoo added the comment:
According to the original description, "either all or none...",what does 'none' represent?
----------
_______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
---------- nosy: +brendand _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: "either all or none of the print() calls are executed",I think the 'none' describes the number of the calls to be executed. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Brendan Donegan added the comment: I think the consensus is that the wording is correct. If you can come up with text that is clearer, and still correct, please do submit a patch. On Thu, 15 Dec 2016 at 20:50 woo yoo <report@bugs.python.org> wrote:
woo yoo added the comment:
"either all or none of the print() calls are executed",I think the 'none' describes the number of the calls to be executed.
----------
_______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: In fact, I'm a newcomer to Python. When i have experimented with those description interactively using Python interpreter, i got confused. I don't know how to submit a patch.If the description were changed by me,it would be:
if x<y<z:print(x);print(y);print(z) is equivalent to if x<y<z: print(x) print(y) print(z)
---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
R. David Murray added the comment: As I said, the language reference is a specification, not a tutorual. The text as written is clear technical English. You are correct that 'none' refers to the number of statements executed, but 'none' are executed when the statement is false, and 'all' are executed when the statement is true. The fact that execution of a suite may be interrupted by an exception is covered elsewhere in the language reference and it would not enhance the documentation to repeat it here. If other core developers think putting in the example is appropriate I'm not going to object, but I don't think they will. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
woo yoo added the comment: I think i understand you now.My english needs to improve.Thanks for your patience. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
Changes by woo yoo <chaozhou1232@gmail.com>: ---------- resolution: -> not a bug status: open -> closed _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue28976> _______________________________________
participants (3)
-
Brendan Donegan -
R. David Murray -
woo yoo