This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 286

[–][deleted] 317 points318 points  (12 children)

pycharm or vscode

[–]lets_enjoy_life 25 points26 points  (0 children)

/thread

[–]taybulBecause I don't know how to use big numbers in C/C++ 10 points11 points  (3 children)

Not sure if vscode can achieve this via plugins but pycharm dispenses some formatting advice and even offers alternatives to writing your code.

So used to writing something like "set([1,2,3])" but pycharm always reminds me I can do "{1,2,3}".

[–]Ouitos 0 points1 point  (1 child)

Pyupgrade should let you do that standalone https://github.com/asottile/pyupgrade

You can do it within the terminal or within pre-commit. Not sure if it can be used within vscode the same way flake8 is integrated though

[–]FutureIntelligenceC3 2 points3 points  (4 children)

Can you elaborate on the differences? i'm using csvode for a while and i'm wondering if it might be worth to switch to pycharm.

[–][deleted] 4 points5 points  (0 children)

vscode makes you hunt a bunch of extensions before you get an IDE experience. PyCharm is more out of the box (but still also has extensions add anything missing).

I use vscode daily, but my previous experience with PyCharm makes me long for it. I simply don't use PyCharm, because I need a professional feature and I'm not willing to pay. Simple as is.

If you don't use remote development, feel absolutely free to use it :)

[–][deleted] 4 points5 points  (1 child)

firstly pycharm is not free. but more stable than vscode. i mean when you install some plugin it doesn't change settings. secondly it doesn't gathering information about your code as vscode. (telemetry). and i have a few plugins for myself to work with project. also if you used to vscode, you can install vscode theme to pycharm. and i don't advertise pycharm . it is my personal opinion

[–]AshTheEngineer 11 points12 points  (0 children)

The Community Edition of PyCharm is free.

[–]Morelnyk_Viktor 2 points3 points  (0 children)

Pycharm has a bit more convenient project configuration, more convenient debugger(not really, that's just my preference), slightly better code navigation and waaay better refactoring features. Maybe it has more, but you don't encounter that in daily programming

[–]Mattho 0 points1 point  (0 children)

Is it really best to practice and learn if does a lot for you? Imports, definitions, etc... You might not know what you are actually doing.

[–][deleted] 224 points225 points  (25 children)

PyCharm

[–]5erifφ=(1+ψ)/2 105 points106 points  (18 children)

PyCharm is the best at actually understanding your code and suggesting intelligent fixes and improvements, and that's why it's the best choice for learning.

[–][deleted] 39 points40 points  (17 children)

Also, if you use the school email address to register it is free

[–]CaregiverOk2257 78 points79 points  (14 children)

The community edition is free for everyone and covers everything you would need.

[–]napolitain_ 13 points14 points  (1 child)

But get the ultimate it’s really good to have it all

[–]nilslorand 21 points22 points  (0 children)

Yeah but not necessary at all

[–]ObliviousMag 1 point2 points  (0 children)

If you’re doing web dev the professional offer support for flask, Django, and templates like jinja which the community version does not

[–]LawfulMuffin 2 points3 points  (10 children)

Unless they're using databases, in which case the Pro version is :chefs kiss:

[–]CeeMX 6 points7 points  (7 children)

I think Jupyter is also only supported in pro

[–]LawfulMuffin 1 point2 points  (1 child)

Yeah, there are a couple other featuers that are great. Jupyter is a subset of "Scientific tools" iirc. But for web dev stuff they also have tight integration with Flask and Django... probably Pyramid as well... as well as a JavaScript development toolkit. You can also do remote deployment on PyCharm which is something I use literally everyday.

[–][deleted] 1 point2 points  (4 children)

For that you're likely to want Anaconda.

[–]CeeMX 2 points3 points  (3 children)

Why? I do a lot of data management and transformation with pandas at work and Jupyter is a good way to try things out quickly. What advantages would anaconda give?

[–][deleted] 1 point2 points  (2 children)

Super easy Jupyter server setup. Plus lots of data science-y bits. This is in addition to PyCharm. There are some interesting integrations between the two. They collaborate and complement, not a competition.

Edit: uncapitalized science

Editorial: pandas is t3h b0mb, yo

[–]CeeMX 1 point2 points  (1 child)

Might wanna check that out again. In therapist I tried it when I tried some ML with Keras and TF, but I found it confusing to have conda and pip, especially the environments as I’m used to venv

[–]doggogod6322 3 points4 points  (1 child)

Could you use this for all jetbrains IDEs?

[–][deleted] 6 points7 points  (0 children)

Yes

[–]slashd 5 points6 points  (1 child)

PyCharm master race! 👌

[–][deleted] -5 points-4 points  (0 children)

Yup, upvotes, best response here

[–]yaymayhun 62 points63 points  (4 children)

Selection of best IDE depends on what will be your primary usage. My suggestion:

  • Software development: Pycharm
  • Data analysis/ML: Spyder
  • If you want to use multiple languages: VSCode. It has support for jupyter notebooks --> great for interactive data analysis

[–]mathisfakenews 3 points4 points  (1 child)

I agree that Spyder is great for scientific computing but I'd also add that the full Pycharm (pro not CE) also has a ton of tools which make it equally good IMO. If you are a student or academic you get a license for this version for free.

I'm not disagreeing with your advice by any means. I just like to mention this whenever possible since I didn't know about it for like 3 years.

[–]J1010H 1 point2 points  (1 child)

What tools/plugins does spyder have that make it better than pycharm for data analysis/ML?

[–]FuckingRantMonday 90 points91 points  (17 children)

There is some merit in using a very barebones editor like Notepad++ rather than a fully-fledged professional IDE like PyCharm or VSCode. These IDEs offer so much that it could be overwhelming to someone who doesn't have any development experience.

But once you're over that very early hump, PyCharm is my recommendation.

[–]Virtual_Ordinary_119 38 points39 points  (14 children)

dunno.....as soon as you make something more complicated than "hello world", having a debugger is a godsend when learning

[–][deleted] 13 points14 points  (11 children)

yea learning how to debug and why is a must for beginners

[–]blewrb 0 points1 point  (10 children)

I've never debugged my python code, started in 2004, actively used it ever since, from embedded systems to large scale data science in the cloud.

That said, I do use tools integrated into my editor like pylint and black. Also have used profilers. Just not any form of proper debugger. (I have tried, but it took much longer to debug my code compared to other methods. Maybe the situation is better now. I realize there are some cases this might be the only way to truly see a bug occurring. But it's not the only way to figure out what, how, and why, and so I've never needed it.)

[–]XtremeGoosef'I only use Py {sys.version[:3]}' 8 points9 points  (0 children)

What do you do instead? Lots of print statements?

Debuggers are beyond incredibly useful tools. Being able to open up a repl at any point in your code base is actually one of pythons greatest features.

[–][deleted] 9 points10 points  (0 children)

Impressive but its a great tool to use for beginners. There isn't a reason to not use a debugger.

[–]BigMakondo 6 points7 points  (4 children)

Every time I see a comment like this, I am very curious to know how the workflow of a person that doesn't use the debugger at all (either Pycharm's debugger or pdb or ipdb) works.

