Monday, June 3, 2019

They say a python tuple can't contain itself...

... but here at PDW we abhor that kind of defeatism!

>>> import ctypes
>>> tup = (None,)
>>> ctypes.pythonapi.PyTuple_SetItem.argtypes = ctypes.c_void_p, ctypes.c_int, ctypes.c_void_p
>>> ctypes.pythonapi.PyTuple_SetItem(id(tup), 0, id(tup))

Showing the tuple itself is a little problematic
>>> tup
# ... hundreds of lines of parens ...
((Segmentation fault


  1. This is not surprising, since C-API is actually used. Without it, making a tuple instance with a part of itself will not possible.

    1. yup! only the C-API makes it possible

      it is kind of interesting though that tuple doesn't have any recursion handling in its repr()

      >>> a = []
      >>> a.append((a,))
      >>> a
      >>> a[0]

      rather than tuple(list(tuple)) showing ([(...,)]) it relies on the list repr() to detect the cycle and handle it one layer deeper

      contract with dict(list(dict)) in which the dict repr() detects the cycle

      >>> b = {}
      >>> b[0] = [b]
      >>> b
      {0: [{...}]}

  2. Odd; not getting this error under ipython, though I do get it with plain python. Both should(?) be running the same python executable; at any rate both report running 2.7.15 (can't even try this in python3 it seems). But under ipython I just get ((...),) as one might expect.

  3. I have bookmarked your blog, the articles are way better than other similar blogs.. thanks for a great blog! 统计代写

  4. It was worthy experience to get some answers concerning hazardous complement. Valuable for everyone looking with respect to the issue.

    data scientist course in delhi

  5. I like reading the aforementioned essay because it clearly explains everything and is both entertaining and effective. Thank you for your time and consideration, and best of luck with your future articles.Medical Essay Writing Service

  6. Hello There. I found your blog using msn. This is a really well
    written article. I’ll make sure to bookmark it and come back to read more of your
    useful info. Thanks for the post. I’ll definitely return.


  7. Great post. I was checking constantly this blog and I’m impressed! Extremely useful info specially the last part �� I care for such info a lot. I was seeking this certain information for a long time. 스포츠토토
    Thank you and best of luck.

  8. Hello there! Quick question that’s totally off topic. Do you know how to make your site mobile friendly? My website looks weird when viewing from my iphone4. I’m trying to find a template or plugin that might be able to resolve this issue. If you have any recommendations, please share. Thanks! 토토사이트

  9. Keep up the superb work, I read few blog posts on this website
    and I conceive that your site is really interesting and contains lots
    of wonderful info. 바카라사이트

  10. 카지노사이트 Wonderful and useful submit. I found this much helpful

  11. Nice post love it check my site for fast Satta King
    we provide superfast and all time result SattaKing

  12. Hi there! Nice post! Please tell us when I will see a follow up! 온라인경마

  13. According to Cheap Dissertation Writing Services experts, real-life begins with education. It is during schooling that children's mental abilities are assessed. And at the same time, students find out what they can do best for themselves.

  14. “It’s awesome designed for me to have a web page, which is valuable for my experience.

  15. It's very interesting. And it's fun. This is a timeless article. I also write articles related to , and I run a community related to 온라인카지노 . For more information, please feel free to visit !!