You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
<p><ahref="http://nothingbutsnark.svbtle.com/how-to-argue-for-pythons-use">How to argue for Python’s use</a>
explains that choosing a programming language can be complicated but that
Python is a very good option for many use cases.</p>
</li>
<li>
<p><ahref="http://lorenabarba.com/blog/why-i-push-for-python/">Why I Push for Python</a>
explains one professor's rationale for promoting Python to teach programming
to undergraduates.</p>
</li>
</ul>
<h3>Resources for Python enterprise advocacy</h3>
<ul>
<li>
<p>CIO Magazine discusses why
<ahref="http://www.cio.com/article/2431212/developer/dynamic-languages--not-just-for-scripting-any-more.html">dynamic languages are increasingly being adopted in enterprise environments</a>.</p>
</li>
<li>
<p>PayPal covers
<ahref="https://www.paypal-engineering.com/2014/12/10/10-myths-of-enterprise-python/">10 myths about enterprise Python</a>
via their engineering blog.</p>
</li>
<li>
<p>My DjangoCon 2014 talk focused on overcoming false biases against
<ahref="https://www.youtube.com/watch?v=aMtiCX38w20">Python and Django in enterprise environments</a>.</p>
</li>
</ul>
<h2>What else would you like to know about Python?</h2>
<h1>Best Python Resources</h1>
<p>The Python community is amazing at sharing detailed resources and helping
beginners learn to program with the language. There are so many resources
out there though that it can be difficult to know how to find them. </p>
<p>This page aggregates the best general Python resources with descriptions of
what they provide to readers.</p>
<divclass="well" style="margin-top: 20px;">
If you prefer learning by watching videos
<ahref="/best-python-videos.html">best Python videos</a> as well
<p>If you've never programmed before check out the
<ahref="http://learntocodewith.me/getting-started/">Getting Started</a> page on
<ahref="http://learntocodewith.me/">Learn To Code with Me</a>
by <ahref="https://twitter.com/lebdev">Laurence Bradford</a>. She's done an
incredible job of breaking down the steps beginners should take when
they're uncertain about where to begin.</p>
</li>
<li>
<p><ahref="http://learnpythonthehardway.org/book/">Learn Python the Hard Way</a> is a
free book by Zed Shaw.</p>
</li>
<li>
<p><ahref="http://www.diveinto.org/python3/">Dive into Python 3</a> is an open source
book provided under the Creative Commons license and available in HTML or
PDF form.</p>
</li>
<li>
<p><ahref="http://pymbook.readthedocs.org/en/latest/">Python for You and Me</a> (pym) is
an online book for people completely unfamiliar with the Python programming
language.</p>
</li>
<li>
<p><ahref="http://www.swaroopch.com/notes/python/">A Byte of Python</a> is a beginner's
tutorial for the Python language. </p>
</li>
<li>
<p>Code Academy has a <ahref="http://www.codecademy.com/tracks/python">Python track</a>
for people completely new to programming.</p>
</li>
<li>
<p><ahref="http://opentechschool.github.io/python-beginners/en/index.html">Introduction to Programming with Python</a>
goes over the basic syntax and control structures in Python. The free book
has numerous code examples to go along with each topic.</p>
</li>
<li>
<p>The O'Reilly book
<ahref="http://greenteapress.com/thinkpython/html/index.html">Think Python: How to Think Like a Computer Scientist</a>
is available in HTML form for free on the web.</p>
</li>
<li>
<p><ahref="http://anandology.com/python-practice-book/index.html">Python Practice Book</a>
is a book of Python exercises to help you learn the basic language syntax.</p>
</li>
<li>
<p>Looking for ideas about what projects to use to learn to code? Check out
<ahref="https://medium.com/learning-journalism-tech/five-mini-programming-projects-for-the-python-beginner-21492f6ce0f3">this list of 5 programming project for Python beginners</a>.</p>
that non-technical folks trying to learn to program may find useful.</p>
</li>
</ul>
<h2>Experienced developers new to Python</h2>
<ul>
<li>
<p><ahref="http://learnxinyminutes.com/docs/python/">Learn Python in y minutes</a>
provides a whirlwind tour of the Python language. The guide is especially
useful if you're coming in with previous software development experience
and want to quickly grasp how the language is structured.</p>
</li>
<li>
<p><ahref="http://pymbook.readthedocs.org/en/latest/">Python for you and me</a> is an
approachable book with sections for Python syntax and the major language
constructs. The book also contains a short guide at the end to get
programmers to write their first Flask web application.</p>
</li>
<li>
<p>Kenneth Reitz's
<ahref="http://docs.python-guide.org/en/latest/">The Hitchhiker’s Guide to Python</a>
contains a wealth of information both on the Python programming language and the community.</p>
</li>
<li>
<p><ahref="https://districtdatalabs.silvrback.com/how-to-develop-quality-python-code">How to Develop Quality Python Code</a>
is a good read to begin learning about development environments,
application dependencies and project structure.</p>
</li>
</ul>
<h2>Beyond the basics</h2>
<ul>
<li>
<p><ahref="http://mirnazim.org/writings/python-ecosystem-introduction/">The Python Ecosystem: An Introduction</a>
provides context for virtual machines, Python packaging, pip, virutalenv
and many other topics after learning the basic Python syntax. </p>
</li>
<li>
<p>The <ahref="http://www.reddit.com/r/python">Python Subreddit</a> rolls up great
Python links and has an active community ready to answer questions from
beginners and advanced Python developers alike.</p>
</li>
<li>
<p><ahref="http://jessenoller.com/good-to-great-python-reads/">Good to Great Python Reads</a>
is a collection of intermediate and advanced Python articles around the web
focused on nuances and details of the Python language itself.</p>
</li>
<li>
<p>The blog <ahref="http://freepythontips.wordpress.com/">Free Python Tips</a> provides
posts on Python topics as well as news for the Python ecosystem.</p>
</li>
<li>
<p><ahref="http://pythonbooks.revolunet.com/">Python Books</a> is a collection of freely
available books on Python, Django, and data analysis.</p>
</li>
</ul>
<h2>Videos, screencasts and presentations</h2>
<p>Videos from conferences and meetups along with screencasts are listed on
the <ahref="/best-python-videos.html">best Python videos</a> page.</p>
<h2>Curated Python packages lists</h2>
<ul>
<li>
<p><ahref="https://github.com/vinta/awesome-python">awesome-python</a> is an incredible
list of Python frameworks, libraries and software. I wish I had this
page when I was just getting started. </p>
</li>
<li>
<p><ahref="http://easy-python.readthedocs.org/en/latest/">easy-python</a> is like
awesome-python although instead of just a Git repository this site is
in the Read the Docs format.</p>
</li>
</ul>
<h2>Newsletters</h2>
<ul>
<li>
<p><ahref="http://www.pythonweekly.com/">Python Weekly</a> is a free weekly roundup
of the latest Python articles, videos, projects and upcoming events.</p>
</li>
<li>
<p><ahref="http://pycoders.com/">PyCoder's Weekly</a> is another great free weekly
email newsletter similar to Python Weekly. The best resources are generally
covered in both newsletters but they often cover different articles
and projects from around the web.</p>
</li>
<li>
<p><ahref="http://importpython.com/newsletter/">Import Python</a> is a newer newsletter
thank Python Weekly and PyCoder's Weekly. So far I've found this newsletter
covers different sources from other newsletters. It's well worth subscribing
to all three so you don't miss anything.</p>
</li>
</ul>
<h3>Those resources should help get you started. What's next?</h3>
<h1>Best Python Videos</h1>
<p>If you prefer to learn Python programming by watching videos then this is the
resource for you. I've watched hundreds of live technical talks and combed
through videos to pick out the ones with great speakers who'll teach you the
most about the language and ecosystem. </p>
<p>This page links to the best free videos as well as other video lists so you
can do your own searching through the huge backlog of conference and meetup
talks from the past several years. </p>
<divclass="well" style="margin-top: 20px;">
Be sure to read the
<ahref="/best-python-resources.html">best Python resources</a> for
links to books and articles as well as
<ahref="/web-frameworks.html">web frameworks</a>
to learn more about web development.
</div>
<h2>Web development with Django, Flask and other frameworks</h2>
<ul>
<li>
<p><ahref="https://twitter.com/heddle317">Kate Heddleston</a> gave a talk at PyCon 2014
called
"<ahref="http://pyvideo.org/video/2591/so-you-want-to-be-a-full-stack-developer-how-to">Full-stack Python Web Applications</a>"
with clear visuals for how numerous layers of the Python web
stack fit together. There are also <ahref="https://speakerdeck.com/pycon2014/so-you-want-to-be-a-full-stack-developer-how-to-build-a-full-stack-python-web-application-by-kate-heddleston">slides available from the talk</a>
<p>If you're considering the cloud-based development environment route, check
out this
<ahref="http://readwrite.com/2014/08/14/cloud9-koding-nitrousio-integrated-development-environment-ide-coding">great article comparing Cloud9, Koding and Nitrous.io</a>
by Lauren Orsini. She also explains more about what a cloud IDE is and is
not.</p>
</li>
<li>
<p>Real Python has an awesome, detailed post on
<ahref="https://realpython.com/blog/python/setting-up-sublime-text-3-for-full-stack-python-development/">setting up your Sublime Text 3 environment</a>
as a full-fledged IDE.</p>
</li>
<li>
<p>The <ahref="http://docs.python-guide.org/en/latest/dev/env/">Hitchhiker's Guide to Python</a>
has a page dedicated to development environments.</p>
</li>
<li>
<p><ahref="http://pedrokroger.net/choosing-best-python-ide/">Choosing the best Python IDE</a>
is a review of six IDEs. PyCharm, Wing IDE and PyDev stand out above the
other three in this review.</p>
</li>
<li>
<p><ahref="http://nafiulis.me/pycharm-the-good-parts-i.html">PyCharm: The Good Parts</a>
shows you how to be more efficient and productive with that IDE if it's
your choice for writing Python code.</p>
</li>
<li>
<p>JetBrains' <ahref="http://blog.jetbrains.com/pycharm/">PyCharm Blog</a> is required
reading if you're using the IDE or considering trying it.</p>
</li>
</ul>
<h1>Vim</h1>
<p>Vim, shorthand for Vi IMproved, is a text editor with numerous configuration
options and wide-ranging extensions that can be used to write Python code.</p>
<h2>Why is Vim a good Python development environment?</h2>
<p>Vim's philosophy is that developers are fastest when they never take their
hands off the keys. Even using the mouse is a detriment to the rate at which
your thoughts can flow into code. </p>
<p>Vim has a language behind its commands. When a beginner is learning the
editor she may feel like it is impossible to understand all the key commands.
However, the commands stack together in a logical way so that over time
the editor becomes predictable.</p>
<h2>Configuring Vim with a Vimrc</h2>
<p>The Vimrc file is used to configure the Vim editor. A Vimrc file can range
from nothing in it to very complicated with hundreds or thousands of lines
of configuration commands.</p>
<p>Here's a simple example .vimrc file I use for Python development to get a feel
including code examples and diagrams to explain how they work.</p>
</li>
<li>
<p><ahref="http://blog.cdleary.com/2010/04/learning-python-by-example-list-comprehensions/">Learning Python by example: list comprehensions</a>
gives an example of an incorrect list comprehension then shows how to
correct its issues.</p>
</li>
<li>
<p><ahref="http://www.pythonforbeginners.com/basics/list-comprehensions-in-python">List comprehensions in Python</a>
covers what the code for list comprehensions looks like and gives some
example code to show how they work.</p>
</li>
<li>
<p><ahref="http://effbot.org/zone/python-list.htm">An Introduction to Python Lists</a>
is a solid overview of Python lists in general and tangentially covers
list comprehensions.</p>
</li>
</ul>
<h3>Learn more about data or head back to the intro?</h3>
<h1>Web frameworks</h1>
<p>A web framework is a code library that makes a developer's life easier when
building reliable, scalable and maintainable web applications.</p>
<h2>Why are web frameworks necessary?</h2>
<p>Web frameworks encapsulate what developers have learned over the past twenty
years while programming sites and applications for the web. Frameworks make
it easier to reuse code for common HTTP operations and to structure projects
so developers with knowledge of the framework can more quickly build and
maintain the application.</p>
<h2>Common web framework functionality</h2>
<p>Frameworks provide functionality in their code or through extensions to
perform common operations required to run web applications. These common
operations include:</p>
<ol>
<li>URL routing</li>
<li>HTML, XML, JSON, and other output format templating</li>
<li>Database manipulation</li>
<li>Security against Cross-site request forgery (CSRF) and other attacks</li>
</ol>
<p>Not all web frameworks include code for all of the above
functionality. Frameworks fall somewhere between simply executing a
single use case and attempting to be everything to every developer with
increased complexity. Some frameworks take the "batteries-included" approach
where everything possible comes bundled with the framework while others
have a minimal code library that plays well with extensions.</p>
<p>For example, the Django web application framework includes an
Object-Relational Mapping (ORM) layer that abstracts relational database
read, write, query, and delete operations. However, Django's ORM
cannot work without significant modification on non-relational databases such as
<ahref="http://www.mongodb.org/">MongoDB</a>.
Some other web frameworks such as Flask and Pyramid are easier to
use with non-relational databases by incorporating external Python libraries.
There is a spectrum between minimal functionality with easy extensibility and
including everything in the framework with tight integration.</p>
<h2>General web framework resources</h2>
<ul>
<li>
<p>"<ahref="http://www.jeffknupp.com/blog/2014/03/03/what-is-a-web-framework/">What is a web framework?</a>"
by <ahref="https://twitter.com/jeffknupp">Jeff Knupp</a>
is an in-depth explanation of what web frameworks are and their relation
to web servers.</p>
</li>
<li>
<p>Check out the answer to the
"<ahref="http://stackoverflow.com/questions/4507506/what-is-a-web-framework-how-does-it-compare-with-lamp">What is a web framework and how does it compare to LAMP?</a>"
question on Stack Overflow.</p>
</li>
<li>
<p><ahref="http://youtu.be/W6KCPXl6Zuc">Frameworks</a> is a really well done short video
that explains how to choose between web frameworks. The author has some
particular opinions about what should be in a framework. For the most part
I agree although I've found sessions and database ORMs to be a helpful
part of a framework when done well.</p>
</li>
<li>
<p><ahref="https://www.airpair.com/python/posts/django-flask-pyramid">Django vs Flask vs Pyramid: Choosing a Python Web Framework</a>
contains background information and code comparisons for similar
web applications built in these three big Python frameworks.</p>
</li>
<li>
<p>This <ahref="http://www.konstruktor.ee/blog/python-web-framework-roundup/">Python web framework roundup</a>
covers Django, Flask and Bottle as well as several other lesser known Python
frameworks.</p>
</li>
<li>
<p>This fascinating blog post takes a look at the
<ahref="http://grokcode.com/864/snakefooding-python-code-for-complexity-visualization/">code complexity of several Python web frameworks</a>
by providing visualizations based on their code bases.</p>
</li>
<li>
<p><ahref="http://www.reddit.com/r/webdev/comments/2les4x/what_frameworks_do_you_use_and_why_are_they/">What web frameworks do you use and why are they awesome?</a>
is a language agnostic Reddit discussion on web frameworks. It's interesting
to see what programmers in other languages like and dislike about their
suite of web frameworks compared to the main Python frameworks.</p>
</li>
</ul>
<h2>Web frameworks learning checklist</h2>
<p><iclass="fa fa-check-square-o"></i>
Choose a major Python web framework (<ahref="/django.html">Django</a> or
<ahref="/flask.html">Flask</a> are recommended) and stick with it. When you're just
starting it's best to learn one framework first instead of bouncing around
trying to understand every framework. </p>
<p><iclass="fa fa-check-square-o"></i>
Work through a detailed tutorial found within the resources links on the
framework's page.</p>
<p><iclass="fa fa-check-square-o"></i>
Study open source examples built with your framework of choice so you can
take parts of those projects and reuse the code in your application.</p>
<p><iclass="fa fa-check-square-o"></i>
Build the first simple iteration of your web application then go to
the <ahref="/deployment.html">deployment</a> section to make it accessible on the
web.</p>
<h3>Which web framework do you want to learn about?</h3>
<h1>Django</h1>
<p><ahref="http://www.djangoproject.com/">Django</a> is a widely used Python web
application framework with a "batteries-included" philosophy. The principle
behind batteries-included is that the common functionality for building
web applications should come with the framework instead of as separate