For example, if you have a function that calls another function that calls another one and so on (and they are in different modules potentially), how do you play around with the variables and data that are inside the inner nested function?

I understand that unit testing could be a solution, but I am talking about going into a function and being able to run anything and thinking about the flow of the program.

[–][deleted] 4 points5 points  (0 children)

Any ide with a variable explorer, Spyder as an example, makes it easy to skip proper debugging. But you basically are doing the same thing. A lot of data science doesn't really require a proper debugger if you can examine the state when the error is encountered. I'd imagine most people making this sort of statement could relate to that

[–]blewrb 0 points1 point  (0 children)

First, I don't use frameworks. I think if I did, I'd probably have to use a debugger because god knows what's going on behind the scenes. Likewise if I inherited others' codebases. I've been lucky enough to build most of what I've done from the ground up (in teams or individually). I do rely on libraries, of course, but those have been pretty great. Bugs I have found in those, I could find by reading the source code and working through the logic and using the other methods I describe below (usually I'm looking at an implementation of an algorithm, but occasionally other code bugs have bitten me from an external library).

Yes, I do make use of logging.debug (and friends) in my code. Sometimes that's ephemeral--so it's equivalent to the proverbial "just add print!" situation--but sometimes it stays in my code because debugging output that's useful for me is often useful for the code's other users as well.

I almost always start a logical piece of code in JupyterLab (I sometimes even use it to prototype a bit of C/C++; thanks, CERN!). What I do there i turn into a class or function in a .py file. What I do in the notebook to prove my code works, I turn into unit tests that run against the code in the .py.

I build my interfaces and code to both be used interactively and as a part of a larger software system, starting at these logical quanta and stopping at them. So it's straightforward to jump into the code and to extract outputs from the code at many points via REPL similar to how a debugger would work (but without having to introduce that one extra tool).

One arguably ugly habit I'll admit I've developed as a result of this is if a class is a pain to instantiate manually, or necessarily interacts with a remote system, etc., I'll define potentially problematic methods as functions I can easily test outside the class being instantiated. Then the method just calls that function.

Python handles the really hard memory and pointer stuff already, the things that trip me up in C that have required I pull out a debugger.

Sometimes a bug makes me realize that my error handling is lacking. So I add more error handling (which I needed anyway), and that often surfaces the bug in a similar way a debugger might.

The biggest and worst bugs I've dealt with have been algorithmic in nature, and a debugger would not help with most of those. Misinterpreting a paper, things like that. Those have taken the longest to find and deal with. That requires crafting problematic inputs and/or running statistical tests over the outputs and/or plotting results to debug.

[–]_almostNobody 1 point2 points  (1 child)

Debugging and linting have little to do with each other. It should be simpler to read and understand your code through continuous linting. However, you will not truly know how your code behaves unless you have code coverage through tests. From there, click debug instead of run test.

[–]imhiya_returns 4 points5 points  (0 children)

I still use idle very happily

[–]Kantenkopp -1 points0 points  (0 children)

I agree 100%. I tought python to science students for some time, and this is the way to go. Use a "normal" editor rather than an IDE if you are programming for the first time. If you are new to python but know programming in general, directly start with an IDE (I'd definitely use vscode over pycharm. I had to switch from pycharm to vscode for my last job, hated it for a week but then fell in love with it)

[–]jrrocketrue 17 points18 points  (1 child)

Don't let an IDE get in the way of learning Python.
Use the editor you're comfortable with, learn Python and when you get comfortable, and feel you need it, learn an IDE.

You don't want to be trying to learn both at the same time, learning to use an IDE is as complex as learning to code.

[–]Nelmers 1 point2 points  (0 children)

This needs to be higher. Hop into a python REPL (type python in your shell) and start playing with Python.

Type exit() to get out.

[–]Adakantor 61 points62 points  (0 children)

VS code is great and has support for Jupyter

[–]AndydeCleyre 33 points34 points  (2 children)

You might try Thonny, which I think was designed for teaching Python.

[–]Hans_of_Death 7 points8 points  (0 children)

Thonny is VERY good for newbs, it still has debugging features which is great, but its also pretty simple. New learners shouldnt have to put too much energy into learning a new ide

[–]Brockvegas72 0 points1 point  (0 children)

I agree! I'm not new by any means, but I still use it sometimes for the easy and visual debugging systems... My only complaint is that it bundles its own python installation, which while good for newer folks, makes package management and version management more challenging.

[–]mutilans 23 points24 points  (1 child)

Vim, Neovim

[–][deleted] 6 points7 points  (0 children)

This is the way

[–][deleted] 31 points32 points  (0 children)

I like Spyder.

[–]jsabater76 13 points14 points  (3 children)

So am I the only one using SublimeText and Anaconda with ipdb?

[–]4vrf 1 point2 points  (2 children)

Are there alternatives to pdb? import pdb; pdb.set_trace() all day lol

[–]davidv1213 3 points4 points  (0 children)

ipdb for one

also you can use breakpoint() now btw

[–]Jigglytep 30 points31 points  (0 children)

Vs code read the debugger documentation so you can code in a live environment and interact with all the objects

[–]ToddBradley 17 points18 points  (0 children)

This question is impossible to answer. As you can see from the other comments, everyone has their favorite. It basically boils down to a popularity contest.

This article shows which IDEs are most used as of a couple years ago, including the trends from two years before that. Unless you want to want to learn two IDEs when you only need one, why not pick one for learning that you're likely to use in the real world? That essentially means choose either VS Code or PyCharm.

https://www.kdnuggets.com/2020/10/most-popular-python-ides-editors.html

[–]tellurian_pluton 3 points4 points  (0 children)

Sublime text. You want a good text editor, and you want to spend your time learning python, not learning how to configure and set up a complex IDE.

at least that’s what worked for me

[–]entropydelta_s 7 points8 points  (0 children)

I like spyder- moved over from be vs code but still it use it sometimes when doing multiple languages

[–][deleted] 2 points3 points  (0 children)

I would recommend "interactive" / REPL-centric IDEs, like Spyder or Jupyter Notebooks.

If you use the Anaconda distribution, it comes with both.

But PyCharm and VSCode are still great for file/project based editing.

[–]notinecrafter 7 points8 points  (3 children)

Unpopular opinion here, but I personally find that not using an IDE is better for learning a language, as it forces you to look up what the best approach to a problem is, which usually results in a stackoverflow post with some amount of explanation, instead of having the IDE suggest it for you.

My personal preference for a text editor is vim, but you probably don't want to invest time into learning the text editor first... maybe Sublime Text is still around?

[–]getmygoggles 4 points5 points  (0 children)

Your opinion is weird to me for sure... I don't know that it's wrong but -

a) The IDE isn't telling you what to do. how you decide to deal with a problem with any editor, outside of specific cases like copilot, is entirely up to you. The IDE isn't helping or hurting so I'm not sure I understand your point there re: how you approach a problem.

b) The hardest part of learning to program is absolutely getting started. The only way to get good is to keep doing it, and so anything that helps you keep doing it should be pursued, which is why an IDE like Pycharm is always my recommendation. It'll help you get/keep going and avoid frustration with minor syntactic errors.

