Do you know what the Python 🐍 `type` is?

But do you _really_ know what it is?

Here is a valuable thread that will give you insights into what `type` is and does.

Let's go πŸ‘‡πŸ§΅
What does `type` do?

You might say that `type` takes an object and returns the type of the argument.

Here are some examples:
Fine, so `type` is a function!

Or is it..?

Take a look at the example above.

`sum` is a built-in function and `type(sum)` returned β€œbuilt-in function or method”.

So, logically, if `type` is a (built-in) function, the type of `type` should give the same thing:
But it said that the type of `type` is... `type`? 🀯

How's that?

What does that even mean?

Well, let's take a step back and look at `str` and `int`:
Interesting!

So `int` and `str` are built-in functions that convert things to integers and strings, respectively.

Right?

Well, let's check their type!

As it turns out, the type of `int` and `str` are also... `type`!
Ok, so these things seem to be connected!

Let's take one more step back.

Let's look at what the type of `3` is and to what `int` is:
Hey, `type(3)` and `int` look like the same thing!

Heck, they _are_ the same thing:
So `type(3)` and `int` are the same thing!

That's interesting!

So, `int` is not a function, and it builds integers, so `int` is like an integer factory!

That's why `int` shows like β€œclass int”, because it is a class.

This applies to `int`, `str`, `list`, `tuple`, `dict`, ...
So, all these objects are the objects that represent the classes.

All these objects are factories of a specific kind.

`str` is a string factory.

`dict` is a dictionary factory.

Your own custom classes, are also factories:
But that brings us close to the end!

There's a bunch of objects, that we use regularly, that are just factories.

Fine, fine.

So, if all these objects are factories, maybe that's their type!

Their type could be β€œfactory”!
If something has the type β€œtype”, it means it's a factory.

Ok, so checking the type of `type` again shows that the type of `type` is... `type`.

So `type` is also a factory!

So what does `type` produce?

Let's see:
So `type` is producing other factories...

Meaning `type` is a factory of factories! 🀯🀯🀯

I mean, you can even create new classes dynamically with `type`! (Not that you generally should...)

Here's the `Person` class from before:
And that's it, for now!

Recap:

πŸ‘‰Β `int`, `str`, `list`, ..., are NOT functions, but classes. Akin to the ones you create with the `class` keyword.

πŸ‘‰ These are like β€œfactories” of objects.

πŸ‘‰ `type` accepts objects and returns classes, so `type` is a factory of factories!
I hope you found value in this tweet!

If you did, follow me (@mathsppblog) for more content like this!

There's plenty of amazing Python 🐍 content in store!

Also, consider retweeting the first tweet of this thread if you learnt something new 😊

β€’ β€’ β€’

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

Keep Current with Rodrigo πŸπŸ“

Rodrigo πŸπŸ“ 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 @mathsppblog

25 Sep
What's the BEST way to learn Python 🐍?

I've been writing Python for 10 years and taught 100s of people.

Here is a FAQ with actionable advice πŸ‘‡πŸ§΅

But everyone is different, so share your thoughts as well πŸ‘‡πŸ’¬ to help as many as possible! Image
🐍 β€œHow do I start learning Python?”

Well, I think the answer to this question greatly depends on whether you have (considerable) programming experience with another language or not.

That's because β€œlearning Python” can mean ”learn the syntax of the language”, but...
... it can also mean ”learn how to think like a programmer”.

And, in my opinion, this is something very fundamental that you have to understand!

Being a programmer is also about having that programmer mindset.

Worry not, you can learn it 😊
Read 35 tweets
24 Sep
Do you want to master Python 🐍 list comprehensions?

Do you want to become more proficient working with lists in Python 🐍?

If you answered with β€œyes”, then here's a cheatsheet of mine to help you out.

This is also a thread πŸ‘‡πŸ§΅ that breaks it down and explains everything: Image
First off, here is the anatomy of a list comprehension.

There's 4 parts to a list comp:
1. enclosing brackets to create the list [];
2. expression that transforms your data;
3. `for` iteration over the initial data;
4. (optional!) condition to filter some data. Image
Do list comprehensions look confusing?

Maybe.

But that's because you didn't realise that list comprehensions have equivalent `for` loops!

The coloured boxes below show the equivalent bits in the list comp and in the `for` loop: Image
Read 19 tweets
20 Sep
Are you a master of Python 🐍 sequence slicing?

Here is a short thread 🧡 covering four idiomatic slicing patterns that you could get used to.

These four patterns are great because they have a clear interpretation of what they do.

Here we go πŸ‘‡πŸ§΅
🐍 s[n:]

If `n β‰₯ 0`, then `s[n:]` means

πŸ‘‰ β€œSkip the first `n` elements.”

⚠ If `n` is 0, then we skip 0 elements, which is another way of saying we get all of them.
That's the same as `s[:]`.
🐍 s[-n:]

If `n > 0`, then `s[-n:]` means

πŸ‘‰ β€œThe last `n` elements.”

⚠ -0 and 0 are the same, so `s[-0:]` gets all the sequence, like above.
Read 10 tweets
18 Sep
Are you as curious (and nerdy πŸ€“) as I am? πŸ€”

If you are, you are going to love what I'm about to show you 🀯

Let's build a Python 🐍 quine: a program that prints itself!

This thread walks you through the process of building the quine you can see here.

πŸ‘‡πŸ§΅
If we want a program that _prints_ itself, we need to start with a print statement:

```
print()
```

When we run this program, a single newline gets printed as output.

But we want a program that prints itself, right?

So let's try putting the program in the `print`.
For that, we try opening " inside the `print` and we start typing the program, itself, inside the string:

```
print("print()")
```

This outputs

```
print()
```

But now our program grew, so we need to keep up with it inside the string.
Read 11 tweets
17 Sep
πŸ€” Do you ever write some Python 🐍, look at it, and get the feeling there MUST be a better ✨ way to do that..?

I get that ALL the time! πŸ˜…

That's why I started researching and writing articles to help me (and you!) write better code.

Here's all 28 of them (so far!) πŸ‘‡πŸ§΅
I have also been compiling all the articles into an eBook πŸ“–, that I am "selling" for free πŸ’Έ.

Why?

I decided to make it free because that's how I learned Python: from free books and articles, available online.

Here's the link to the free book:

gum.co/pydonts
01 - Pydon't disrespect the Zen of Python

If you type `import this` in a Python REPL, you will be presented with the Zen of Python, a document with some guidelines that you can follow when writing code.

It's not a religion!

Just some guidelines :)

mathspp.com/blog/pydonts/p…
Read 32 tweets
9 Sep
Have you ever had a hard time debugging 🐞 a Python 🐍 script?

If you say you haven't, you're lying! πŸ˜†

Let me show you something that you're gonna love me for!

Run your script with the `-i` flag!

By doing so, you get a REPL when the script finishes, EVEN with errors πŸ’£

1/4
Let me show you an example.

Below is a piece of code I wrote in a script called `foo`.

If you look closely, you'll see I'm generating 100 random integers...

All of them between 0 and... 0! So I'll generate 100 zeroes (my bug).

Later, a 0/0 division will throw an error.

2/4
When I run the code with the `-i` flag, the terminal shows the error and immediately opens a REPL!

From within the REPL I can inspect my variables and figure out what went wrong!

Isn't this amazing ⁉

3/4
Read 5 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!

:(