I think this code is easier to read than the more verbose 12-line version given in the article. It takes longer to read per line, but less time total.
account.status = ["paid", "unpaid"][amount_due > 0]
This does the same thing as the FizzBuzz example, coercing a bool to int. Here the int is used as an index into the list of the two strings.Personally, I found this handy and liked it a lot. Others didn't and now there is this, which isn't bad:
account.status = "unpaid" if amount_due > 0 else "paid"
Maybe it's less like using obscure French and more like speaking in a slightly different dialect, or in a different region with different cultural references.Treating a boolean as an integer is iffy
Multiplying a string by a boolean frankly should be a no-no.
If writing in French for people who are not fluent, I think it would be a good idea to avoid idiomatic language.
Of course, this is true to a certain extent of all programming languages, but I do find Python particularly easy in this respect.