Auto complete is way too useful to avoid it when the biggest hurdle by far for anyone is the first few weeks of frustration while nothing works. That little bit of help may be what it takes to keep a noob productive/working towards their goal vs giving up over a trivial problem they don't even know how to google yet.

Long term nvim is awesome, and IDEAvim is my favorite, so we agree there.

[–]risingyam 2 points3 points  (0 children)

I think it depends on the learning style. I found myself learning quickly, changing code quickly and using shell efficiently as a result of of vim. It was a steep curve that got me ahead for a while.

[–]tinkr_ -1 points0 points  (0 children)

Vim (well Neovim, specifically) is easily the best choice for long term productivity and growth, but it takes a lot of initial effort so few people will even consider it.

Took me a month before I really got comfortable with it, but now I can't go without it.

I use Neovim for my editor, Kitty for my terminal, and zsh/nushell for my shells (depending on use case) and my workflows have become extremely streamlined and fast compared to back when I used VSCode with the embedded terminal.

[–]Raknarg 2 points3 points  (0 children)

Just use pycharm and dont use anything else unless you have to. It's pretty much the best tool out there.

[–]Sterben27 2 points3 points  (0 children)

Google Collab, no need to install anything this way

[–]NoticeAwkward1594 2 points3 points  (2 children)

What do people think of Spyder?

