This book is geared toward those who already have programming knowledge. It covers topics that include: creation of user interfaces, computer graphics, internet applications, distributed systems, among other issues.

Foreword

Dynamic languages were seen in the past only as scripting languages, used to automate small tasks, but with the passing of time, they grew, matured and conquered their place in the market, to the point of calling the attention of the major providers of technology.

Several factors contributed to this change, such as the internet, open source software and agile development methodologies. The internet has enabled the sharing of information in a way unprecedented in history, which made possible the growth of open source software. Dynamic languages are usually open source and share the same features and in some cases, the same goals.

Among the dynamic languages, Python stands out as one of the most popular and powerful. There is a lively community of language users in the world, and this is reflected in active mailing lists and many tools available in open source.

Learning a new programming language means learning to think differently. And learn a dynamic language represents a paradigm shift even harder for those people who have spent years developing in static languages.

The e-book "Python para Desenvolvedores" ("Python for Developers") aimed to fill a gap, which was the lack of free courseware in Portuguese about the Python programming language. The work was adopted as a support material for several universities in Brazil, served as a reference for academic papers and has been downloaded over 100,000 times from its official website.

This e-book was originally written in Portuguese and was translated by a small group of volunteers who do not speak English natively, so we ask for help from those who know better the English language, to refine the work, which we believe is a meaningful contribution to the Python users around the world.

Content

The chapters below were rendered through nbviewer in real time. They are read-only. To change any of the content, simply clone this project in Github.

Part I

This part deals with the basics of Python programming language, including syntax, types, control structures, functions, and documentation.

Part II

This part is about modules and packages, highlighting some of the most important ones that are present in standard library of the language, installation of third-party libraries, exceptions and introspection.

Part III

This part is divided into two topics: generators, an increasingly present technology in the language, and functional programming.

Part IV

This part mainly focuses on object orientation, and also addresses decorators and automated tests.

Part V

This part covers various technologies that today are provided by applications mainly to deal with storage and information exchange: database access, persistence, XML and Web. In addition to these topics, we have the use of threads and the MVC architecture.

Part VI

This part presents some features of the packages NumPy, SciPy and Matplolib, and also of known graphical interfaces toolkits . Also, a brief introduction to computer graphics and distributed processing. Finally, comments about performance in Python and ways of packaging and distribute applications.

Appendix

This part focuses on other technologies that have to live with Python in several ways. And the end, the answers of the exercises proposed in the previous parts.

License

This work is licensed under a Creative Commons Attribution - Noncommercial - ShareAlike license. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/br/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

Acknowledgment

I would like to thank my wife and my parents, for their patience during the creation of this work.

Besides them, I would like to thank everyone who supported and helped to publicize the book.

About the author

Luiz Eduardo Borges is an engineer and systems analyst, a graduate degree in Computer Graphics by State University of Rio de Janeiro (UERJ). He has been working for over two decades in computer science under various ways.

Using the book

This book can be read in two different ways: