Skip to content

Commit 41b7c4c

Browse files
committed
Cleanup
1 parent 876a8d6 commit 41b7c4c

File tree

1 file changed

+32
-27
lines changed

1 file changed

+32
-27
lines changed

README.md

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -836,20 +836,20 @@ Hashlib
836836
Threading
837837
---------
838838
```python
839-
import threading
839+
from threading import Thread, RLock
840840
```
841841

842842
### Thread
843843
```python
844-
thread = threading.Thread(target=<function>, args=(<first_arg>, ))
844+
thread = Thread(target=<function>, args=(<first_arg>, ))
845845
thread.start()
846846
...
847847
thread.join()
848848
```
849849

850850
### Lock
851851
```python
852-
lock = threading.Rlock()
852+
lock = Rlock()
853853
lock.acquire()
854854
...
855855
lock.release()
@@ -998,43 +998,48 @@ Eval
998998
----
999999
### Basic
10001000
```python
1001-
>>> import ast
1002-
>>> ast.literal_eval('1 + 1')
1001+
>>> from ast import literal_eval
1002+
>>> literal_eval('1 + 1')
10031003
2
1004-
>>> ast.literal_eval('[1, 2, 3]')
1004+
>>> literal_eval('[1, 2, 3]')
10051005
[1, 2, 3]
10061006
```
10071007

10081008
### Detailed
10091009
```python
10101010
import ast
1011+
from ast import Num, BinOp, UnaryOp
10111012
import operator as op
10121013

10131014
# Supported operators
1014-
operators = {ast.Add: op.add, ast.Sub: op.sub, ast.Mult: op.mul,
1015-
ast.Div: op.truediv, ast.Pow: op.pow, ast.BitXor: op.xor,
1016-
ast.USub: op.neg}
1017-
1018-
def eval_expr(expr):
1019-
return eval_(ast.parse(expr, mode='eval').body)
1020-
1021-
def eval_(node):
1022-
if isinstance(node, ast.Num): # <number>
1015+
operators = {ast.Add: op.add,
1016+
ast.Sub: op.sub,
1017+
ast.Mult: op.mul,
1018+
ast.Div: op.truediv,
1019+
ast.Pow: op.pow,
1020+
ast.BitXor: op.xor,
1021+
ast.USub: op.neg}
1022+
1023+
def evaluate(expr):
1024+
return eval_node(ast.parse(expr, mode='eval').body)
1025+
1026+
def eval_node(node):
1027+
if isinstance(node, Num): # <number>
10231028
return node.n
1024-
elif isinstance(node, ast.BinOp): # <left> <operator> <right>
1025-
return operators[type(node.op)](eval_(node.left), eval_(node.right))
1026-
elif isinstance(node, ast.UnaryOp): # <operator> <operand> e.g., -1
1027-
return operators[type(node.op)](eval_(node.operand))
1029+
elif isinstance(node, BinOp): # <left> <operator> <right>
1030+
return operators[type(node.op)](eval_node(node.left), eval_node(node.right))
1031+
elif isinstance(node, UnaryOp): # <operator> <operand> e.g., -1
1032+
return operators[type(node.op)](eval_node(node.operand))
10281033
else:
10291034
raise TypeError(node)
10301035
```
10311036

10321037
```python
1033-
>>> eval_expr('2^6')
1038+
>>> evaluate('2^6')
10341039
4
1035-
>>> eval_expr('2**6')
1040+
>>> evaluate('2**6')
10361041
64
1037-
>>> eval_expr('1 + 2*3**(4^5) / (6 + -7)')
1042+
>>> evaluate('1 + 2*3**(4^5) / (6 + -7)')
10381043
-5.0
10391044
```
10401045

@@ -1115,10 +1120,10 @@ Curses
11151120
------
11161121
```python
11171122
# $ pip3 install curses
1118-
import curses
1123+
from curses import wrapper
11191124

11201125
def main():
1121-
curses.wrapper(draw)
1126+
wrapper(draw)
11221127

11231128
def draw(screen):
11241129
screen.clear()
@@ -1197,7 +1202,7 @@ Web
11971202
```python
11981203
# $ pip3 install bottle
11991204
import bottle
1200-
import urllib
1205+
from urllib.parse import unquote
12011206
```
12021207

12031208
### Run
@@ -1217,7 +1222,7 @@ def send_image(image):
12171222
```python
12181223
@route('/<sport>')
12191224
def send_page(sport):
1220-
sport = urllib.parse.unquote(sport).lower()
1225+
sport = unquote(sport).lower()
12211226
page = read_file(sport)
12221227
return template(page)
12231228
```
@@ -1227,7 +1232,7 @@ def send_page(sport):
12271232
@post('/p/<sport>')
12281233
def p_handler(sport):
12291234
team = bottle.request.forms.get('team')
1230-
team = urllib.parse.unquote(team).lower()
1235+
team = unquote(team).lower()
12311236

12321237
db = sqlite3.connect(<db_path>)
12331238
home_odds, away_odds = get_p(db, sport, team)

0 commit comments

Comments
 (0)