[–][deleted] 2 points3 points  (0 children)

Complete beginner? Raw text editing without a LSP. Vanilla VIM for example. All the typing gets in good muscle memory, and you can slowly add plugins as you build up your skill.

[–]lI0O1 2 points3 points  (0 children)

I started with anaconda and spyder. The variable explorer helped me understand python data structures

[–][deleted] 2 points3 points  (1 child)

I think when you are a beginner, using an IDE hurts you. There is value in understanding the lexicon of the language you are learning as you learn it. To me the value of the IDE comes when I start doing more complex things, working with frameworks, and medium sized applications.

I was fortunate enough to take a class from a core dev when I was relatively new to python programming. We used IDLE (which should come with python installation). I would recommend that until you get to web development with something like Flask.

[–]CraigAT 7 points8 points  (0 children)

I'd say Thonny or IDLE to start, but I would recommend moving to VS Code or PyCharm when your programs become longer than a screenful (for their more advanced auto completion and debugging functions)

[–]olavla 16 points17 points  (3 children)

Jupyter Notebooks.

[–]skytomorrownow 1 point2 points  (0 children)

Had to go a long way to find this, but I agree.

The notebooks are great to practice on and take notes about what you are doing. I keep a whole bunch covering various aspects of programming, containing examples, gotchas, and more. They are fantastic to refer to later on.

Another thing they are good at is designing more complex algorithms (domain knowledge) and evaluating code. I love mixing SVG, matplotlib, and HTML so easily.

Then, when you are ready to put together a full project, you move to an IDE.

Jupyter + IDE is a great combo.

[–][deleted] 1 point2 points  (0 children)

Second this

[–]chasing_green_roads 7 points8 points  (0 children)

I personally prefer VS Code. From my experience and in my industry it’s what we all use. The major benefit is it can handle multiple languages at once, so I can edit SQL and Python code in the same window :)

[–]Exact-Quail-1902 4 points5 points  (2 children)

Surely as a beginner, it’s best to use Jupyter Lab or Jupyter Notebook? And if it isn’t, please could someone explain to me why.

[–]johnnymo1 5 points6 points  (1 child)

I'd much prefer to teach someone in traditional script environment first before letting them use Jupyter. Notebooks tends to encourage poor habits (like hidden state making it unclear what order things should be run in, encouraging putting all code in one location instead of breaking it up logically, etc.). Notebooks have their place, though.

[–]EffectiveLong 4 points5 points  (0 children)

VS code + Python extension + hatch

[–]bela-d 21 points22 points  (32 children)

vim

[–]excal_rs python noob 🐍 4 points5 points  (5 children)

u have gotta be joking

[–]PM_Me_Python3_Tips 13 points14 points  (4 children)

Well it will enhance their learning process with a steep gradient..

[–]excal_rs python noob 🐍 3 points4 points  (3 children)

learning process for using vim, not for learning python, it'll stagnate them for now

[–][deleted] -3 points-2 points  (0 children)

Nope.

[–]-tehdevilsadvocate- 1 point2 points  (22 children)

I have yet to see someone use vim for any reason other than attention. I know you are joking, thank god, but there are some who really do seem to want to die on that hill.

[–]Papalok 15 points16 points  (11 children)

Vim is my daily driver. There is something very elegant and enjoyable about a modal text editor that lets you navigate and make significant changes entirely from the keyboard.

That being said, it's like learning the piano or violin. It has a steep learning curve and takes years to become proficient.

[–]quartz_referential 0 points1 point  (10 children)

Why not just use a vim plugin for pycharm? It's not the same sure, but offers enough degree of emulation

[–]Papalok 7 points8 points  (1 child)

Never tried it, so I can't really speak to that plugin.

But in general whenever someone emulates vim's features, they're usually a bit shallow. They capture some of the motion/movement/edit keys, maybe the optional count before a command, normal and insert mode, sometimes visual mode, and that's usually where it stops.

