Time flies! It feels like I’ve just started Python Friday. And yet this is already the 100th post for this series. Today I look back on the last 99 posts and create an easy-to-use reference that lets you jump right to the topic you are interested in.
Great Resources to learn Python
There are a lot of Python tutorials online, but only few of them are good and up to date. I still can recommend these resources to learn Python:
- #1: Let’s Learn Python (2020-01-03)
- #2: Resources to Learn Python (2020-01-10)
- #14: 5 Python Courses on Pluralsight You Should Not Miss (2020-04-03)
- #29: Humble Software Bundle for Python (2020-07-17)
- #52: 1 Year of Python Friday (2021-01-01)
The Python community
The community makes Python that great language we like so much. Here are a few ways to see what is going on:
- #28: Python Podcasts (2020-07-10)
- #72: PyCon US 2021 (2021-05-21)
Fundamentals of the Python language
If you want to learn about the fundamental parts of Python, read these posts:
- #11: The Zen of Python (2020-03-13)
- #3: Numbers, Booleans & None (2020-01-17)
- #4: Lists, Dictionaries, Sets & Tuples (2020-01-24)
- #5: Strings (2020-01-31)
- #6: Control Structures (2020-02-07)
- #7: Functions (2020-02-14)
- #8: Modules (2020-02-21)
- #9: Classes (Part 1) (2020-02-28)
- #10: Classes (Part 2) (2020-03-06)
- #12: Exceptions (2020-03-20)
- #16: Working With Files (2020-04-17)
- #18: Working With the File System (2020-05-01)
- #22: Lambda Functions (2020-05-29)
- #24: Multiple Return Values? (2020-06-12)
- #26: The dir() Function (2020-06-26)
- #30: List Comprehension (2020-07-24)
- #37: Decorators (2020-09-11)
- #48: Yield and Generators (2020-11-27)
- #61: Slow Down Your Python Code (2021-03-05)
- #66: Generate Random Numbers (2021-04-09)
- #67: Generate Random Data From a Sequence (2021-04-16)
- #94: Store Your Objects With Pickle (2021-10-22)
- #95: Working With JSON (2021-10-29)
- #99: Iterate in Reversed Order Through Your Lists (2021-11-26)
- #17: What is PEP? (2020-04-24)
Your Python environment
Python needs a runtime environment to fully leverage its potential:
- #19: Working with Packages in Python (2020-05-08)
- #20: Creating Virtual Environments (2020-05-15)
- #21: Manage Your Dependencies (2020-05-22)
- #55: Separate Development From Runtime Dependencies (2021-01-22)
- #70: Keep Your Python Version up to Date (2021-05-07)
IDE for Python
You do not need VS Code to write Python, but it is a big time-saver:
- #23: Visual Studio Code for Python (2020-06-05)
- #25: Helpful Resources for VS Code and Python (2020-06-19)
Creating web applications with Flask
If you want to build a web application in Python I can recommend the Flask framework:
- #32: First Steps With Flask (2020-08-07)
- #33: Activate Auto-Reload for Flask in VS Code (2020-08-14)
- #34: Jinja Templates (2020-08-21)
- #35: Shared Layouts in Jinja (2020-08-28)
- #36: Routing in Flask (2020-09-04)
- #38: Forms for Your Flask App (2020-09-18)
- #39: Form Validation for Your Flask App (2020-09-25)
- #40: Form Validation for Your Flask App With ViewModels (2020-10-02)
- #41: Structure Your Flask App (2020-10-09)
- #42: Using Blueprint to Clean-up Your View Functions File (2020-10-16)
- #43: Add Security Headers to Your Flask Application (2020-10-23)
Accessing your database with SQLAlchemy
The database framework SQLAlchemy offers an incredible flexibility to access your data:
- #92: Where to Start With SQLAlchemy (2021-10-08)
- #73: First Steps with SQLAlchemy (2021-05-28)
- #74: Important Concepts in SQLAlchemy (2021-06-04)
- #75: CRUD With Raw SQL in SQLAlchemy Core (2021-06-11)
- #76: CRUD With Metadata in SQLAlchemy Core (2021-06-18)
- #77: Filters in SQLAlchemy Core (2021-06-25)
- #78: Relationship Patterns in SQLAlchemy Core (2021-07-02)
- #79: JOINs in SQLAlchemy Core (2021-07-09)
- #80: Creating the Foundation for SQLAlchemy ORM (2021-07-16)
- #81: CRUD in SQLAlchemy ORM (2021-07-23)
- #82: Filters in SQLAlchemy ORM (2021-07-30)
- #83: Relationship Patterns in SQLAlchemy ORM (2021-08-06)
- #84: Working With Relational Data in SQLAlchemy ORM (2021-08-13)
- #85: Eager Loading vs Lazy Loading in SQLAlchemy ORM (2021-08-20)
- #86: Database Migrations With Alembic and SQLAlchemy (2021-08-27)
- #87: Handling Pre-Existing Tables With Alembic and SQLAlchemy (2021-09-03)
- #88: Activate Batch Mode in Alembic to Work With Constraints in SQLite (2021-09-10)
- #89: Constraints, Indexes and Default Values in SQLAlchemy ORM (2021-09-17)
- #90: SQL Server Connection Strings for SQLAlchemy (2021-09-24)
- #91: Automap for SQLAlchemy ORM (2021-10-01)
Testing your code with pytest
The more important your application gets, the more you should test it:
- #44: Start With Pytest (2020-10-30)
- #45: Show the Print() Output in the Test Summary (2020-11-06)
- #46: Testing Exceptions in Pytest (2020-11-13)
- #47: (Built-in) Fixtures in Pytest (2020-11-20)
- #49: Creating Your Own Fixtures for Pytest (2020-12-04)
- #50: Speed up Pytest With Markers (2020-12-11)
- #51: Parametrised Tests With Pytest (2020-12-18)
- #53: Code Coverage for Pytest (2021-01-08)
- #54: Create a Report for Your Test Results With Pytest (2021-01-15)
- #56: 3 Useful Command-Line Options for Pytest (2021-01-29)
- #60: Change the Look & Feel of Pytest With Pytest-Sugar (2021-02-26)
- #68: Use Doctest to Test Your Documentation (2021-04-23)
- #69: Dynamic Output and Doctest (2021-04-30)
Don’t forget your log messages
Testing is good, but useful log messages help you in case some bugs got into production unnoticed:
- #62: Logging in Python (2021-03-12)
- #63: Logging in Flask (2021-03-19)
- #64: Structured Log Messages for Seq (2021-03-26)
- #65: Log from Flask to Seq (2021-04-02)
Write Documentation
Your code stays far longer useful when you document it:
- #13: Add Comments to Your Code (2020-03-27)
- #15: Documenting Your Code (2020-04-10)
- #57: Introduction to MkDocs (2021-02-05)
- #58: Customise MkDocs (2021-02-12)
- #59: Source Code in MkDocs (2021-02-19)
Useful tools and libraries
Outside of the Python language are many great tools that you can integrate in your own applications:
- #27: Reading Exif Metadata From Images (2020-07-03)
- #31: HTTPie as a Curl Replacement (2020-07-31)
- #71: A Progress Bar for Your Python Script (2021-05-14)
- #96: Access Your Git Repository With PyDriller (2021-11-05)
- #93: Pretty Print for Python (2021-10-15)
- #97: Changing the Current Working Directory (2021-11-12)
- #98: Run Other Applications From Your Code (2021-11-19)
What’s next?
For the foreseeable future I will continue with Python Friday. I have a long list of topics I want to explore and write about. Nevertheless, when you have a topic that I should cover please leave a comment.
Great!!
topics:
ETL python and Sql server
Webscrapping with python
Python and Twitter