Good evening, everyone. I have, but one quick inquiry. What are the best resources in your opinion to learn python by yourself as a complete beginner? Thank you all

  • FizzyOrange
    link
    fedilink
    arrow-up
    2
    arrow-down
    14
    ·
    edit-2
    6 months ago

    (Ignore the downvotes on this comment btw; I’ve obviously touched a nerve with Python developers.)

    Depending on what you want to do I would consider learning JavaScript instead:

    • You already have a JavaScript environment in your web browser (just press ctrl-shift-J).
    • If you want to do anything web related you basically have to learn and use JavaScript .
    • The Python tooling story is a complete disaster. If you want to spend all your time fight your tools Python is for you. Especially on Windows. JavaScript (which uses NPM) is not perfect but it is significantly better.
    • It’s like 50x faster.
    • Overall JavaScript (with Typescript anyway, which you can learn later) is a better language than Python. A notable exception is Python’s support of arbitrary precision integers. Using 64-bit integers in JavaScript is a right pain. But that won’t remotely be an issue for a beginner.

    There are a couple of situations I would maybe pick Python:

    • AI. For better or worse (it’s worse) the entire AI ecosystem is based around Python so you don’t really have much choice here if you want to do AI stuff.
    • Scripts to automate integration of third party services. Generally more common for projects like AWS or whatever to provide Python libraries than JavaScript ones, so it can be easier in Python.

    It really depends on what kind of projects do you want to do?

    • Eager Eagle@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      arrow-down
      2
      ·
      edit-2
      6 months ago

      Overall JavaScript (with Typescript anyway, which you can learn later) is a better language than Python.

      🤣🤣🤣

      good one

      • FizzyOrange
        link
        fedilink
        arrow-up
        1
        arrow-down
        1
        ·
        6 months ago

        Yes it is good because it’s completely true. Of course this question is going to attract a lot of Python developers who haven’t used Typescript and don’t know what they’re missing so I’m not surprised by this response.

        Most Python developers still don’t even use static type hints. I guess partly because the Python tooling catastrophe makes it a quite a pain to set them up.

        • Eager Eagle@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          6 months ago

          I guess partly because the Python tooling catastrophe makes it a quite a pain to set them up.

          Salty huh

          Saying you need to set up type hinting in Python shows that you’re the one assuming it’s a hassle like TS, where you need a different runtime to have access to something the language (JS) should have provided from the start.

          Everything you need is provided by typing, which is included in a Python install. Just import it and start using it.

          • FizzyOrange
            link
            fedilink
            arrow-up
            1
            ·
            6 months ago

            Salty huh

            Very. Python’s shit tooling has cost me literal weeks of my life. It’s so bad. Have you ever used Go or Rust? If not go and try them and then you will realise that it doesn’t have to be like that.

            Saying you need to set up type hinting in Python shows that you’re the one assuming it’s a hassle like TS

            I’m not assuming. I have done this. It is absolutely a hassle. TS isn’t exactly hassle free but it’s still better than Python.

            where you need a different runtime to have access to something the language (JS) should have provided from the start.

            You mean like MyPy or Pyright? At least Typescript defines the semantics of its type hints. Python only defines the syntax! You can have multiple type checkers that conflict with each other!

            Everything you need is provided by typing, which is included in a Python install. Just import it and start using it.

            If you do that, nothing will actually be checked. You need to explicitly run pyright in CI.

            • Martín@lemmy.world
              link
              fedilink
              arrow-up
              1
              ·
              6 months ago

              If you do that, nothing will actually be checked. You need to explicitly run pyright in CI.

              Are you suggesting that you prefer to do the type validation upon execution? I’d like to have the checks done beforehand, be it in the IDE during coding or in CI. This way the feedback loop is shorter.

              Then, backwards compatibility is a big thing in python, unlike node. So when typehints were introduced in 3.5 with PEP 484, they had to be optional.

              At least Typescript defines the semantics of its type hints. Python only defines the syntax! You can have multiple type checkers that conflict with each other!

              It is a bit more complicated than that. Here’s a quote the above-mentioned PEP (3.5 was back in 2015, we’re at 3.12 now and typehints have evolved):

              Note that this PEP still explicitly does NOT prevent other uses of annotations, nor does it require (or forbid) any particular processing of annotations, even when they conform to this specification. It simply enables better coordination, as PEP 333 did for web frameworks.

              https://peps.python.org/pep-0484/

              • FizzyOrange
                link
                fedilink
                arrow-up
                1
                ·
                6 months ago

                Are you suggesting that you prefer to do the type validation upon execution?

                No. But I would like them to actually be done! If you just write some Python code and put type hints in it and don’t do anything else then those types are not checked at all. It requires some set up and a third party tool to use them properly.

                It is a bit more complicated than that. Here’s a quote

                That quote is exactly what I was saying. It does not require any particular processing or type hints.

                Type checkers can and do differ in whether they accept a particular piece of code.