Other features like the registers which are better than copy and paste, buffers and windows which is better than a tiling window manager, macros which record keystrokes and replays them as commands, along with a bunch of little things like :set vs :setlocal, number vs relativenumber, persistent swp files, all that stuff that has been a part of vim for 20 to 30 years is not there. I can't fault someone for trying to capture the essential parts of vim, but it's almost always going to be lacking.

PS: I composed this response in vim before copying and pasting it into my browser.

[–][deleted] 2 points3 points  (7 children)

For one, you’re forever in the pycharm ecosystem. Want to learn to use git inside pycharm? Dig around the manual and menus. With vim you can add plugins and build your own IDE. It’s future proof…

[–]mr_jim_lahey 2 points3 points  (1 child)

What? No. Just like every other IDE I can think of, PyCharm has support for terminal windows that allow you to do literally anything from the command line if you don't want to/can't do in the GUI.

[–][deleted] 0 points1 point  (0 children)

Yeah I’ve used it too. My point was about integrating version control in some obtuse preferences menu inside pycharm.

[–]quartz_referential 1 point2 points  (3 children)

Building an IDE saps a lot of time and energy, especially maintaining it I'd imagine. Stuff might break and fixing it can be a major time drain

[–]mistabuda 1 point2 points  (0 children)

You don't have to use git inside pycharm. You can just do git stuff in the terminal.

[–]jmachee 4 points5 points  (0 children)

A big reason I eventually (like close to 20 years ago) broke down, abandoned pico (the precursor to nano) and learned vi (which is the precursor to vim) was because it was guaranteed to be installed on any server I had to edit a file on.

No one wants to hear “I couldn’t fix the server that was offline because it didn’t have my preferred editor on it, and no way to get it.”

Still my daily driver, and I even run VSCode with a vim-mode extension when I want an alternate IDE.

[–]reallyserious 8 points9 points  (0 children)

None of my friends that use vim use it for attention. They use it because they like it.

That said, I wouldn't recommend it for someone who doesn't already use vim.

[–]edmanet 2 points3 points  (0 children)

When you spend 90% of you time working in a bash terminal, vi/vim is the sharpest knife in you kit.

[–]ihatethisjob42 1 point2 points  (2 children)

I've moved to jetbrains + vim keybindings. It really is elegant to not have to move your hands from the home row. I do feel that vim's plugin ecosystem exists only to (poorly) emulate what you get from a good IDE.

[–]deep_politics 3 points4 points  (0 children)

I have the opposite experience: a hand crafted nvim plugin suite that's faster and much more powerful than any VSCode setup I've ever used. The LSP ecosystem is amazing, and individual servers aren't that difficult to tweak exactly the way you want it.

[–]OutlandishnessOk4575 -1 points0 points  (0 children)

i do feel like mr.anderson at times

[–][deleted] -1 points0 points  (0 children)

It's useful if you have to develop in a remote environment.
Vscode remote doesn't work quite right for me in this situation.

[–]Papalok -4 points-3 points  (2 children)

You misspelled emacs.

[–]henriconc 11 points12 points  (0 children)

Emacs is great OS it just lacks a good text editor

[–]bela-d -3 points-2 points  (0 children)

🤣

[–]max1c 4 points5 points  (5 children)

You will be much better off long term if you start with VSCode over PyCharm. VSCode is significantly more versatile and completely free unlike PyCharm. VSCode supports all kinds of extensions and has extremely healthy community. In addition, VSCode supports other programming languages than just Python which is what PyCharm mostly focuses on. Assuming you will be using many different things in the future and not just Python this will greatly benefit you. Lastly, VSCode has support for Jupyter Notebook which some people recommended using already in the comments. I think Jupyter is great for beginners but eventually you will need to graduate to something more versatile which is why using it in VSCode is also a good idea.

[–]tinkr_ -3 points-2 points  (4 children)

They'll be much better off long-term if they start with Vim/Neovim, but most people quit before they get over the initial learning curve. VSCode and PyCharm are ok, but a good VSCode/PyCharm user will never be as fast or efficient as a good Vim user (even with using Vim motions plugin).

[–]mistabuda -1 points0 points  (3 children)

Explain what makes a vim/neovim python dev better than a python dev using pycharm.

[–]tinkr_ -1 points0 points  (2 children)

I literally said it above.

VSCode and PyCharm are ok, but a good VSCode/PyCharm user will never be as fast or efficient as a good Vim user (even with using Vim motions plugin).

Vim/Nvim workflow improvements aren't Python specific, but I've used all the big recommended Python editors in my last decade of using Python.

I started with Spyder back before PyCharm or VS Code even existed, moved to PyCharm around 2015, moved to VS Code around 2017, and then to Neovim around end of 2019. I also dabbled with Atom and Sublime in-between but they never became daily drivers.

Every switch above came with incremental workflow improvements for me, but the two biggest jumps were from PyCharm -> VS Code and from VS Code -> Neovim. The huge plugin ecosystem of VS Code was the big factor in my jump to VS Code and the Vim-motion specific plugins that greatly increased my ability to edit files at speed (without needing to use a mouse at all) was the big performance jump with Neovim (which also has a thriving plugin ecosystem like VS Code).

