When I heard about Duck Typing for the first time, I had to laugh.

But Python 🐍 has surprised me before, and this time was no exception.

This is another short thread 🧡 that will change the way you write code.

πŸ‘‡
Here is the idea behind Duck Typing:

▫️If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.

Taking this to Python's world, the functionality of an object is more important than its type. If the object quacks, then it's a duck.

πŸ‘‡
Duck Typing is possible in dynamic languages (Hello, JavaScript fans πŸ‘‹!)

Look at the attached example. Notice how "Playground" doesn't care about the specific type of the supplied item. Instead, it assumes that the item supports the bounce() method.

πŸ‘‡
To make our Playground example work, we don't need to abuse from inheritance or implement interfaces.

Duck Typing makes it possible to use whatever we need to get the work done, and we don't have to worry about a complex hierarchy of types.

Let's see other examples.

πŸ‘‡
I'm sure you are familiar with len(), the function that determines how many elements are in a list.

Thanks to Duck Typing, this function will work with any class that implements a __len__() method, regardless of its type.

πŸ‘‡
The attached example uses __iter__() and __next__() to prepare our Computer class with everything it needs to work with the standard for-loop construct.

Again, no need to implement specific types. If it quacks, it's a duck.

πŸ‘‡
One thing to notice:

Duck Typing is closely related to the "It's Easier to Ask for Forgiveness than Permission" (EAFP) principle.

In case you are curious, I wrote about EAFP just yesterday:



πŸ‘‡
What does this matter?

Dynamic-type advocates like myself love Duck Typing because it makes the code cleaner, explicit, and fosters reusability and flexibility without cluttering it with abstractions.

Static-type lovers have a different opinion.

But this is Python 🐍

πŸ€·β€β™‚οΈ

β€’ β€’ β€’

Missing some Tweet in this thread? You can try to force a refresh
γ€€

Keep Current with Santiago πŸŽƒ

Santiago πŸŽƒ Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @svpino

13 Oct
Transfer Learning.

It sounds fancy because it is.

This is a thread about one of the most powerful tools that make possible that knuckleheads like me achieve state-of-the-art Deep Learning results on our laptops.

πŸ§΅πŸ‘‡ Image
Deep Learning is all about "Deep" Neural Networks.

"Deep" means a lot of complexity. You can translate this to "We Need Very Complex Neural Networks." See the attached example.

The more complex a network is, the slower it is to train, and the more data we need to train it.

πŸ‘‡ Image
To get state-of-the-art results when classifying images, we can use a network like ResNet50, for example.

It takes around 14 days to train this network with the "imagenet" dataset (1,300,000+ images.)

14 days!

That's assuming that you have a decent (very expensive) GPU.

πŸ‘‡
Read 10 tweets
11 Oct
This is ridiculous.

I've been coding in Python 🐍 since 2014. Somehow I've always resisted embracing one of their most important principles.

This is a short thread 🧡about idiomatic Python.

πŸ‘‡
Python is all about readability.

One of its core principles is around writing explicit code.

Explicitness is about making your intentions clear.

Take a look at the attached code. It's one of those classic examples showing bad versus good.

See the difference?

πŸ‘‡
There are more subtle ways in which Python encourages explicitness.

This example shows a function that checks whether two keys exist in a dictionary and adds them up if they do.

If one of the keys doesn't exist, the function returns None.

Nothing wrong here, right?

πŸ‘‡
Read 9 tweets
10 Oct
I had a breakthrough that turned a Deep Learning problem on its head!

Here is the story.
Here is the lesson I learned.

πŸ§΅πŸ‘‡
No, I did not cure cancer.

This story is about a classification problem β€”specifically, computer vision.

I get images, and I need to determine the objects represented by them.

I have a ton of training data. I'm doing Deep Learning.

Life is good so far.

πŸ‘‡
I'm using transfer learning.

In this context, transfer learning consists of taking a model that was trained to identify other types of objects and leverage everything that it learned to make my problem easier.

This way I don't have to teach a model from scratch!

πŸ‘‡
Read 11 tweets
8 Oct
Here is a formula for growth.

(Not the only one, but one that works.)

People follow you when they are afraid of missing out on what you have to say.

People get afraid of missing out when they meet you and have a chance to realize that they want more of you.

πŸ§΅πŸ‘‡ Image
Then, we can conclude that there are two steps:

1. You need to get in front of people by posting "shareable" content.

2. Once people meet you, you need to hook them so they follow you instead of moving on.

πŸ‘‡
In Twitter, shareable content means content that people want to engage with:

▫️They like it
▫️They leave a comment
▫️They retweet it

There are multiple ways to create shareable content that spreads quickly.

πŸ‘‡
Read 10 tweets
8 Oct
A real-life Machine Learning solution that works.

Here is a breakdown of every piece and how they work together.

πŸ§΅πŸ‘‡
There's a website.

Users upload a group of pictures of an item and select the category it belongs to.

The system returns how much money the item is worth.

πŸ‘‡
Before:

▫️A group of people reviewed the pictures submitted by the user and decided how much the item was worth.

Today:

▫️The system quotes some of the items automatically (some still have to go through humans for a quote.)

πŸ‘‡
Read 11 tweets
7 Oct
Want to hear a secret?

Regardless of your experience, here is an area of Machine Learning where you can have a huge impact:

▫️ Feature Engineering ▫️

It sounds fancy because people love to complicate things, but let's make it simple: πŸ§΅πŸ‘‡
In Machine Learning we deal with a lot of data.

Let's assume we are working with the information of the passengers of the Titanic.

Look at the picture here. That's what our data looks like.

The goal is to create a model that determines whether a passenger survived.

πŸ‘‡
Each one of the columns of our dataset is a "feature."

A Machine Learning algorithm will use these "features" to produce results.

"Feature engineering" is the process that decides which of these features are useful, comes up with new features, or changes the existing ones.

πŸ‘‡
Read 14 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!