Add example: Not Knot!

Related to https://github.com/satwikkansal/wtfpython/issues/1
This commit is contained in:
Satwik Kansal 2017-09-04 22:31:18 +05:30
parent 39480cc579
commit 6abfb50fc6
1 changed files with 29 additions and 0 deletions

29
README.md vendored
View File

@ -1451,6 +1451,35 @@ tuple()
---
### not knot!
Suggested by @MostAwesomeDude in [this](https://github.com/satwikkansal/wtfPython/issues/1) issue.
```py
x = True
y = False
```
**Output:**
```py
>>> not x == y
True
>>> x == not y
File "<input>", line 1
x == not y
^
SyntaxError: invalid syntax
```
#### 💡 Explanation:
* Operator precedence affects how an expression is evaluated, and `==` operator has higher precedence than `not` operator in Python.
* So `not x == y` is equivalent to `not (x == y)` which is equivalent to `not (True == False)` finally evaluating to `True`.
* But `x == not y` raises a `SyntaxError` because it can be thought of being equivalent to `(x == not) y` and not `x == (not y)` which you might have expected at first sight.
* The parser expected the `not` token to be a part of the `not in` operator (because both `==` and `not in` operators have same precedence), but after not being able to find a `in` token following the `not` token, it raises a `SyntaxError`.
---
### Loop variable resilient to changes
Suggested by @tukkek in [this](https://github.com/satwikkansal/wtfPython/issues/11) issue.