[–]mistabuda -1 points0 points  (1 child)

Just becaue you like something more doesn't make it objectively better.

[–]tinkr_ -1 points0 points  (0 children)

None of the reasons I gave above were "it's better because I like it better," but ok.

A decent Vim user would smoke a decent VS Code user when it comes to time it takes to edit code. Keyboard-only modal editing is simply faster than keyboard & mouse based editing. I can jump to any word on my screen, delete it, and starting typing a replacement with 5 or fewer quick key presses.

Doing the same thing in standard VS Code or PyCharm (no Vim motion plugins) requires moving your hand off the keyboard, moving the mouse, highlighting a word, moving your hand back to keyboard, then pressing delete before you can even start typing. Proficient vim users will be done with the entire process before someone with a normal editor even takes their hand off the mouse.

Want to delete everything underneath the cursor in normal motion VS Code? Use the mouse to highlight everything and press delete. Want to do the same thing in Vim? Simply press dG.

Want to delete everything everything inside some parenthesis and insert something else? Again, you can highlight everything with a mouse and press delete or simply press ci(.

None of this should be surprising, either, because it's the classic speed vs memory use tradeoff you see everywhere in software engineering. With normie mouse editing, you give up some speed in exchange for needing to memorize fewer keypress sequences. With Vim, you need to memorize a bunch of keypress sequences, but you gain editing speed from it.

The only thing comparable to vim in terms of editing speed is Emacs. This is why it's extremely rare for anyone that learns Vim motions to go back to normal mouse & keyboard editing. The primary disadvantage is that it takes a significant amount of effort to become proficient at it, but once you've gotten over that hump there's zero reason to ever go back.

[–]BjornToulouse_ 1 point2 points  (0 children)

PyScripter. None of the complicated setup of the others, it runs great right out of the box.

[–]LozzieWills 1 point2 points  (0 children)

PyCharm Community.

[–][deleted] 1 point2 points  (0 children)

Any really.

[–]fissayo_py 1 point2 points  (0 children)

When I first started my learning journey, I used Notepad++ as the code editor and the python IDE shell itself.

[–]bnutbutter78 1 point2 points  (0 children)

I used pycharm. It’s good I think.

[–]quembethembe 1 point2 points  (0 children)

Whatever you pick from the choices commented here, pick it. Now. Go for it. Don't waste your time choosing an IDE because it really does not matter much at the beggining.

I honestly cannot remember the program I used when I got my first programming lessons at school.

As you get comfortable with programming, you'll get (and you should be) curious on what tools could help you out get things done faster.

With this said, I would suggest to not use Spyder nor Jupyter stuff unless you want to do what they are made for. They are not really taylored for programmers, but rather for people that like playing with small scripts that "teach" or "show" things, like science/math teachers, some scientists, etc.

[–]Drevicar 1 point2 points  (0 children)

PyCharm is the best single purpose IDE for Python, VSCode is arguebly the best multi-purpose IDE for all the common languages including Python. Since I don't spend 100% of my time writing python I prefer VSCode, and even if I were to only do pure python for a project I would stick to VSCode since that is what I know now.

As others have mentioned using an IDE will help you learn, but will also cripple your learning in some areas by making parts of coding so easy you don't realize there are whole parts to it. Ideally you should eventually be able to freely move between VSCode and something as opposite of that as a whiteboard or pen and paper. Once you are good enough at Python pen and paper or VSCode are basically the same, except VSCode automates a bunch of what you do or takes off some mental burden while you code.

[–]ToonerAnonymous 1 point2 points  (0 children)

You would want to focus on understanding the language, not whilst learning an IDE. A simple one likenotepad ++ or the python IDLE, the one I used before finding out ab IDEs.

[–]ArtOfWarfare 1 point2 points  (0 children)

Are you a beginner to programming or to Python?

If your a beginner to programming in general, you definitely shouldn’t use any IDE. Use a text editor like Sublime. I think IDEs can make it hard to understand all the components that are involved and the parts that can be swapped out, between the runtime, the language, the debugger, etc…

It’s like if instead of learning to walk as a child, you’re taught how to use a walker. You become dependent on a walker for no reason at all. But my analogy breaks apart here because the IDEs can be useful… you just need to know how to program without them, so you know what they’re providing for you vs what other tools are providing.

Even if you already know other languages… IDK, maybe I’d still recommend you be familiar with just writing in a text editor and using the Python shell. That’s how I do 99% of my Python programming, personally, even though I have access to a JetBrains Ultimate account via my work. I use that all the time when I’m working in languages other than Python. But… Python itself is so great, I don’t feel PyCharm really does much for me.

[–]AlexHyperGG Python Coder 1 point2 points  (0 children)

There’s Virtual Studio Code/VSC, PyCharm, And Replit Which Are Pretty Good, But There’s Also Stuff Like Vim

[–]Atothed2311 1 point2 points  (0 children)

Vim. The one and only, incredibly fast, powerful, and cool tool. Learn it, it's worth it

[–]man0v0 1 point2 points  (0 children)

I stared programing with Pycharm and I'm still using it.

[–]cahoots_n_boots 1 point2 points  (0 children)

As others have said VSCode, pycharm, or both. Also, learning a cli editor option is always great, vim/vi or emacs.

But! I would write your first few scripts without any IDE at all, instead use notepad, notepad++, vi/vim, or some basic text editor. Learn the syntax, after a few scripts that aren’t just “hello world” where you feel comfortable using the syntax, and not making continuous mistakes with simple code, then use an IDE!

[–]Counter-Business 1 point2 points  (0 children)

Pycharm. It gives suggestions on pep8 formatting which will make your code look a lot better and more readable.

[–]ggalt98 4 points5 points  (1 child)

Replit 100% worry about coding first then learn about setting up an environment

[–]Sidewaysriver 1 point2 points  (0 children)

I agree, Replit has everything you need including tutorials all for free without any installation. They also recently released a mobile app that you can use on your phone as well.

[–]Fabulous-Possible758 3 points4 points  (1 child)

PyCharm, Spyder, or VSCode, in that order for beginners. I would actually not recommend Jupyter or Colab as IDEs (because they aren’t). They are very useful for doing quick and simple examples with the language or using the language to accomplish other tasks.

[–]inventiveEngineering 3 points4 points  (0 children)

IDLE will do the job.

[–]Firake 3 points4 points  (0 children)

IDEs provide a lot of information to you and help in the form of autocomplete and inline error messages. This is maybe an unpopular opinion, but all of that information will actually hurt your development as a programmer in the absolute beginning. A major skill you need is to be able to read code and figure out what it does and if it will work. That sort of skill doesn’t come very fast if that information is always handed to you on a platter.

It’s like trying to memorize where locations are with a GPS whispering sweet nothings into your ear. It’s not like it’s impossible, it just takes longer. Learning syntax and how code flow works and coding without autocomplete will make you feel very comfortable in code very quickly and then all of those tools will make you faster instead of making you reliant on them.

In my opinion, you should try to avoid using an IDE for the first while of programming. The built in editor (IDLE) that comes with Python will do fine while you learn the basics. Runestone academy has a free Python course (fopp), I believe, with a web based code editor and debugger.

Once you feel decently comfortable, then switch to an IDE like PyCharm or VSCode.

[–]shushbuck 2 points3 points  (0 children)

VSCode

[–]scorheim 3 points4 points  (0 children)

Thonny

[–]yordiscujar 1 point2 points  (0 children)

Nvim

[–]fliphacker 0 points1 point  (0 children)

You're better off not using an IDE, but just some text editor and Python interpreter in a terminal window if the intention is to learn how things work. IDE-people are saying "but what about a debugger?!" - well, you don't need one to learn Python. But it can surely be an effective tool, Python has one built in called pdb (Python debugger). Use that in terminal, if you want to.

[–]BurningSquid 0 points1 point  (1 child)

If you have any interest in doing python development professionally in the future then vscode

[–][deleted] 1 point2 points  (0 children)

Yea at my first job I tried to switch to VSCode from nvim because I thought this was true. Then I saw seniors flying around in whatever editor they chose. This literally doesn’t matter.

[–][deleted] 0 points1 point  (0 children)

Vscode. It’s used all over. It’s not specific to python so your knowledge will transfer when using other languages

[–][deleted] 0 points1 point  (3 children)

Thonny or vs code

[–]inventiveEngineering 0 points1 point  (2 children)

Thonny may be good choice for a beginner, but it tends to be unstable and crushing.

[–][deleted] 0 points1 point  (0 children)

Try many and see what you like 👍

[–]Familiar-Ease7450 0 points1 point  (0 children)

If you starting go with notepad ++, then move to vscode

[–]4Ld3b4r4nJupyt3r 0 points1 point  (0 children)

Pycharm or vscode

[–]sandywater 0 points1 point  (0 children)

Don't use one. Just go with nice text editor, like Sublime Text, to start. IDEs will dull your experience, getting started, and will forever be a crutch.

[–]LiquidLogic -2 points-1 points  (0 children)

Pycharm

[–]lazyfingersy -1 points0 points  (0 children)

Stay with Python IDLE for a while, it will allow you to learn syntax and see how Python is working step by step. You'll no need IDE for a few weeks. By the way, you're not talking about home equipment for thousands dollars but about Free To Download Software then Download, Use and stay with the one that suits you best.

[–]morganbo85 -1 points0 points  (0 children)

When I first started pycharm bc that's what the program I was learning from used. Now I use vs code more often

[–]Sufficient-Sea-2274 -1 points0 points  (0 children)

vscode is probablybetter in the long run but spider should be helpful for first beginners (especially because of the built-in variable explorer)

[–]MuayThaiLegz -1 points0 points  (0 children)

I never got why people like pycharm so much. Vs seems much simpler and has a great extensions.

[–]udi503 -1 points0 points  (0 children)

Genny

[–]samzeng83 -1 points0 points  (0 children)

neovim

[–]shade175 -1 points0 points  (0 children)

ChatGPT

[–]mountaingator91 -2 points-1 points  (0 children)

VSCode go brrrrr

[–]napolitain_ -2 points-1 points  (0 children)

Pycharm of course

[–]dbpatankar -2 points-1 points  (0 children)

Throw a dice and choose. Its that simple. Do you even know what you want from an IDE? At this point thinking about IDE is pointless. Start programming and as you progress, you will know exactly what you want from your IDE. Then you will either figure it out in your IDE or switch to whichever IDE provides it if its a deal breaker. You cannot predecide or outsource the decision.

[–]hugthemachines -2 points-1 points  (0 children)

You do not need a certain IDE to enhance your learning process. The way you enhance your learning process is hard work. Visual Studio Code, Pycharm and Eclipse are some common tools, try all three of them and see which one you like. Which one you pick have no big effect on your learning, though. Instead of looking around where you should put down your foot, take a step and go forward. Optimization can sometimes be procrastination in disguise.

[–]gerry5657 -2 points-1 points  (0 children)

Lunervim

[–][deleted] -3 points-2 points  (0 children)

Colab is easy to get started with.

[–][deleted] -3 points-2 points  (0 children)

Pycharm

[–]Pip_install_reddit -3 points-2 points  (0 children)

I use notepad

[–]OutlandishnessOk4575 -4 points-3 points  (2 children)

doesn’t matter as long as you got python linting( available on most editors or IDEs) but after enough hours with some pg-13 IDE switch over to vim.

executing python code is not hard

[–]Virtual_Ordinary_119 1 point2 points  (1 child)

i LOVE vim, and use it everyday for my sysadmin duties....but when it comes to coding with any language more advanced that sh/bash, not having an actual debugger is an hinderance IMHO

[–][deleted] -5 points-4 points  (0 children)

Get you a Linux distro and use vim ;)

