Basic Data Types in Python Real Python
Basic Data Types in Python Real Python
Table of Contents
Integers
Floating-Point Numbers
Complex Numbers
Strings
Escape Sequences in Strings
Raw Strings
Triple-Quoted Strings
Boolean Type, Boolean Context, and “Truthiness”
Built-In Functions
Math
Type Conversion
Iterables and Iterators
Composite Data Type
Classes, Attributes, and Inheritance
Input/Output
Variables, References, and Scope
Miscellaneous
Conclusion
Now you know how to interact with the Python interpreter and execute Python code. It’s time to dig into the Python
language. First up is a discussion of the basic data types that are built into Python.
https://realpython.com/python-data-types/ 1/15
6/28/2019 Basic Data Types in Python – Real Python
Take the Quiz: Test your knowledge with our interactive “Basic Data Types in Python” quiz. Upon
completion you will receive a score so you can track your learning progress over time:
Integers
Improve Your Python
In Python 3, there is e ectively no limit to how long an integer value can be. Of course, it is constrained by the amount
of memory your system has, as are all things, but beyond that an integer can be ...with
as longa as you🐍 Python Trick 💌
fresh need it to be:
code snippet every couple of days:
Python >>>
Python >>>
>>> print(10)
10
The following strings can be prepended to an integer value to indicate a base other than 10:
For example:
Python >>>
>>> print(0o10)
8
>>> print(0x10)
16
>>> print(0b10)
2
For more information on integer values with non-decimal bases, see the following Wikipedia sites: Binary, Octal, and
Hexadecimal.
The underlying type of a Python integer, irrespective of the base used to specify it, is called int:
Python >>>
>>> type(10)
<class 'int'>
>>> type(0o10)
<class 'int'>
>>> type(0x10)
Improve Your Python
<class 'int'>
https://realpython.com/python-data-types/ 2/15
6/28/2019 Basic Data Types in Python – Real Python
Note: This is a good time to mention that if you want to display a value while in a REPL session, you don’t need
to use the print() function. Just typing the value at the >>> prompt and hitting Enter ↩ will display it:
Python >>>
>>> 10
10
>>> 0x10
16
>>> 0b10
2
Improve Your Python
Many of the examples in this tutorial series will use this feature. ...with a fresh 🐍 Python Trick 💌
code snippet every couple of days:
Note that this does not work inside a script file. A value appearing on a line by itself in a script file will not do
anything. Email Address
The float type in Python designates a floating-point number. float values are specified with a decimal point.
Optionally, the character e or E followed by a positive or negative integer may be appended to specify scientific
notation:
Python >>>
>>> 4.2
4.2
>>> type(4.2)
<class 'float'>
>>> 4.
4.0
>>> .2
0.2
>>> .4e7
4000000.0
>>> type(.4e7)
<class 'float'>
>>> 4.2e-4
0.00042
Almost all platforms represent Python float values as 64-bit “double-precision” values, according to the IEEE
754 standard. In that case, the maximum value a floating-point number can have is approximately 1.8 ⨉ 10308.
Python will indicate a number greater than that by the string inf:
https://realpython.com/python-data-types/ 3/15
6/28/2019 Basic Data Types in Python – Real Python
>>> 1.79e308
1.79e+308
>>> 1.8e308
inf
The closest a nonzero number can be to zero is approximately 5.0 ⨉ 10-324. Anything closer to zero than that is
e ectively zero:
Python >>>
>>> 5e-324
5e-324
>>> 1e-325 Improve Your Python
0.0
...with a fresh 🐍 Python Trick 💌
code snippet every couple of days:
Floating point numbers are represented internally as binary (base-2) fractions. Most decimal fractions cannot
be represented exactly as binary fractions, so in most cases the internal representation of a floating-point
Email Address
number is an approximation of the actual value. In practice, the di erence between the actual value and the
represented value is very small and should not usually cause significant problems.
Send Python Tricks »
Further Reading: For additional information on floating-point representation in Python and the potential
pitfalls involved, see Floating Point Arithmetic: Issues and Limitations in the Python documentation.
Complex Numbers
Complex numbers are specified as <real part>+<imaginary part>j. For example:
Python >>>
>>> 2+3j
(2+3j)
>>> type(2+3j)
<class 'complex'>
Strings
Strings are sequences of character data. The string type in Python is called str.
String literals may be delimited using either single or double quotes. All the characters between the opening delimiter
and matching closing delimiter are part of the string:
Python >>>
A string in Python can contain as many characters as you wish. The only limit is your machine’s memory resources. A
string can also be empty:
https://realpython.com/python-data-types/ 4/15
6/28/2019 Basic Data Types in Python – Real Python
>>> ''
''
What if you want to include a quote character as part of the string itself? Your first impulse might be to try something
like this:
Python >>>
As you can see, that doesn’t work so well. The string in this example opens with a single quote, so Python assumes
Improve Your Python
the next single quote, the one in parentheses which was intended to be part of the string, is the closing delimiter. The
final single quote is then a stray and causes the syntax error shown. ...with a fresh 🐍 Python Trick 💌
code snippet every couple of days:
If you want to include either type of quote character within the string, the simplest way is to delimit the string with the
other type. If a string is to contain a single quote, delimit it with double quotes and vice versa:
Email Address
Python >>>
>>> print("This string contains a single quote (') character.") Send Python Tricks »
This string contains a single quote (') character.
You may want to suppress the special interpretation that certain characters are usually given within a string.
You may want to apply special interpretation to characters in a string which would normally be taken literally.
You can accomplish this using a backslash (\) character. A backslash character in a string indicates that one or more
characters that follow it should be treated specially. (This is referred to as an escape sequence, because the backslash
causes the subsequent character sequence to “escape” its usual meaning.)
Python >>>
Specifying a backslash in front of the quote character in a string “escapes” it and causes Python to suppress its usual
special meaning. It is then interpreted simply as a literal single quote character:
Python >>>
Python >>>
https://realpython.com/python-data-types/ 5/15
6/28/2019 Basic Data Types in Python – Real Python
The following is a table of escape sequences which cause Python to suppress the usual special interpretation of a
character in a string:
\' Terminates string with single quote opening delimiter Literal single quote (') character
\" Terminates string with double quote opening delimiter Literal double quote (") character
>>> print('a
To break up a string over more than one line, include a backslash before each newline, and the newlines will be
ignored:
Python >>>
>>> print('a\
... b\
... c')
abc
Python >>>
>>> print('foo\\bar')
foo\bar
Next, suppose you need to create a string that contains a tab character in it. Some text editors may allow you to insert
a tab character directly into your code. But many programmers consider that poor practice, for several reasons:
The computer can distinguish between a tab character and a sequence of space characters, but you can’t. To a
human reading the code, tab and space characters are visually indistinguishable.
Some text editors are configured to automatically eliminate tab characters by expanding them to the
appropriate number of spaces.
Some Python REPL environments will not insert tabs into code.
In Python (and almost all other common computer languages), a tab character can be specified by the escape
sequence \t:
Python >>>
>>> print('foo\tbar')
foo bar
The escape sequence \t causes the t character to lose its usual meaning, that of a literal t. Instead, the combination is
interpreted as a tab character. Improve Your Python
https://realpython.com/python-data-types/ 6/15
6/28/2019 Basic Data Types in Python – Real Python
Here is a list of escape sequences that cause Python to apply special meaning instead of interpreting literally:
Email Address
\t ASCII Horizontal Tab (TAB) character
\uxxxx Unicode character with 16-bit hex value xxxx Send Python Tricks »
Examples:
Python >>>
>>> print("a\tb")
a b
>>> print("a\141\x61")
aaa
>>> print("a\nb")
a
b
>>> print('\u2192 \N{rightwards arrow}')
→ →
This type of escape sequence is typically used to insert characters that are not readily generated from the keyboard or
are not easily readable or printable.
Raw Strings
A raw string literal is preceded by r or R, which specifies that escape sequences in the associated string are not
translated. The backslash character is le in the string:
Python >>>
>>> print('foo\nbar')
foo
bar
Improve Your Python
>>> print(r'foo\nbar')
https://realpython.com/python-data-types/ 7/15
6/28/2019 Basic Data Types in Python – Real Python
foo\nbar
>>> print('foo\\bar')
foo\bar
>>> print(R'foo\\bar')
foo\\bar
Triple-Quoted Strings
There is yet another way of delimiting strings in Python. Triple-quoted strings are delimited by matching groups of
three single quotes or three double quotes. Escape sequences still work in triple-quoted strings, but single quotes,
Improve Your Python
double quotes, and newlines can be included without escaping them. This provides a convenient way to create a
string with both single and double quotes in it:
...with a fresh 🐍 Python Trick 💌
Python code snippet every couple of days:>>>
>>> print('''This string has a single (') and a double (") quote.''')
This string has a single (') and a double (") quote. Email Address
Because newlines can be included without escaping them, this also allows for multiline strings:
Send Python Tricks »
Python >>>
>>> print("""This is a
string that spans
across several lines""")
This is a
string that spans
across several lines
You will see in the upcoming tutorial on Python Program Structure how triple-quoted strings can be used to add an
explanatory comment to Python code.
Python >>>
>>> type(True)
<class 'bool'>
>>> type(False)
<class 'bool'>
As you will see in upcoming tutorials, expressions in Python are o en evaluated in Boolean context, meaning they are
interpreted to represent truth or falsehood. A value that is true in Boolean context is sometimes said to be “truthy,”
and one that is false in Boolean context is said to be “falsy.” (You may also see “falsy” spelled “falsey.”)
The “truthiness” of an object of Boolean type is self-evident: Boolean objects that are equal to True are truthy (true),
and those equal to False are falsy (false). But non-Boolean objects can be evaluated in Boolean context as well and
determined to be true or false.
You will learn more about evaluation of objects in Boolean context when you encounter logical operators in the
upcoming tutorial on operators and expressions in Python.
Built-In Functions
The Python interpreter supports many functions that are built-in: sixty-eight, as of Python 3.6. You will cover many of
these in the following discussions, as they come up in context.
For now, a brief overview follows, just to give a feel for what is available. See the Python documentation on built-in
functions for more detail. Many of the following descriptions refer to topics and concepts that will be discussed in
future tutorials. Improve Your Python
https://realpython.com/python-data-types/ 8/15
6/28/2019 Basic Data Types in Python – Real Python
Math
Function Description
min() Returns the smallest of the given arguments or items in an iterable Improve Your Python
pow() Raises a number to a power ...with a fresh 🐍 Python Trick 💌
code snippet every couple of days:
round() Rounds a floating-point value
Email Address
sum() Sums the items of an iterable
Type Conversion
Function Description
Function Description
any() Returns True if any elements of an iterable are true
enumerate() Returns a list of tuples containing indices and values from an iterable
bytes() Creates and returns a bytes object (similar to bytearray, but immutable)
https://realpython.com/python-data-types/ 10/15
6/28/2019 Basic Data Types in Python – Real Python
super() Returns a proxy object that delegates method calls to a parent or sibling class
Improve Your Python
...with a fresh 🐍 Python Trick 💌
Input/Output code snippet every couple of days:
dir() Returns a list of names in current local scope or a list of object attributes
locals() Updates and returns a dictionary representing current local symbol table
Miscellaneous
Function Description
Function Description
staticmethod() Returns a static method for a function
Conclusion
In this tutorial, you learned about the built-in data types and functions Python provides.
The examples given so far have all manipulated and displayed only constant values. In most programs, you are
usually going to want to create objects that change in value as the program executes. Improve Your Python
Head to the next tutorial to learn about Python variables. ...with a fresh 🐍 Python Trick 💌
code snippet every couple of days:
Take the Quiz: Test your knowledge with our interactive “Basic Data Types in Python” quiz. Upon
Email
completion you will receive a score so you can track your learning progress over time:Address
🐍 Python Tricks 💌
Get a short & sweet Python Trick delivered to your inbox every couple of
days. No spam ever. Unsubscribe any time. Curated by the Real Python
team.
Email Address
John is an avid Pythonista and a member of the Real Python tutorial team.
Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who
worked on this tutorial are: Improve Your Python
https://realpython.com/python-data-types/ 12/15
6/28/2019 Basic Data Types in Python – Real Python
Email Address
What Do You Think?
Send Python Tricks »
Real Python Comment Policy: The most useful comments are those written with the goal of learning
from or helping out other readers—a er reading the whole article and all the earlier comments.
Complaints and insults generally won’t make the cut here.
LOG IN WITH
OR SIGN UP WITH DISQUS ?
Name
The \newline escape sequence was also new to me. Thank you for educating me in Python.
△ ▽ • Reply • Share ›
✉ Subscribe d Add Disqus to your siteAdd DisqusAdd 🔒 Disqus' Privacy PolicyPrivacy PolicyPrivacy
Keep Learning
🐍 Python Tricks 💌
Email…
Email Address
Table of Contents
Integers
Floating-Point Numbers
Complex Numbers
Strings
Boolean Type, Boolean Context, and “Truthiness”
Built-In Functions
Conclusion
https://realpython.com/python-data-types/ 15/15