| ▲ | dapperdrake 2 days ago |
| Python's async is very difficult to use and debug. It seems to get stuck randomly, read like race conditions. And Python cannot work around this nicely with their lambdas only permitting a single expression in their body. Not worth the trouble. Shell pipelines are way easier to use. Or simply waiting —no pun intended— for the synchronous to finish. |
|
| ▲ | mixmastamyk 2 days ago | parent [-] |
| > lambdas only permitting a single expression Use a tuple, maybe walrus, and return the last item[-1]. |
| |
| ▲ | dapperdrake 2 days ago | parent [-] | | That idea sounds good. How do I get variables for not redoing long-running computations that depend on one-another? So, what if the third tuple value depends on the second and the second in turn depends on the first? | | |
| ▲ | mixmastamyk 2 days ago | parent | next [-] | | That’s what walrus is for: future = lambda age: (
print('Your age is:', age),
older := age + 5,
print('Your age in the future:', older),
older,
)[-1]
print(future(20))
# out
Your age is: 20
Your age in the future: 25
25
| |
| ▲ | int_19h 2 days ago | parent | prev [-] | | You can abuse list and sequence comprehensions for this. `for..in` is effectively a variable binding since you can target a freshly created list or a tuple if you need to bind a single value. So: [x
for x in [some_complicated_expression]
if x > 0
for y in [x + 1]
...
][0]
That said, I wouldn't recommend this because of poor readability. |
|
|