• h0bbl3s@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        3 months ago

        I’ve been coding around 25 years and got my start in perl. I absolutely hated python when I first used it. I use it all the time now. I still prefer my curly braces but I don’t have any trouble with python or mind the whitespace anymore. I just run it through ruff every save. I do the same with go everything goes through gofumpt. I really think a lot of it is a generational thing. Older people are just used to curly brackets.

        I do get peoples complaints about the packaging. Unless you’re a dev already it’s a bit extra to deal with shuffling virtual environments because the system python environments almost never work out of the box, at least in the last few distros I’ve used. Once I adjusted though it’s no problem. I run half my dev stuff in toolboxes with their own environment anyway.

      • uranibaba@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        3 months ago

        I once wrote a bot in python tdownloaded a ical file, looked for chances and informed me if found. The space indentation made it hell to follow the code in my opinion.

        • naught@sh.itjust.works
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          3 months ago

          Just curious, what about spaces made it hard? What language would have been easier? In curly brace languages, 99% of the time, a curly brace is followed by a line break and an indent. Python is similar except it’s typically a colon, line break, then indent.

          What I have learned is: If the code is indented too deeply, it’s a code problem, not the language.

          Torvalds infamously wrote:

          “… if you need more than 3 levels of indentation, you’re screwed anyway, and should fix your program.”

          • uranibaba@lemmy.world
            link
            fedilink
            arrow-up
            2
            ·
            3 months ago

            Too much nested code was likely part of the problem, but not being able to easily tell where a block of coded ended without seeing the top of the block made it difficult to work with.

            • naught@sh.itjust.works
              link
              fedilink
              arrow-up
              2
              ·
              3 months ago

              That’s fair! Takes time to get used to. Modern editors make this easier by highlighting the current indent level, or can even make the top X lines of the current closure “stick” to the top of the editor for those really long blocks.

              • uranibaba@lemmy.world
                link
                fedilink
                arrow-up
                2
                ·
                3 months ago

                Having those features would really have made it easier. I have only ever written my python code in Sublime Text. While it is a sublime text editor, at is not ideal (compared to how it is to write Java in IntelliJ) for Python. (Maybe with addons but I never delved into that more than a few.)

        • Jeena@piefed.jeena.netOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          3 months ago

          I don’t get it because my phyton code is indented exactly the same as all my other code. Each block of code one tab in/out, how else would you do it?

          • uranibaba@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            3 months ago

            It’s because there is no clear indication of where a block ends.

            Here is some sample code. I find it difficult to tell how many indentations I have or where I need to write if I want to continue at a certain level.

            import time
            import aiohttp
            
            """
            Retreives the data from RSS URL and return the status codes as well as the data. Return -1 if something went wrong.
            """
            async def get_rss_feed(rss_url):
                async with aiohttp.ClientSession() as session:
                    try:
                        retry_count = 0
                        while retry_count < 5:
                            async with session.get(rss_url) as resp:
                                if resp.status == 200:
                                    return {'status': resp.status, 'data': await resp.text()}
                                else:
                                    retry_count += 1
                                    time.sleep(60)
                        if retry_count == 5:
                            raise ValueError('To many failed connection attempts', retry_count)
                    except aiohttp.InvalidURL as error:
                        return {'status': -1, 'data': f"Error: {rss_url} is not a valid URL.", 'error': error}
                    except aiohttp.ClientConnectorError as error:
                        return {'status': -1, 'data': f"Error: Could not connect to {rss_url}.", 'error': error}
                    except ValueError as error:
                        return {'status': -1, 'data': f"Error: Could not connect to {rss_url} after {retry_count} attempts.", 'error': error}
            
      • linkhidalgogato@lemmy.ml
        link
        fedilink
        arrow-up
        0
        ·
        3 months ago

        its just not as clear especially when u are indenting stuff inside stuff with a bunch of conditions everywhere its hard to read just from indentation, and with the () or {} u can just click on it and most text editors will show u from where to where its going.

        • zalgotext@sh.itjust.works
          link
          fedilink
          arrow-up
          1
          ·
          3 months ago

          especially when u are indenting stuff inside stuff with a bunch of conditions everywhere

          That’s an anti pattern in basically every language though. The fix is to simplify those conditionals, not use a curly-bracketed language.