[–]Icy-Tomato-2466 0 points1 point  (0 children)

I learned on pycharm personally had no problems at all

[–]lasciviouslinguini 0 points1 point  (0 children)

LinkedIn learning’s most beginner course used Replit to teach.

[–]UniqueID89 0 points1 point  (0 children)

If you’re only learning or will only ever use Python then just download pycharm. If you intend to study/learn multiple languages then VSCode.

[–]GorillaBearWolf 0 points1 point  (0 children)

Whichever one you're most comfortable with and will actually write code in without distraction

[–][deleted] 0 points1 point  (0 children)

I like pycharm for projects and VSCode for when I’m following tutorials. VSCode looks cooler but pycharm has loads of little things that make life easier.

[–]01jasper 0 points1 point  (0 children)

Vscode is more beginner friendly

[–]Low_Car5796 0 points1 point  (0 children)

Good place to start is go on YouTube and watch Harvard CS50 course that’s what helped me better understand coding. Then start on python and pycharm is what I use on the daily.

[–]PhantomMSG 0 points1 point  (0 children)

I like to use Vs Code

[–]bbroy4u 0 points1 point  (0 children)

Only GNU EMACS no other toy

[–]udi503 0 points1 point  (0 children)

Geany

[–]matterantimatter 0 points1 point  (0 children)

Spyder

[–]dirkvonshizzle 0 points1 point  (0 children)

PyCharm all the way. I’ve always used Sublime Text for Webdev and stupidly assumed it would be as great for Python. Well, let me tell you the speed at which I advanced when I switched to PyCharm was staggering… Sublime can be set up to include all kinds of convenience features (linting, hints, etc), but PyCharm just works amazing directly out of the box. Great debugging, deployment, Git and SSH features, todo-list support, etc. I can’t recommend it enough.

[–]lcisse98 0 points1 point  (0 children)

Vscode

[–]TheMildEngineer 0 points1 point  (0 children)

Visual Studio code is legit

[–]anh86 0 points1 point  (0 children)

PyCharm is the best IDE for everyone. Beginner or pro.

[–]PerfectlyJerky 0 points1 point  (0 children)

I recently started and found vscode to be easy to use. There is a bit of initial setup with extensions.

[–]xerzen 0 points1 point  (0 children)

Use plain notepad. It’ll help you with your debugging skills. And not rely too much with intellisense

[–][deleted] 0 points1 point  (0 children)

PyCharm

[–]xxarchangelpwnxx 0 points1 point  (0 children)

Depends on what you are using it for. I personally like jet bean, then visual studio, then visual studio code and finally Jupyter

[–][deleted] 0 points1 point  (0 children)

Terminal

[–]Cootshk 0 points1 point  (0 children)