35
submitted 10 months ago* (last edited 10 months ago) by CrackedLinuxISO@lemmy.dbzer0.com to c/programmer_humor@programming.dev

Does anyone remember an old blog post where someone used various Python language hacks to override boolean primitives, such that the statement false == true evaluated as true? I'm 90% sure it was python, but maybe it was some other language.

I've been looking for that post recently, but haven't had any luck.

Thanks to antagonistic for finding it! I guess it was less of an "exploit", and more of a "please don't touch the loaded foot-gun"

top 20 comments
sorted by: hot top new old
[-] Antagnostic@lemmy.world 22 points 10 months ago
[-] CrackedLinuxISO@lemmy.dbzer0.com 7 points 10 months ago

Yes! Thanks

[-] solrize@lemmy.ml 12 points 10 months ago* (last edited 10 months ago)

The builtin names are True and False and they became keywords a while back. true and false are just ordinary variables that you can set to whatever you want.

Meanwhile, in Forth:

: 2 3 ; \ define 2 as 3
2 2 + .  6 ok   \ shows that 2+2 is now 6
[-] undefined@lemmy.hogru.ch 3 points 10 months ago

God I hated that about Python. Why tf we capitalizing True and False?

[-] lime@feddit.nu 4 points 10 months ago

all builtin constants are capitalised.

[-] RecallMadness@lemmy.nz 4 points 10 months ago* (last edited 10 months ago)

All… five of them!

The other 7 are all lowercase. (One of you ignore site)

[-] lime@feddit.nu 2 points 10 months ago

yeah but dunders usually aren't included in counts

[-] squaresinger@lemmy.world 1 points 10 months ago

And they also don't follow the conventions for constants otherwise, which are all caps.

[-] lime@feddit.nu 1 points 10 months ago

i think we're talking about different things.

[-] solrize@lemmy.ml 2 points 10 months ago

They are constants, like None, which has always been around.

[-] ExperimentalGuy@programming.dev 8 points 10 months ago

I feel like you hear fuckery like that more in JavaScript.

[-] elvith@feddit.org 10 points 10 months ago
[-] who@feddit.org 4 points 10 months ago* (last edited 10 months ago)

Python doesn't have true or false keywords, nor any other primitives by those names.

So either you're thinking of a different language, or different identifiers, or someone assigned equal values to variables with those names and then blogged about it.

[-] Antagnostic@lemmy.world 4 points 10 months ago
[-] who@feddit.org 4 points 10 months ago* (last edited 10 months ago)

That change is about True and False, not true and false. If OP was thinking of the former pair, it would seem my "different identifiers" guess was correct.

[-] LodeMike@lemmy.today 3 points 10 months ago

Maybe they did "False is True" because they're both the same Python object?

[-] solrize@lemmy.ml 5 points 10 months ago

I just checked and they aren't.

[-] LodeMike@lemmy.today 3 points 10 months ago* (last edited 10 months ago)

Maybe they defined them as variable names instead?

Or they could have just changed the language. Do you remember them compiling or editing C? (Python is usually run on cpython)

[-] solrize@lemmy.ml 5 points 10 months ago

True is False gives false in Python 2.7.18 as well as 3.x. But, in 2.x, they aren't keywords, so you can say True=False=5 and then they are both the same object.

[-] LodeMike@lemmy.today 3 points 10 months ago

I really need to stop trusting how durable this language is.

this post was submitted on 15 Aug 2025
35 points (97.3% liked)

Programmer Humor

32002 readers
983 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 3 years ago
MODERATORS