This language somehow manages to achieve seemingly opposite things: it's simple, great for beginners, yet not limiting and so equally useful to professionals. It's a scripting language, but can offer good performance as well. I've used it for anything from OS and web scripting to writing a 3D game. Big thumbs up.
As someone who has been trained as an educator and not a programmer, I have largely been on my own when it comes to learning computer science so that I can teach it to students. My students start working with Scratch (MIT) and some move on to do robotics with Modkit and RobotC, however I wanted to find a FOSS alternative that is more general purpose than the introductory applications, and could also be used with Raspberry Pi. Out of the various languages I have looked at, Python is the only one which has proven itself to be general purpose, powerful, user-friendly, and easy enough for younger (elementary) students to grasp.
I was able to learn the basics easily on my own, and it's not at all difficult for someone proficient in lesson planning to begin integrating Python into projects. Its extensive library allows for plenty of scaffolding in lessons and helps to avoid frustration which stems from minor errors. I later found that it can even be used with prototyping tools such as Arduino and the Omega.
My review will be little bit different. One year ago I started to learn Python programming language because I changed my job and in new company is necessary to learn Python among other programming languages. I am programming also in C++, Java, C# and I must say that Python is not programming language for developing business applications. Python lacks most of small functionalities which are critical to delivering sucesfull product to the customer.
I will try to describe main problems in Python. I am currently using Python version 2.6 so my review is focused on this version and is possible that higher versions has not these problems.
1) Python compile - you have project which has 100 files with code. And you will make some error on line in one of your files. You misspelled function name, but compiler will not tell you that there is an error. You will find out problem only if your application hit the problematic line of code. Not before. This kind of problem can happen if you hit by mistake to the keyboard before compiling product version of your product.
2) Python is slow. Create list in Python and try to create 10000 instances of your class and ad these objects to the list. C# language is about 50x faster !!!!
3) Compatibility. We have all projects in version 2.6. I want to upgrade Python version to 2.7. Do you think it is possible. NOT !. I am receiving some compiler errors and I need to add some lines of code. I can't afford to rewrite 100 files because risk that application will behave differently is too big. So it is necessary to check all 100 files - every line of code if it is doing what is required. Big projects are lasting 10 or more years and it is not possible to rewrite huge application everytime when new Python version comes out to the light. You need 100% compatibility with older versions. Try to create application in C# 2001 and try to compile it in C# 2013. It passes without problems.
4) Variants: The same problems as in Visual Basic 6.0 many years ago. You have string variable and you want to pass this variable to the function which expecting integer. compiler doesn't tell you that you have made mistake. Everything is compiling fine until customer find yout error in his production environment. This is big problem. Some peoples says it is advantage but if you are creating big systems you need absolutelly control and compiler should tell you these important things. Remeber we are talking about systems where one method is called for example from 10 other classes and if you change variable type or add new parameter you need warning from compiler !
5) Production environment.
You need to install Python libraries to the computer where your script will run. OK no problem. Your customer has about 100 computers and on every computer is Python. You want to upgrade to new version of Python language ( from 2.6 to 2.7 ) Your customer has to reinstall all 100 computers! You have also possiblity to create exe file but you also encounter different problems - this is beyond scope of this article...
I think Python is not matured language and I don't underestand that some peoples prefer this language over JAVA or C# language for example. JAVA and C# are very matured languages and Python doesn't gives you any profit if you choose this language instead of previously mentioned. So use Python in your school for some learning purposes but never use it for some commercial applications.
Since we already have two good reviews from experienced programmers, I'll focus on the area I know about: Python as first language.
I began coding a short time ago. I knew about the logic, but not how to get it into code.
I wanted to learn C++ and failed at structure. After a while I could do it, but it felt clumsy.
I tried my luck with Java and didn't quite get going.
Then I tried Python, and got in at once.
The structure of programs can be understood easily.
The Python interpreter lets you experiment very quickly.
Programs can be extremely complex, but Python also allows for quick and simple scripting.
Code written by others is extremely readable.
And coding just flows - almost like natural speaking/thinking.
As a bonus, there is the great open book How to Think Like a Computer Scientist ( http://ibiblio.org/obp/thinkCS/python/english2e/html/ ) which teaches Python and is being used for teaching Python and Programming at universities.
So I can wholeheartedly recommend Python to beginners in programming, and as the other reviews here show, it is also a great language for experienced programmers and seems to be a good language to accompany you in your whole coding life.
PS: Yes, I know about the double meaning of "first language" :)
PPS: This review is also avaible under free licenses from my site: http://draketo.de/english/free-software/light/python-for-beginners
Python is the best general-purpose programming language I ever used (having studied CS and being a geek, I used or looked at quite a lot of them in the last 25 years).
It is new enough to be well-designed and high-level.
It is mature enough to be very useful and well-behaved.
Coding in Python is easy, fun and going fast.
You can easily read code (no matter if it is your own code or code of someone else), because it is high-level and clean.
You can easily write code. The code volume you need to get something done is usually much less than in other programming languages (and this is not just about typing stuff, having less code means also less bugs, less maintenance costs).
Often you don't have to write code, as it comes with a good standard library that contains lots of useful and easy to re-use code. There are also lots of python modules available on the internet.
You can easily debug code. You can try code in the interactive interpreter. No need to compile the code, just run it.
There are great IDEs for Python, e.g. Eclipse/PyDev or Eric (plus many others I didn't use yet).
You can easily get platform-independent code (runs on Linux, Mac, Win32 and many others).
If you have questions, there is a big community of python coders (web sites, irc channels, mailing lists, news groups, user groups).