#102 in Computers & technology books
Use arrows to jump to the previous/next product
Reddit mentions of Fluent Python: Clear, Concise, and Effective Programming
Sentiment score: 18
Reddit mentions: 34
We found 34 Reddit mentions of Fluent Python: Clear, Concise, and Effective Programming. Here are the top ones.
Buying options
View on Amazon.comor
- O Reilly Media
Features:
Specs:
Height | 9.19 Inches |
Length | 7 Inches |
Number of items | 1 |
Weight | 3.03356072512 Pounds |
Width | 1.57 Inches |
Fluent Python. I've learned more per page from that book than any other Python resource I've come across. For example, studying the book's material on hashable objects got me over a problem I was having with a planning algorithm. When I finished, I had successfully implemented a knowledge base and a total-order planner that could directly leverage the A*-search in the AIMA-Python code base. Kudos to the book's author, Luciano Ramalho, as that is just one example that helped my problem-solving skills in Python.
In case you're unaware, or anyone else is loo8for a more substantial book, Fluent Python covers Pythonic usage through 3.5, that should at least get you most of the way there.
I'm working my way through Python Crash Course right now and recommend it. It starts from basics but doesn't treat the reader like an idiot. And the exercises are good for helping you to think through how to format your code. From there I'm planning to go through Automate the Boring Stuff with Python, and after I get a bit better at it, Fluent Python
Python Crash Course
Automate the Boring Stuff with Python
Fluent Python
OOP in python is a bit different than other languages because of how python doesn't necessarily advocate for private data members as in many statically typed languages like C++ and Java. Additionally, the keyword decorator
property
eliminates the need for getters and setters up front in class design.I have lots of python books but the two that helped me write pythonic classes were Effective Python (I actually only have the 1st edition) and Fluent python. The first book is probably a great crash course so if you get just one book get that one, but the latter book is good too and goes into much more detail without coming across like a dense reference text.
James Powell also has some great videos on pythonic programming, a lot of which involves OOP style.
A nice learn as you build web project is : https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
If Python is just a new language this is a really good book for hitting that next level: https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008
Here's a site worth reading most updates: https://www.planetpython.org/
And definitely subscribe to r/learnpython, it's a friendly place for all levels of Pythonistas.
In my personal opinion any python book list that doesn't include Fluent Python is pure garbage.
3.1. Dive into python 3 (excellent python book)
3.2. The Hitchhiker’s Guide to Python! (best practice handbook to the installation, configuration, and usage of Python on a daily basis.)
3.3 Python Language Reference ||| python standard library ||| python peps
5.1. David Beazley "Python cookbook" (read code snippets on python)
5.2. Dusty Phillips "Python 3 Object Oriented Programming" (learn OOP)
5.3. Luciano Ramalho "Fluent python" (Really advanced python book. But I haven't read it YET)
6.1. r/dailyprogrammer (easy, intermediate and advanced challenges) (an easy challenge example)
6.2. mega project list
From NAND to tetris ( build a general-purpose computer system from the ground up) (part1 and part2 on coursera)
If you are a CS major I'd go with the $15 package just so you can get the two books on security. In terms of helping your job prospects, I'd think about the following:
Assuming you already know how to program in a handful of languages, you might find the following useful:
Of course depending on what your interested in (e.g., mobile, web, systems, etc.) there are additional great resources but these will at least get you moving in the right direction. The biggest thing is just practice writing code as much as possible.
Sure!
Also, two other recommendations: either drill or build pet projects out of personal curiosity. Try to write code as often as you can. I block out time three times a week to write code for small pet projects. Coding drills aren't really my thing, but they help a lot of other people.
I'm freshening up on Python for work, and these are my materials:
Mastering Python Design Patterns https://www.amazon.com/dp/1783989327/ref=cm_sw_r_cp_awd_kiCKwbSP5AQ1M
Learning Python Design Patterns https://www.amazon.com/dp/1783283378/ref=cm_sw_r_cp_awd_BiCKwbGT2FA1Z
Fluent Python https://www.amazon.com/dp/1491946008/ref=cm_sw_r_cp_awd_WiCKwbQ2MK9N
Design Patterns: Elements of Reusable Object-Oriented Software https://www.amazon.com/dp/0201633612/ref=cm_sw_r_cp_awd_fjCKwb5JQA3KG
I recommend them to OP.
These two books were bigly for me:
Depending on what you want to learn:
PYTHON SPECIFIC
You mentioned building websites, so check out the flask mega tutorial. It might be a bit early to take on a project like this after only a month, but you've got time and learning-by-doing is good. This'll teach you to build a twitter clone using python, so you'll see databases, project structure, user logons etc. Plus he's got a book version, which contains much of the same info, but is good for when you can't be at a computer.
The python cookbook is fantastic for getting things done; gives short solutions to common problems / tasks. (How do I read lines from a csv file? How do I parse a file that's too big to fit in memory? How do I create a simple TCP server?). Solutions are concise and readable so you don't have to wade through loads of irrelevant stuff.
A little while down the road if you feel like going deep, fluent python will give you a deeper understanding of python than many people you'll encounter at Uni when you're out.
WEB DEV
If you want to go more into web dev, you'll also need to know some HTML, CSS and Javascript. Duckett's books don't go too in depth, but they're beautiful, a nice introduction, and a handy reference. Once you've got some JS, Secrets of the javascript ninja will give you a real appreciation of the deeper aspects of JS.
MACHINE LEARNING
In one of your comments you mentioned machine learning.
These aren't language specific programming books, and this isn't my specialty, but:
Fundamentals of Machine Learning for Predictive data analytics is a great introduction to the entire process, based upon CRISP-DM. Not much of a maths background required. This was the textbook used for my uni's first data analytics module. Highly recommended.
If you like you some maths, Flach will give you a stronger theoretical understanding, but personally I'd leave that until later.
Good luck and keep busy; you've got plenty to learn!
Websites are built with HTML, CSS, JavaScript, and that's it. You can have a back end (the bit that handles and serves up the data) written in any language, but every website you see is just HTML, CSS and JavaScript.
If you're underwhelmed by Python, I don't think you'll like JavaScript. It's like Python, only weird. But if you really want to get into web development, I'd recommend Eloquent JavaScript which is free online, but the paper book is a slightly older version until later this year hopefully. It's an excellent book on JavaScript, but a little too terse for total newbies. It's great for someone learning JavaScript as a second language. If it's too much for you, then the best choice for newer readers is The Modern JavaScript Tutorial.
But I suspect that you haven't taken Python as far as you think you have. It's a great language for beginners because it offers quick wins, and you can build cool little apps very quickly. But that belies its depth. You can build website back ends with the Flask framework for Python. Miguel Grinberg has written the gold standard of Flask learning in the Mega Tutorial, and has expanded it into a paper book in Flask Web Development on O'Reilly. Or, if you want to explore the nerdy depths of Python and know it inside out, get Fluent Python.
If you really weren't impressed with GCSE Python, the next level up is probably learning Java or C#, maybe even Go or Rust if you fancy something a little more cutting edge. I'm not an expert in these languages and I haven't read much on them, so I'll defer you to other answers.
Fluent Python. This book took my Python and coding in general to the next level.
I recommend Fluent Python
Whereas I don't think Fluent Python woudld give you the "nitty-gritty" parts of Python, I seems like it would be a great book for an experience Python developer looking to polish Python programming.
Disclaimer: I haven't read this book yet, but it is no kidding in the mail on the way to me. Like you, I'm looking to polish certain parts of my Python programming, and just become and all-around better Python developer.
This book. It contains recipes on how to write idiomatic python code.
Fellow NLP'er here! Some of my favorites so far:
How about https://learnxinyminutes.com/docs/python3/ ? It's a webpage which covers the basics at least. Might be smaller than you want but it's something you can start reading right now at least.
E: Learnxinyminutes has some book suggestions at the bottom which might interest you.
E2: You might be interested in Fluent Python. It goes into the nitty gritty parts of Python and shows (to my knowledge) idioms in Python. Book here
My friend who was getting into Python recently asked me about the same thing, I've made some research and this was what I came with. Just for the record, I'm personally a book dude - can't really focus much when learning from Udemy courses and stuff like that, so I will only cover books:
First book:
Python Crash Course by Eric Matthes
Very solid position for beginners. The first part of the book covers Python's basics - data types, lists, functions, classes, pretty much everything you need to get a good grasp of Python itself. The second part of the book includes three practical projects, mini-game, data visualization and an introduction to making web apps with Django. From what I so, it's a pretty unusual approach to beginner friendly books, since most of them avoid using additional libraries. On the other hand, it's harder to get bored with this book, it really makes you want to learn more and more once you can actually see the effects of all your work.
Automate the Boring Stuff with Python by Al Sweigart
Best alternative if you want to spend 0 bucks or want to dive all into projects. Even though it covers basics as well, I still recommend to read it, even if you have done Python Crash Course before, even just for the sake of all those projects you can make to practice your Python. He also has a Youtube channel where he has a loooot of Python content and sometimes does cool things like streaming and helping people make their code better, really cool guy, be sure to check his channel!
Second book:
Writing Idiomatic Python by Jeff Knupp
Very solid book, filled with examples what you, as a Python developer should do, and what you shouldn't (and why not). Sounds like not much, but it is actually a lot of useful knowledge that will make your code shorter, cleaner and better.
Effective Python by Brett Slatkin
A bit easier to understand and easier to approach than a previous book, but still has a load of knowledge to share.
Third book:
Fluent Python by Luciano Ramalho
One of the best Python books overall, covers all of the things that previous books could have missed or didn't have time to introduce. My personal favorite when it comes to books for advanced Python developers.
All of those recommendations are my personal opinion, so if anyone has anything to add, I will gladly listen to any comments!
First of all, applause for the great start.
Here are some criticisms/suggestions I would like to offer. Keep in mind, I am not assuming your level/experience as a software developer:
> I force myself to write raw SQL Request to get better with SQL
while that is commendable, it is not really a good idea to write raw sqls in production code if there are ORM library alternatives available. Remember, it's not always you that is going to read/modify the code. While ORM syntax will be fairly universal, your style of writing SQL may vary starkly from other people - which is what creates confusion and lets errors sneak in. Even if you want to do that, maybe keep the raw sql in separate modules (point 2).
Finally, remember that all these are just suggestions, and you may already know them. You will decide which ones to take and which ones to leave behind based on your situation.
Again, great job (I also learnt something from this). Just make sure you keep running.
Not a bible though, but one of the best books on Python I've read. A lot of real life examples https://www.amazon.com/Fluent-Python-Luciano-Ramalho/dp/1491946008
There has been many sources. I'll just copy and paste my comment above regarding some of the more helpful sources I've come across.
> I'd say Corey Schafer's YouTube channel has been a huge help with visualizing and understanding the basics.
> Fluent Python by Luciano Ramalho has had an impact on me as well. There's a lot of advanced topics in that book that's out of my level, which I try my best to understand, but there's also tons of good examples for beginners to pick up on.
> I've watched hours of CS lectures regarding python. This lecture by Raymond Hettinger helped me break out of some bad practices.
Fluent Python is the best for this purpose in my opinion:
https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008/ref=sr_1_1?ie=UTF8&qid=1526406807&sr=8-1&keywords=fluent+python
Start with idiomatic python. That's a very good, short book of important pythonic features. Also make sure to learn standart library. You can refer to docs for exact arguments, but you have to know all of functions and what they do. After you can read fluent python. It will show you how python works, python data model and I think overall it's the best python book. Then practice, read others code. When you use some library or whatever don't be afraid to dive into source code. Good luck and happy programming
Part of thinking logically is knowing what tools are available to you, so I'd recommend reading some books to gain an overhead view (data structures, standard libraries, design patterns, etc) of Python.  I put together a list that I'm working through @ this Gist.  Based on your question, I'd recommend reading Fluent Python to start, and then check out Problem Solving with Algorithms and Data Structures (along with any others that interest you).
 
In addition to
3burk
's math-based suggestions, Project Euler is another good option. 
Some interactive coding-challenge options:
This is the more beginner-friendly of the two. The questions are well-balanced for all skill levels, and they have well-explained official solutions.
This one is a bit more advanced, but definitely worth checking out once you're ready since the solutions are ranked by efficiency (in milliseconds & Big-O complexity) instead of arbitrary points.  You can learn a lot by figuring out your own solution, and then checking out more efficient solutions to learn what you could have done better. There's also a forum where you can discuss how/why certain methods are more efficient.
 
Also, check out this post I wrote in response to a similar question for a bunch more coding resources (challenges, books, projects, etc).
Python Cookbook 3rd ed., by David Beazley and Brian K. Jones, has a dedicated chapter about metaprogramming. The book is so good the other stuff may also give some insight on metaprogramming or alternatives. I already read it and it gave me insight on my code about metaprogramming and other topics, so it is pretty useful. You can also find a lecture from Beazley about the topic with a quick google search with his name and the "metaprogramming" word.
There's also Fluent Python by Luciano Ramalho, which has three dedicated chapters about metaprogramming. Didn't read the chapters myself but I'm half way into the book and it is awesome, so I'm having great expectations about those chapters.
Don't mind the metaprogramming "chapter count", it is just a piece of information. Quality is what you should be looking for. And I believe those books have it. Even though I admit an entire book about metaprogramming would be neat.
Been using python for 5 years, professionally for 1. I learn new stuff every day that makes my python code more pythonic, more readable, faster, and better designed.
Your first mistake is thinking that you know the "things that every python programmer should know." Everyone has different opinions of what you should know. For example, I work with million+ entry datasets. I need to know about generators, the multiprocessing library, and the fastest way to read a file if it's not stored in a database. A web dev might think that it's more important to know SQLAlchemy, the best way to write UI tests with selenium, and some sysadmin security stuff on the side.
If you're stuck with what to learn, I recommend Effective Python and Fluent Python, as well as some Raymond Hettinger talks. You'll want to go back through old code and make it more pythonic and efficient.
If you were serious about wanting some deep as-you-go knowledge of software development but from a Pythonic point of view, you cannot go wrong with following a setup such as this:
Mark Lutz writes books about how and why Python does what it does. He goes into amazing detail about the nuts and bolts all while teaching you how to leverage all of this. It is not light reading and most of the complaints you will find about his books are valid if what you are after is not an intimate understanding of the language.
Fluent Python is just a great read and will teach you some wonderful things. It is also a great follow-up once you have finally made it through Lutz's attempt at out-doing Ayn Rand :P
My recommendation is to find some mini projecting sites that focus on what you are reading about in the books above.
Of course this does not answer your question about generic books. But you are in /r/Python and I figured I would offer up a very rough but very rewarding learning approach if Python is something you enjoy working with.
Here are three more worth adding to your ever-increasing library :)
Effective Python and Fluent Python
As others have said, Automate the Boring Stuff is a good place to start.
Down the road if you really want to go deep into Python and want an advanced book, [Fluent Python] (https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008/) is fantastic.
Im probably going to get https://www.amazon.com/Python-Crash-Course-Hands-Project-Based/dp/1593279280?imprToken=tSJjOZOQ.95oqUr.e4GEzw&slotNum=0&SubscriptionId=AKIAJBKIFSMHEN2PCMZQ&tag=pythonbooks01-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=1593279280
Its 9 months since I last used Python last, I know some things still but want to refresh my memory as well, Ill spent a lot of time on this and when Ill get comfortable, ill upgrade to https://www.amazon.co.uk/Fluent-Python-Luciano-Ramalho/dp/1491946008
Try out python koans for the basics.
Once I got that out of the way, I grokked through Fluent Python.