Python, but this is actually defined and documented behavior.
Edit: to illustrate what I mean:
not() # True
this actually is not () (the lack of space makes it look like a function), () is a tuple, in python an empty collection returns False, this is to make checks simpler. You can type:
if my_list:
do something
instead of
if len(my_list) > 0:
do something
not negates it so you get True
str(not()) # 'True'
converts resulting bool type into a string representation
min(str(not())) # 'T'
This might feel odd, but that's also documented. min() not only allows to compare two numbers like it is in most languages, but you can also provide a sequence of values and it will return the smallest one.
String is a sequence of letters.
Letters are comparable according to ASCII (so you can do sorting). In ASCII table capital letters are first, so the 'T' is the smallest value.
ord(min(str(not()))) # 84
this just converts 'T' to Unicode value which is 84
range(ord(min(str(not())))) # range(0, 84)
This creates a sequence of numbers from 0 to 83
sum(range(ord(min(str(not()))))) # 3486
This works like min() except adds up all the numbers in the sequence together, so in our case 0+1+2+3+...+83 = 3486
chr(sum(range(ord(min(str(not())))))) # 'ඞ'
reverse of ord(), converts Unicode value to a character.
Why does not without a parameter return True? I'm starting to like the fact that I haven't touched python in a while.
I think it's because not() is equivalent to not(None), and since None is falsy not(None) returns True.
In case anyone's curious:
You forgot the most important part!
Why is that thing scary?
Looks like telugu
What kind of dumb language is this?
Python!
Python, but this is actually defined and documented behavior.
Edit: to illustrate what I mean:
this actually is
not ()
(the lack of space makes it look like a function),()
is a tuple, in python an empty collection returnsFalse
, this is to make checks simpler. You can type:instead of
not
negates it so you getTrue
converts resulting
bool
type into a string representationThis might feel odd, but that's also documented.
min()
not only allows to compare two numbers like it is in most languages, but you can also provide a sequence of values and it will return the smallest one.String is a sequence of letters.
Letters are comparable according to ASCII (so you can do sorting). In ASCII table capital letters are first, so the 'T' is the smallest value.
this just converts 'T' to Unicode value which is 84
This creates a sequence of numbers from 0 to 83
This works like
min()
except adds up all the numbers in the sequence together, so in our case 0+1+2+3+...+83 = 3486reverse of
ord()
, converts Unicode value to a character.Why does not without a parameter return True? I'm starting to like the fact that I haven't touched python in a while.
I think it's because
not()
is equivalent tonot(None)
, and sinceNone
is falsynot(None)
returnsTrue
.