[–] 2 points 1 year ago (1 child)

Yeah, I wrote code and pressed get URL, but then I copied what was shown in the window

The clipboard content:

https://memory-graph.com/#code=+%23+What+is%2Bthe+output+of+this+Python+program%3F%0A+++%0Adef+fun%28a+%3D+%5B%5D%29%3A+%0A++++a+%2B%3D+%5B1%5D%0A++++return+a%0Afun%28%29+print%28fun%28%29%29

The window text:

The following URL has been copied to your clipboard with:

    The current code
    Set breakpoints
    Playback timestep
    Play/Pause state

https://memory-graph.com/#code=+%23+What+is+the+output+of+this+Python+program? +++ def+fun(a+=+[]):+ ++++a++=+[1] ++++return+a fun()+print(fun())

The latter doesn't work, and I didn't think of checking the former

  • source
  • parent
  • context
  • [–] 6 points 1 year ago (3 children)

    There's also a gotcha with default parameters:

    def fun(a = []):
        a += [1]
        return a
    
    fun()
    print(fun()) # [1, 1]
    

    issues I had with the tool you linkedI tried to make a link to this code in this visual debugger, but a link is made broken and can't be used without urlencoding spaces (I guess). Also the tool doesn't produce visual output in DuckDuckGo browser on Android

  • source
  • [–] 2 points 1 year ago

    To be fair, I had to read the linked question on SO to understand what was the possible alternative. I do expect that if I use += it is in place.

    On the other hand with Python and Java I always keep forgetting if everything is by value or by reference, I really miss some extra clarity of the languages where you can see if something is mutable when passed to a function

  • source
  • parent
  • context
  • [–] 2 points 1 year ago (6 children)

    As I would expect. Does the result surprise people?

    If so, rename the arguments to fun() to be r, s, t, and u. Just inside the function. Does the obvious two scopes now make it clearer?

  • source
  • [–] [S] 1 point 1 year ago

    Thanks for adding. The link I posted should give people a quick animation to directly see what is possible instead of having to read through things first. That GitHub repo link is also on hat page. But you are right that some would probably want to start with the repo, thanks for feedback.

  • source
  • parent
  • context
  • [–] 2 points 1 year ago (1 child)

    My programming has become extremely rusty (not a euphemism) and this might be something I could benefit from. Very interesting work

    Although it’s hard to beat just sketching these out by hand. Maybe seeing what’s actually being set up in the code could be add new dimension to that.

  • source
  • [–] [S] 7 points 1 year ago (1 child)

    What you said is the old concept of relational databases. SQLite, years ago, added native JSON and JSON operations such as JSON_EXTRACT, JSON_EACH, JSON_SET, etc., which blurred the line between SQL and NoSQL. However, not many developers utilize it, so I'm trying to bring it to the easiness of PyMongo APIs. If you read the examples and test cases in my repo, you will no longer mention subsets. While it's true, I've already addressed most of them and am still progressing.

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

    Why would you want to use No-SQL on an SQL database? Like for convenience only or are there some other benefits? They are wildly incompatible so do you only get the subset or is there some transformative magic done in the API?

  • source
  • view more: β€Ή prev next β€Ί