If you want a job programming in Python, prepare to do a lot of work beforehand. The language is easy to pick up, but you need to do more than just learn the basics; to get a job, you need to have a strong understanding of some pretty complex processes. Python is a general-purpose language, which means it isn't used for just one purpose such as Web development. Rather, it’s used in many different industries, and the industry in which you choose to work will determine how you actually learn the language. For example, if you're hired to write apps that interact with operating systems and monitor devices, you might not need to know how to use the Python modules for scientific and numerical programming. In a similar fashion, if you're hired to write Python code that interacts with a MySQL database, then you won't need to master how it works with CouchDB. Check out the latest Python-related jobs. Therefore, I'm going to suggest that there are three levels to learning the basics of Python:
- Learn the core language itself, such as the syntax and basic types; learn the difference between Python 2 and Python 3.
- Learn the commonly used modules, and familiarize yourself with other modules.
- Learn the bigger picture of software development with Python, such as including Python in a build process, using the pip package manager, and so on. This involves learning about different databases and other technology, depending on where you want to work.
At a basic level, Python is an easy language to learn and use. You can quickly learn how to create variables and loops, for example, and expand beyond that to tuples, lists, and dictionaries. Any Python newbie needs to know which types are immutable, which means an object of that type can't be changed (answer: tuples and strings). With immutable types, the object's value itself can't change, but the variable containing the object can: [python]a = 'abc' a = a.upper() [/python] In the above example, the original string "abc" did not change, as strings can't change; instead, we calculated a brand new string, "ABC," and stored that back into the original variable. Knowing that sort of thing should be second nature to anyone who seeks to understand how Python works. In addition, anyone learning Python should know how the language deals with object-oriented programming, and how to create classes and instantiate objects. It’s also important to know how to use exceptions and exception handlers, and how modules interact. (For key insights, I recommend you read and understand the Python Language Reference; if you're ever unsure about syntax or how the language works, or are arguing with a coworker, that website will have the final word.) The Python beginner must also know how Python 2 and Python 3 are different. Python 3 has been out for quite some time, but there are still a lot of projects that rely on Python 2. If you're interviewing for a position, you'll want to ask which Python they're using; if you’re knowledgeable, you can then speak about the differences.
Slightly More Advanced
Side Note: Learn the Modules
The modules are your libraries, your helpers. Know what's available in the standard library; you don't have to memorize every member of every class, and every class of every module, but you do want to know what's available so that when you need something, you don't go rewrite one from scratch. Familiarize yourself with each module. Many, such as file I/O, have access in almost every application; know these inside and out. For example, know how to open a file with different access, how to read a file, how to write a file, and how to determine if a file or directory exists. Know how to use the os.path module for file-path joining and normalization, rather than writing your own string routines to handle file paths. Finally, understand the cross-platform implications.
Next: Learn Software Development With Python
There are many tools for integrating Python into a software development cycle. If you want to master the language in a real-world context, learn how to obtain Python packages using pip. You should also learn how to do unit testing, which is fundamental to software development in Python; many people get turned down for Python-related jobs because they can’t answer interview questions in this area. (The Hitchhiker’s Guide to Python includes some great information on unit testing.) You should also know how to package up Python programs for distribution, and know your way around both the Windows command prompt and Linux bash shell. Any developer worth their salt can use the tools for general software development, from editors and IDEs to git for source-code control.
Targeting an Industry or Technology