all 34 comments

sorted by: hot top controversial new old
[+] 136 points 1 year ago* (last edited 1 year ago) (22 children)
  • [–] 33 points 1 year ago* (5 children)

    You forgot the most important part!

    print(chr(3486)) # ඞ
    
  • source
  • parent
  • hideshow 5 child comments
  • [–] 5 points 1 year ago (3 children)
  • [–] 20 points 1 year ago (2 children)

    What kind of dumb language is this?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 23 points 1 year ago* (last edited 1 year ago)

    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.

  • source
  • parent
  • [–] 10 points 1 year ago (12 children)

    Why does not without a parameter return True? I'm starting to like the fact that I haven't touched python in a while.

  • source
  • parent
  • hideshow 12 child comments
  • [+] 23 points 1 year ago* (last edited 1 year ago) (11 children)
  • [–] 6 points 1 year ago (1 child)

    Are you sure?

    I can't test it now, but to me it looks like () is an empty tuple. Python behavior is that for logic operations empty set equals to false. Then we apply not to get True. Not having space between not operator and parentheses makes it look like it is a function.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 5 points 1 year ago (5 children)

    Why is literally nothing equivalent to None? Is it because None is the default value of an optional parameter? (If so why oh why is it optional)

  • source
  • parent
  • hideshow 5 child comments
  • [–] 5 points 1 year ago* (4 children)

    Because nothing isn't something, and something is true. It's base Boolean logic where everything is either true or false. Null/nothing is false.

    It's a weird way to think about conditionals, but it makes sense when you use them in real examples. In my case, I use them like this when I need to make sure that a variable has a value. So I can do something like

    If(variable){do things with the variable}else{do stuff when the variable doesn't exist}

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 1 year ago (3 children)

    I understand that, it makes sense. But why does it not throw an error? The parameter is missing after all.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 2 points 1 year ago (1 child)

    Actually the explanation is wrong.

    not()
    

    is actually

    not ()
    

    not is a keyword not a function.

    Boolean of empty tuple is False and then not negates it.

    I explained it better here:

    https://lemm.ee/post/61594443/19783421

  • source
  • parent
  • hideshow 1 child comment
  • [–] 77 points 1 year ago (5 children)

    It prints Unicode character #3486: ඞ

  • source
  • hideshow 5 child comments
  • [–] 25 points 1 year ago

    thanks I won't do that 'cause it's sus

  • source
  • [–] 22 points 1 year ago (1 child)
    >>> print(print(chr(sum(range(ord(min(str(not()))))))))
    ඞ
    None
    
  • source
  • hideshow 1 child comment
  • [–] 7 points 1 year ago

    Is it bad that I already knew what this would print the moment I read the meme?

  • source
  • [–] 3 points 1 year ago

    You can't tell me what to do

  • source