-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathconditionals.html
More file actions
199 lines (155 loc) · 61 KB
/
conditionals.html
File metadata and controls
199 lines (155 loc) · 61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Python - Conditionals</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="description" content="Conditional Expression (or The Ternary Operator), if, elif, and else, Truth Values, Boolean Logic Expressions, Else statement, Using the cmp function to get the comparison result of two objects, If statement, Testing if an object is None and assigning it, Conditional Expression Evaluation Using List Comprehensions">
<meta property="og:site_name" content="DevTut">
<meta property="og:title" content="Python - Conditionals">
<meta property="og:description" content="Conditional Expression (or The Ternary Operator), if, elif, and else, Truth Values, Boolean Logic Expressions, Else statement, Using the cmp function to get the comparison result of two objects, If statement, Testing if an object is None and assigning it, Conditional Expression Evaluation Using List Comprehensions">
<meta property="og:type" content="article">
<meta property="og:url" content="/python/conditionals.html">
<meta property="og:image" content="/logo.png">
<meta name="twitter:title" content="Python - Conditionals">
<meta name="twitter:description" content="Conditional Expression (or The Ternary Operator), if, elif, and else, Truth Values, Boolean Logic Expressions, Else statement, Using the cmp function to get the comparison result of two objects, If statement, Testing if an object is None and assigning it, Conditional Expression Evaluation Using List Comprehensions">
<meta name="twitter:url" content="/python/conditionals.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="/logo.png">
<meta name="theme-color" content="#ffffff">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="msapplication-TileImage" content="/mstile-150x150.png">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="google-site-verification" content="76_rKXgwMVIjd-axJC_1zPV9OS4mEjvtgjYOWVkAdnQ">
<link rel="preload" href="/assets/css/0.styles.60619e34.css" as="style"><link rel="preload" href="/assets/js/app.1779e102.js" as="script"><link rel="preload" href="/assets/js/3.2cfa8016.js" as="script"><link rel="preload" href="/assets/js/2673.a418632c.js" as="script">
<link rel="stylesheet" href="/assets/css/0.styles.60619e34.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">DevTut</span></a> <div class="links"><form id="search-form" role="search" class="algolia-search-wrapper search-box"><input id="algolia-search-input" class="search-query"></form> <nav class="nav-links can-hide"> <a href="https://github.com/devtut/generate" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"> <a href="https://github.com/devtut/generate" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>Python</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/python/" aria-current="page" class="sidebar-link">Disclaimer</a></li><li><a href="/python/getting-started-with-python-language.html" class="sidebar-link">Getting started with Python Language</a></li><li><a href="/python/python-data-types.html" class="sidebar-link">Python Data Types</a></li><li><a href="/python/indentation.html" class="sidebar-link">Indentation</a></li><li><a href="/python/comments-and-documentation.html" class="sidebar-link">Comments and Documentation</a></li><li><a href="/python/date-and-time.html" class="sidebar-link">Date and Time</a></li><li><a href="/python/enum.html" class="sidebar-link">Enum</a></li><li><a href="/python/set.html" class="sidebar-link">Set</a></li><li><a href="/python/simple-mathematical-operators.html" class="sidebar-link">Simple Mathematical Operators</a></li><li><a href="/python/bitwise-operators.html" class="sidebar-link">Bitwise Operators</a></li><li><a href="/python/boolean-operators.html" class="sidebar-link">Boolean Operators</a></li><li><a href="/python/operator-precedence.html" class="sidebar-link">Operator Precedence</a></li><li><a href="/python/variable-scope-and-binding.html" class="sidebar-link">Variable Scope and Binding</a></li><li><a href="/python/conditionals.html" aria-current="page" class="active sidebar-link">Conditionals</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/python/conditionals.html#conditional-expression-or-the-ternary-operator" class="sidebar-link">Conditional Expression (or "The Ternary Operator")</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#if-elif-and-else" class="sidebar-link">if, elif, and else</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#truth-values" class="sidebar-link">Truth Values</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#boolean-logic-expressions" class="sidebar-link">Boolean Logic Expressions</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#else-statement" class="sidebar-link">Else statement</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#using-the-cmp-function-to-get-the-comparison-result-of-two-objects" class="sidebar-link">Using the cmp function to get the comparison result of two objects</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#if-statement" class="sidebar-link">If statement</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#testing-if-an-object-is-none-and-assigning-it" class="sidebar-link">Testing if an object is None and assigning it</a></li><li class="sidebar-sub-header"><a href="/python/conditionals.html#conditional-expression-evaluation-using-list-comprehensions" class="sidebar-link">Conditional Expression Evaluation Using List Comprehensions</a></li></ul></li><li><a href="/python/comparisons.html" class="sidebar-link">Comparisons</a></li><li><a href="/python/loops.html" class="sidebar-link">Loops</a></li><li><a href="/python/arrays.html" class="sidebar-link">Arrays</a></li><li><a href="/python/multidimensional-arrays.html" class="sidebar-link">Multidimensional arrays</a></li><li><a href="/python/dictionary.html" class="sidebar-link">Dictionary</a></li><li><a href="/python/list.html" class="sidebar-link">List</a></li><li><a href="/python/list-comprehensions.html" class="sidebar-link">List Comprehensions</a></li><li><a href="/python/list-slicing-selecting-parts-of-lists.html" class="sidebar-link">List slicing (selecting parts of lists)</a></li><li><a href="/python/groupby.html" class="sidebar-link">groupby()</a></li><li><a href="/python/linked-lists.html" class="sidebar-link">Linked lists</a></li><li><a href="/python/linked-list-node.html" class="sidebar-link">Linked List Node</a></li><li><a href="/python/filter.html" class="sidebar-link">Filter</a></li><li><a href="/python/heapq.html" class="sidebar-link">Heapq</a></li><li><a href="/python/tuple.html" class="sidebar-link">Tuple</a></li><li><a href="/python/basic-input-and-output.html" class="sidebar-link">Basic Input and Output</a></li><li><a href="/python/files-folders-i-o.html" class="sidebar-link">Files & Folders I/O</a></li><li><a href="/python/os-path.html" class="sidebar-link">os.path</a></li><li><a href="/python/iterables-and-iterators.html" class="sidebar-link">Iterables and Iterators</a></li><li><a href="/python/functions.html" class="sidebar-link">Functions</a></li><li><a href="/python/defining-functions-with-list-arguments.html" class="sidebar-link">Defining functions with list arguments</a></li><li><a href="/python/functional-programming-in-python.html" class="sidebar-link">Functional Programming in Python</a></li><li><a href="/python/partial-functions.html" class="sidebar-link">Partial functions</a></li><li><a href="/python/decorators.html" class="sidebar-link">Decorators</a></li><li><a href="/python/classes.html" class="sidebar-link">Classes</a></li><li><a href="/python/metaclasses.html" class="sidebar-link">Metaclasses</a></li><li><a href="/python/string-formatting.html" class="sidebar-link">String Formatting</a></li><li><a href="/python/string-methods.html" class="sidebar-link">String Methods</a></li><li><a href="/python/using-loops-within-functions.html" class="sidebar-link">Using loops within functions</a></li><li><a href="/python/importing-modules.html" class="sidebar-link">Importing modules</a></li><li><a href="/python/difference-between-module-and-package.html" class="sidebar-link">Difference between Module and Package</a></li><li><a href="/python/math-module.html" class="sidebar-link">Math Module</a></li><li><a href="/python/complex-math.html" class="sidebar-link">Complex math</a></li><li><a href="/python/collections-module.html" class="sidebar-link">Collections module</a></li><li><a href="/python/operator-module.html" class="sidebar-link">Operator module</a></li><li><a href="/python/json-module.html" class="sidebar-link">JSON Module</a></li><li><a href="/python/sqlite3-module.html" class="sidebar-link">Sqlite3 Module</a></li><li><a href="/python/the-os-module.html" class="sidebar-link">The os Module</a></li><li><a href="/python/the-locale-module.html" class="sidebar-link">The locale Module</a></li><li><a href="/python/itertools-module.html" class="sidebar-link">Itertools Module</a></li><li><a href="/python/asyncio-module.html" class="sidebar-link">Asyncio Module</a></li><li><a href="/python/random-module.html" class="sidebar-link">Random module</a></li><li><a href="/python/functools-module.html" class="sidebar-link">Functools Module</a></li><li><a href="/python/the-dis-module.html" class="sidebar-link">The dis module</a></li><li><a href="/python/the-base64-module.html" class="sidebar-link">The base64 Module</a></li><li><a href="/python/queue-module.html" class="sidebar-link">Queue Module</a></li><li><a href="/python/deque-module.html" class="sidebar-link">Deque Module</a></li><li><a href="/python/webbrowser-module.html" class="sidebar-link">Webbrowser Module</a></li><li><a href="/python/tkinter.html" class="sidebar-link">tkinter</a></li><li><a href="/python/pyautogui-module.html" class="sidebar-link">pyautogui module</a></li><li><a href="/python/indexing-and-slicing.html" class="sidebar-link">Indexing and Slicing</a></li><li><a href="/python/plotting-with-matplotlib.html" class="sidebar-link">Plotting with Matplotlib</a></li><li><a href="/python/graph-tool.html" class="sidebar-link">graph-tool</a></li><li><a href="/python/generators.html" class="sidebar-link">Generators</a></li><li><a href="/python/reduce.html" class="sidebar-link">Reduce</a></li><li><a href="/python/map-function.html" class="sidebar-link">Map Function</a></li><li><a href="/python/exponentiation.html" class="sidebar-link">Exponentiation</a></li><li><a href="/python/searching.html" class="sidebar-link">Searching</a></li><li><a href="/python/sorting-minimum-and-maximum.html" class="sidebar-link">Sorting, Minimum and Maximum</a></li><li><a href="/python/counting.html" class="sidebar-link">Counting</a></li><li><a href="/python/the-print-function.html" class="sidebar-link">The Print Function</a></li><li><a href="/python/regular-expressions-regex.html" class="sidebar-link">Regular Expressions (Regex)</a></li><li><a href="/python/copying-data.html" class="sidebar-link">Copying data</a></li><li><a href="/python/context-managers-with-statement.html" class="sidebar-link">Context Managers (“with” Statement)</a></li><li><a href="/python/the-name-special-variable.html" class="sidebar-link">The _name_ special variable</a></li><li><a href="/python/checking-path-existence-and-permissions.html" class="sidebar-link">Checking Path Existence and Permissions</a></li><li><a href="/python/creating-python-packages.html" class="sidebar-link">Creating Python packages</a></li><li><a href="/python/usage-of-pip-module-pypi-package-manager.html" class="sidebar-link">Usage of "pip" module: PyPI Package Manager</a></li><li><a href="/python/pip-pypi-package-manager.html" class="sidebar-link">pip: PyPI Package Manager</a></li><li><a href="/python/parsing-command-line-arguments.html" class="sidebar-link">Parsing Command Line arguments</a></li><li><a href="/python/subprocess-library.html" class="sidebar-link">Subprocess Library</a></li><li><a href="/python/setup-py.html" class="sidebar-link">setup.py</a></li><li><a href="/python/recursion.html" class="sidebar-link">Recursion</a></li><li><a href="/python/type-hints.html" class="sidebar-link">Type Hints</a></li><li><a href="/python/exceptions.html" class="sidebar-link">Exceptions</a></li><li><a href="/python/raise-custom-errors-exceptions.html" class="sidebar-link">Raise Custom Errors / Exceptions</a></li><li><a href="/python/commonwealth-exceptions.html" class="sidebar-link">Commonwealth Exceptions</a></li><li><a href="/python/urllib.html" class="sidebar-link">urllib</a></li><li><a href="/python/web-scraping-with-python.html" class="sidebar-link">Web scraping with Python</a></li><li><a href="/python/html-parsing.html" class="sidebar-link">HTML Parsing</a></li><li><a href="/python/manipulating-xml.html" class="sidebar-link">Manipulating XML</a></li><li><a href="/python/python-requests-post.html" class="sidebar-link">Python Requests Post</a></li><li><a href="/python/distribution.html" class="sidebar-link">Distribution</a></li><li><a href="/python/property-objects.html" class="sidebar-link">Property Objects</a></li><li><a href="/python/overloading.html" class="sidebar-link">Overloading</a></li><li><a href="/python/polymorphism.html" class="sidebar-link">Polymorphism</a></li><li><a href="/python/method-overriding.html" class="sidebar-link">Method Overriding</a></li><li><a href="/python/user-defined-methods.html" class="sidebar-link">User-Defined Methods</a></li><li><a href="/python/string-representations-of-class-instances-str-and-repr-methods.html" class="sidebar-link">String representations of class instances: _str and repr_ methods</a></li><li><a href="/python/debugging.html" class="sidebar-link">Debugging</a></li><li><a href="/python/reading-and-writing-csv.html" class="sidebar-link">Reading and Writing CSV</a></li><li><a href="/python/writing-to-csv-from-string-or-list.html" class="sidebar-link">Writing to CSV from String or List</a></li><li><a href="/python/dynamic-code-execution-with-exec-and-eval.html" class="sidebar-link">Dynamic code execution with exec and eval</a></li><li><a href="/python/pyinstaller-distributing-python-code.html" class="sidebar-link">PyInstaller - Distributing Python Code</a></li><li><a href="/python/data-visualization-with-python.html" class="sidebar-link">Data Visualization with Python</a></li><li><a href="/python/the-interpreter-command-line-console.html" class="sidebar-link">The Interpreter (Command Line Console)</a></li><li><a href="/python/args-and-kwargs.html" class="sidebar-link">args and *kwargs</a></li><li><a href="/python/garbage-collection.html" class="sidebar-link">Garbage Collection</a></li><li><a href="/python/pickle-data-serialisation.html" class="sidebar-link">Pickle data serialisation</a></li><li><a href="/python/binary-data.html" class="sidebar-link">Binary Data</a></li><li><a href="/python/idioms.html" class="sidebar-link">Idioms</a></li><li><a href="/python/data-serialization.html" class="sidebar-link">Data Serialization</a></li><li><a href="/python/multiprocessing.html" class="sidebar-link">Multiprocessing</a></li><li><a href="/python/multithreading.html" class="sidebar-link">Multithreading</a></li><li><a href="/python/processes-and-threads.html" class="sidebar-link">Processes and Threads</a></li><li><a href="/python/python-concurrency.html" class="sidebar-link">Python concurrency</a></li><li><a href="/python/parallel-computation.html" class="sidebar-link">Parallel computation</a></li><li><a href="/python/sockets.html" class="sidebar-link">Sockets</a></li><li><a href="/python/websockets.html" class="sidebar-link">Websockets</a></li><li><a href="/python/sockets-and-message-encryption-decryption-between-client-and-server.html" class="sidebar-link">Sockets And Message Encryption/Decryption Between Client and Server</a></li><li><a href="/python/python-networking.html" class="sidebar-link">Python Networking</a></li><li><a href="/python/python-http-server.html" class="sidebar-link">Python HTTP Server</a></li><li><a href="/python/flask.html" class="sidebar-link">Flask</a></li><li><a href="/python/introduction-to-rabbitmq-using-amqpstorm.html" class="sidebar-link">Introduction to RabbitMQ using AMQPStorm</a></li><li><a href="/python/descriptor.html" class="sidebar-link">Descriptor</a></li><li><a href="/python/tempfile-namedtemporaryfile.html" class="sidebar-link">tempfile NamedTemporaryFile</a></li><li><a href="/python/input-subset-and-output-external-data-files-using-pandas.html" class="sidebar-link">Input, Subset and Output External Data Files using Pandas</a></li><li><a href="/python/unzipping-files.html" class="sidebar-link">Unzipping Files</a></li><li><a href="/python/working-with-zip-archives.html" class="sidebar-link">Working with ZIP archives</a></li><li><a href="/python/getting-start-with-gzip.html" class="sidebar-link">getting start with GZip</a></li><li><a href="/python/stack.html" class="sidebar-link">Stack</a></li><li><a href="/python/working-around-the-global-interpreter-lock-gil.html" class="sidebar-link">Working around the Global Interpreter Lock (GIL)</a></li><li><a href="/python/deployment.html" class="sidebar-link">Deployment</a></li><li><a href="/python/logging.html" class="sidebar-link">Logging</a></li><li><a href="/python/web-server-gateway-interface-wsgi.html" class="sidebar-link">Web Server Gateway Interface (WSGI)</a></li><li><a href="/python/python-server-sent-events.html" class="sidebar-link">Python Server Sent Events</a></li><li><a href="/python/alternatives-to-switch-statement-from-other-languages.html" class="sidebar-link">Alternatives to switch statement from other languages</a></li><li><a href="/python/list-destructuring-aka-packing-and-unpacking.html" class="sidebar-link">List destructuring (aka packing and unpacking)</a></li><li><a href="/python/accessing-python-source-code-and-bytecode.html" class="sidebar-link">Accessing Python source code and bytecode</a></li><li><a href="/python/mixins.html" class="sidebar-link">Mixins</a></li><li><a href="/python/attribute-access.html" class="sidebar-link">Attribute Access</a></li><li><a href="/python/arcpy.html" class="sidebar-link">ArcPy</a></li><li><a href="/python/abstract-base-classes-abc.html" class="sidebar-link">Abstract Base Classes (abc)</a></li><li><a href="/python/plugin-and-extension-classes.html" class="sidebar-link">Plugin and Extension Classes</a></li><li><a href="/python/immutable-datatypes-int-float-str-tuple-and-frozensets.html" class="sidebar-link">Immutable datatypes(int, float, str, tuple and frozensets)</a></li><li><a href="/python/incompatibilities-moving-from-python-2-to-python-3.html" class="sidebar-link">Incompatibilities moving from Python 2 to Python 3</a></li><li><a href="/python/2to3-tool.html" class="sidebar-link">2to3 tool</a></li><li><a href="/python/non-official-python-implementations.html" class="sidebar-link">Non-official Python implementations</a></li><li><a href="/python/abstract-syntax-tree.html" class="sidebar-link">Abstract syntax tree</a></li><li><a href="/python/unicode-and-bytes.html" class="sidebar-link">Unicode and bytes</a></li><li><a href="/python/python-serial-communication-pyserial.html" class="sidebar-link">Python Serial Communication (pyserial)</a></li><li><a href="/python/neo4j-and-cypher-using-py2neo.html" class="sidebar-link">Neo4j and Cypher using Py2Neo</a></li><li><a href="/python/basic-curses-with-python.html" class="sidebar-link">Basic Curses with Python</a></li><li><a href="/python/templates-in-python.html" class="sidebar-link">Templates in python</a></li><li><a href="/python/pillow.html" class="sidebar-link">Pillow</a></li><li><a href="/python/the-pass-statement.html" class="sidebar-link">The pass statement</a></li><li><a href="/python/cli-subcommands-with-precise-help-output.html" class="sidebar-link">CLI subcommands with precise help output</a></li><li><a href="/python/database-access.html" class="sidebar-link">Database Access</a></li><li><a href="/python/connecting-python-to-sql-server.html" class="sidebar-link">Connecting Python to SQL Server</a></li><li><a href="/python/postgresql.html" class="sidebar-link">PostgreSQL</a></li><li><a href="/python/python-and-excel.html" class="sidebar-link">Python and Excel</a></li><li><a href="/python/turtle-graphics.html" class="sidebar-link">Turtle Graphics</a></li><li><a href="/python/python-persistence.html" class="sidebar-link">Python Persistence</a></li><li><a href="/python/design-patterns.html" class="sidebar-link">Design Patterns</a></li><li><a href="/python/hashlib.html" class="sidebar-link">hashlib</a></li><li><a href="/python/creating-a-windows-service-using-python.html" class="sidebar-link">Creating a Windows service using Python</a></li><li><a href="/python/mutable-vs-immutable-and-hashable-in-python.html" class="sidebar-link">Mutable vs Immutable (and Hashable) in Python</a></li><li><a href="/python/configparser.html" class="sidebar-link">configparser</a></li><li><a href="/python/optical-character-recognition.html" class="sidebar-link">Optical Character Recognition</a></li><li><a href="/python/virtual-environments.html" class="sidebar-link">Virtual environments</a></li><li><a href="/python/python-virtual-environment-virtualenv.html" class="sidebar-link">Python Virtual Environment - virtualenv</a></li><li><a href="/python/virtual-environment-with-virtualenvwrapper.html" class="sidebar-link">virtual environment with virtualenvwrapper</a></li><li><a href="/python/create-virtual-environment-with-virtualenvwrapper-in-windows.html" class="sidebar-link">Create virtual environment with virtualenvwrapper in windows</a></li><li><a href="/python/sys.html" class="sidebar-link">sys</a></li><li><a href="/python/chempy-python-package.html" class="sidebar-link">ChemPy - python package</a></li><li><a href="/python/pygame.html" class="sidebar-link">pygame</a></li><li><a href="/python/pyglet.html" class="sidebar-link">Pyglet</a></li><li><a href="/python/audio.html" class="sidebar-link">Audio</a></li><li><a href="/python/pyaudio.html" class="sidebar-link">pyaudio</a></li><li><a href="/python/shelve.html" class="sidebar-link">shelve</a></li><li><a href="/python/iot-programming-with-python-and-raspberry-pi.html" class="sidebar-link">IoT Programming with Python and Raspberry PI</a></li><li><a href="/python/kivy-cross-platform-python-framework-for-nui-development.html" class="sidebar-link">kivy - Cross-platform Python Framework for NUI Development</a></li><li><a href="/python/pandas-transform-preform-operations-on-groups-and-concatenate-the-results.html" class="sidebar-link">Pandas Transform: Preform operations on groups and concatenate the results</a></li><li><a href="/python/similarities-in-syntax-differences-in-meaning-python-vs-javascript.html" class="sidebar-link">Similarities in syntax, Differences in meaning: Python vs. JavaScript</a></li><li><a href="/python/call-python-from-c.html" class="sidebar-link">Call Python from C#</a></li><li><a href="/python/ctypes.html" class="sidebar-link">ctypes</a></li><li><a href="/python/writing-extensions.html" class="sidebar-link">Writing extensions</a></li><li><a href="/python/python-lex-yacc.html" class="sidebar-link">Python Lex-Yacc</a></li><li><a href="/python/unit-testing.html" class="sidebar-link">Unit Testing</a></li><li><a href="/python/py-test.html" class="sidebar-link">py.test</a></li><li><a href="/python/profiling.html" class="sidebar-link">Profiling</a></li><li><a href="/python/python-speed-of-program.html" class="sidebar-link">Python speed of program</a></li><li><a href="/python/performance-optimization.html" class="sidebar-link">Performance optimization</a></li><li><a href="/python/security-and-cryptography.html" class="sidebar-link">Security and Cryptography</a></li><li><a href="/python/secure-shell-connection-in-python.html" class="sidebar-link">Secure Shell Connection in Python</a></li><li><a href="/python/python-anti-patterns.html" class="sidebar-link">Python Anti-Patterns</a></li><li><a href="/python/common-pitfalls.html" class="sidebar-link">Common Pitfalls</a></li><li><a href="/python/hidden-features.html" class="sidebar-link">Hidden Features</a></li><li><a href="/python/date-formatting.html" class="sidebar-link">Date Formatting</a></li><li><a href="/python/ijson.html" class="sidebar-link">ijson</a></li><li><a href="/python/django.html" class="sidebar-link">Django</a></li><li><a href="/python/code-blocks-execution-frames-and-namespaces.html" class="sidebar-link">Code blocks, execution frames, and namespaces</a></li><li><a href="/python/contributors.html" class="sidebar-link">The Contributors</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="conditionals"><a href="#conditionals" class="header-anchor">#</a> Conditionals</h1> <p>Conditional expressions, involving keywords such as if, elif, and else, provide Python programs with the ability to perform different actions depending on a boolean condition: True or False. This section covers the use of Python conditionals, boolean logic, and ternary statements.</p> <h2 id="conditional-expression-or-the-ternary-operator"><a href="#conditional-expression-or-the-ternary-operator" class="header-anchor">#</a> Conditional Expression (or "The Ternary Operator")</h2> <p>The ternary operator is used for inline conditional expressions. It is best used in simple, concise operations that are easily read.</p> <ul><li>The order of the arguments is different from many other languages (such as C, Ruby, Java, etc.), which may lead to bugs when people unfamiliar with Python's "surprising" behaviour use it (they may reverse the order).</li> <li>Some find it "unwieldy", since it goes contrary to the normal flow of thought (thinking of the condition first and then the effects).</li></ul> <div class="language-py extra-class"><pre class="language-py"><code>n <span class="token operator">=</span> <span class="token number">5</span>
<span class="token string">"Greater than 2"</span> <span class="token keyword">if</span> n <span class="token operator">></span> <span class="token number">2</span> <span class="token keyword">else</span> <span class="token string">"Smaller than or equal to 2"</span>
<span class="token comment"># Out: 'Greater than 2'</span>
</code></pre></div><p>The result of this expression will be as it is read in English - if the conditional expression is True, then it will evaluate to the expression on the left side, otherwise, the right side.</p> <p>Tenary operations can also be nested, as here:</p> <div class="language-py extra-class"><pre class="language-py"><code>n <span class="token operator">=</span> <span class="token number">5</span>
<span class="token string">"Hello"</span> <span class="token keyword">if</span> n <span class="token operator">></span> <span class="token number">10</span> <span class="token keyword">else</span> <span class="token string">"Goodbye"</span> <span class="token keyword">if</span> n <span class="token operator">></span> <span class="token number">5</span> <span class="token keyword">else</span> <span class="token string">"Good day"</span>
</code></pre></div><p>They also provide a method of including conditionals in <a href="http://stackoverflow.com/documentation/python/228/functions/2172/lambda-inline-anonymous-functions" target="_blank" rel="noopener noreferrer">lambda functions<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p> <h2 id="if-elif-and-else"><a href="#if-elif-and-else" class="header-anchor">#</a> if, elif, and else</h2> <p>In Python you can define a series of conditionals using <code>if</code> for the first one, <code>elif</code> for the rest, up until the final (optional) <code>else</code> for anything not caught by the other conditionals.</p> <div class="language-py extra-class"><pre class="language-py"><code>number <span class="token operator">=</span> <span class="token number">5</span>
<span class="token keyword">if</span> number <span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">:</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Number is bigger than 2."</span><span class="token punctuation">)</span>
<span class="token keyword">elif</span> number <span class="token operator"><</span> <span class="token number">2</span><span class="token punctuation">:</span> <span class="token comment"># Optional clause (you can have multiple elifs)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Number is smaller than 2."</span><span class="token punctuation">)</span>
<span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token comment"># Optional clause (you can only have one else)</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Number is 2."</span><span class="token punctuation">)</span>
</code></pre></div><p>Outputs <code>Number is bigger than 2</code></p> <p>Using <code>else if</code> instead of <code>elif</code> will trigger a syntax error and is not allowed.</p> <h2 id="truth-values"><a href="#truth-values" class="header-anchor">#</a> Truth Values</h2> <p>The following values are considered falsey, in that they evaluate to <code>False</code> when applied to a boolean operator.</p> <ul><li>None</li> <li>False</li> <li><code>0</code>, or any numerical value equivalent to zero, for example <code>0L</code>, <code>0.0</code>, <code>0j</code></li> <li>Empty sequences: <code>''</code>, <code>""</code>, <code>()</code>, <code>[]</code></li> <li>Empty mappings: <code>{}</code></li> <li>User-defined types where the <code>__bool__</code> or <code>__len__</code> methods return 0 or <code>False</code></li></ul> <p>All other values in Python evaluate to <code>True</code>.</p> <p><strong><strong>Note:</strong></strong> A common mistake is to simply check for the Falseness of an operation which returns different Falsey values where the difference matters. For example, using <code>if foo()</code> rather than the more explicit <code>if foo() is None</code></p> <h2 id="boolean-logic-expressions"><a href="#boolean-logic-expressions" class="header-anchor">#</a> Boolean Logic Expressions</h2> <p>Boolean logic expressions, in addition to evaluating to <code>True</code> or <code>False</code>, return the <strong>value</strong> that was interpreted as <code>True</code> or <code>False</code>. It is Pythonic way to represent logic that might otherwise require an if-else test.</p> <h3 id="and-operator"><a href="#and-operator" class="header-anchor">#</a> And operator</h3> <p>The <code>and</code> operator evaluates all expressions and returns the last expression if all expressions evaluate to <code>True</code>. Otherwise it returns the first value that evaluates to <code>False</code>:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token number">1</span> <span class="token keyword">and</span> <span class="token number">2</span>
<span class="token number">2</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token number">1</span> <span class="token keyword">and</span> <span class="token number">0</span>
<span class="token number">0</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token number">1</span> <span class="token keyword">and</span> <span class="token string">"Hello World"</span>
<span class="token string">"Hello World"</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token string">""</span> <span class="token keyword">and</span> <span class="token string">"Pancakes"</span>
<span class="token string">""</span>
</code></pre></div><h3 id="or-operator"><a href="#or-operator" class="header-anchor">#</a> Or operator</h3> <p>The <code>or</code> operator evaluates the expressions left to right and returns the first value that evaluates to <code>True</code> or the last value (if none are <code>True</code>).</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token number">1</span> <span class="token keyword">or</span> <span class="token number">2</span>
<span class="token number">1</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token boolean">None</span> <span class="token keyword">or</span> <span class="token number">1</span>
<span class="token number">1</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token number">0</span> <span class="token keyword">or</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
<span class="token punctuation">[</span><span class="token punctuation">]</span>
</code></pre></div><h3 id="lazy-evaluation"><a href="#lazy-evaluation" class="header-anchor">#</a> Lazy evaluation</h3> <p>When you use this approach, remember that the evaluation is lazy. Expressions that are not required to be evaluated to determine the result are not evaluated. For example:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">def</span> <span class="token function">print_me</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'I am here!'</span><span class="token punctuation">)</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token number">0</span> <span class="token keyword">and</span> print_me<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token number">0</span>
</code></pre></div><p>In the above example, <code>print_me</code> is never executed because Python can determine the entire expression is <code>False</code> when it encounters the <code>0</code> (<code>False</code>). Keep this in mind if <code>print_me</code> needs to execute to serve your program logic.</p> <h3 id="testing-for-multiple-conditions"><a href="#testing-for-multiple-conditions" class="header-anchor">#</a> Testing for multiple conditions</h3> <p>A common mistake when checking for multiple conditions is to apply the logic incorrectly.</p> <p>This example is trying to check if two variables are each greater than 2. The statement is evaluated as - <code>if (a) and (b > 2)</code>. This produces an unexpected result because <code>bool(a)</code> evaluates as <code>True</code> when <code>a</code> is not zero.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> a <span class="token operator">=</span> <span class="token number">1</span>
<span class="token operator">>></span><span class="token operator">></span> b <span class="token operator">=</span> <span class="token number">6</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">if</span> a <span class="token keyword">and</span> b <span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'yes'</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">else</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'no'</span><span class="token punctuation">)</span>
yes
</code></pre></div><p>Each variable needs to be compared separately.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">if</span> a <span class="token operator">></span> <span class="token number">2</span> <span class="token keyword">and</span> b <span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'yes'</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">else</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'no'</span><span class="token punctuation">)</span>
no
</code></pre></div><p>Another, similar, mistake is made when checking if a variable is one of multiple values. The statement in this example is evaluated as - <code>if (a == 3) or (4) or (6)</code>. This produces an unexpected result because <code>bool(4)</code> and <code>bool(6)</code> each evaluate to <code>True</code></p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> a <span class="token operator">=</span> <span class="token number">1</span>
<span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">if</span> a <span class="token operator">==</span> <span class="token number">3</span> <span class="token keyword">or</span> <span class="token number">4</span> <span class="token keyword">or</span> <span class="token number">6</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'yes'</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">else</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'no'</span><span class="token punctuation">)</span>
yes
</code></pre></div><p>Again each comparison must be made separately</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">if</span> a <span class="token operator">==</span> <span class="token number">3</span> <span class="token keyword">or</span> a <span class="token operator">==</span> <span class="token number">4</span> <span class="token keyword">or</span> a <span class="token operator">==</span> <span class="token number">6</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'yes'</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">else</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'no'</span><span class="token punctuation">)</span>
no
</code></pre></div><p>Using the in operator is the canonical way to write this.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span><span class="token operator">></span> <span class="token keyword">if</span> a <span class="token keyword">in</span> <span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'yes'</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">else</span><span class="token punctuation">:</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'no'</span><span class="token punctuation">)</span>
no
</code></pre></div><h2 id="else-statement"><a href="#else-statement" class="header-anchor">#</a> Else statement</h2> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> condition<span class="token punctuation">:</span>
body
<span class="token keyword">else</span><span class="token punctuation">:</span>
body
</code></pre></div><p>The else statement will execute it's body only if preceding conditional statements all evaluate to False.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
<span class="token keyword">print</span> <span class="token string">"It is true!"</span>
<span class="token keyword">else</span><span class="token punctuation">:</span>
<span class="token keyword">print</span> <span class="token string">"This won't get printed.."</span>
<span class="token comment"># Output: It is true!</span>
<span class="token keyword">if</span> <span class="token boolean">False</span><span class="token punctuation">:</span>
<span class="token keyword">print</span> <span class="token string">"This won't get printed.."</span>
<span class="token keyword">else</span><span class="token punctuation">:</span>
<span class="token keyword">print</span> <span class="token string">"It is false!"</span>
<span class="token comment"># Output: It is false!</span>
</code></pre></div><h2 id="using-the-cmp-function-to-get-the-comparison-result-of-two-objects"><a href="#using-the-cmp-function-to-get-the-comparison-result-of-two-objects" class="header-anchor">#</a> Using the cmp function to get the comparison result of two objects</h2> <p>Python 2 includes a <code>cmp</code> function which allows you to determine if one object is less than, equal to, or greater than another object. This function can be used to pick a choice out of a list based on one of those three options.</p> <p>Suppose you need to print <code>'greater than'</code> if <code>x > y</code>, <code>'less than'</code> if <code>x < y</code> and <code>'equal'</code> if <code>x == y</code>.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token punctuation">[</span><span class="token string">'equal'</span><span class="token punctuation">,</span> <span class="token string">'greater than'</span><span class="token punctuation">,</span> <span class="token string">'less than'</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token builtin">cmp</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span>y<span class="token punctuation">)</span><span class="token punctuation">]</span>
<span class="token comment"># x,y = 1,1 output: 'equal'</span>
<span class="token comment"># x,y = 1,2 output: 'less than'</span>
<span class="token comment"># x,y = 2,1 output: 'greater than'</span>
</code></pre></div><p><code>cmp(x,y)</code> returns the following values</p> <table><thead><tr><th>Comparison</th> <th>Result</th></tr></thead> <tbody><tr><td>x < y</td> <td>-1</td></tr> <tr><td>x == y</td> <td>0</td></tr> <tr><td>x > y</td> <td>1</td></tr></tbody></table> <p>This function is removed on Python 3. You can use the <a href="https://docs.python.org/3/library/functools.html#functools.cmp_to_key" target="_blank" rel="noopener noreferrer"><code>cmp_to_key(func)</code><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> helper function located in <a href="http://stackoverflow.com/documentation/python/2492/functools#t=201608152305056538775" target="_blank" rel="noopener noreferrer"><code>functools</code><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> in Python 3 to convert old comparison functions to key functions.</p> <h2 id="if-statement"><a href="#if-statement" class="header-anchor">#</a> If statement</h2> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> condition<span class="token punctuation">:</span>
body
</code></pre></div><p>The <code>if</code> statements checks the condition. If it evaluates to <code>True</code>, it executes the body of the <code>if</code> statement. If it evaluates to <code>False</code>, it skips the body.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
<span class="token keyword">print</span> <span class="token string">"It is true!"</span>
<span class="token operator">>></span> It <span class="token keyword">is</span> true!
<span class="token keyword">if</span> <span class="token boolean">False</span><span class="token punctuation">:</span>
<span class="token keyword">print</span> <span class="token string">"This won't get printed.."</span>
</code></pre></div><p>The condition can be any valid expression:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> <span class="token number">2</span> <span class="token operator">+</span> <span class="token number">2</span> <span class="token operator">==</span> <span class="token number">4</span><span class="token punctuation">:</span>
<span class="token keyword">print</span> <span class="token string">"I know math!"</span>
<span class="token operator">>></span> I know math!
</code></pre></div><h2 id="testing-if-an-object-is-none-and-assigning-it"><a href="#testing-if-an-object-is-none-and-assigning-it" class="header-anchor">#</a> Testing if an object is None and assigning it</h2> <p>You'll often want to assign something to an object if it is <code>None</code>, indicating it has not been assigned. We'll use <code>aDate</code>.</p> <p>The simplest way to do this is to use the <code>is None</code> test.</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> aDate <span class="token keyword">is</span> <span class="token boolean">None</span><span class="token punctuation">:</span>
aDate<span class="token operator">=</span>datetime<span class="token punctuation">.</span>date<span class="token punctuation">.</span>today<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><p>(Note that it is more Pythonic to say <code>is None</code> instead of <code>== None</code>.)</p> <p>But this can be optimized slightly by exploiting the notion that <code>not None</code> will evaluate to <code>True</code> in a boolean expression. The following code is equivalent:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token keyword">if</span> <span class="token keyword">not</span> aDate<span class="token punctuation">:</span>
aDate<span class="token operator">=</span>datetime<span class="token punctuation">.</span>date<span class="token punctuation">.</span>today<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><p>But there is a more Pythonic way. The following code is also equivalent:</p> <div class="language-py extra-class"><pre class="language-py"><code>aDate<span class="token operator">=</span>aDate <span class="token keyword">or</span> datetime<span class="token punctuation">.</span>date<span class="token punctuation">.</span>today<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><p>This does a <a href="http://stackoverflow.com/documentation/python/1731/boolean-operators/5836/short-circuit-evaluation#t=201703171928470318746" target="_blank" rel="noopener noreferrer">Short Circuit evaluation<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>. If <code>aDate</code> is initialized and is <code>not None</code>, then it gets assigned to itself with no net effect. If it <code>is None</code>, then the <code>datetime.date.today()</code> gets assigned to <code>aDate</code>.</p> <h2 id="conditional-expression-evaluation-using-list-comprehensions"><a href="#conditional-expression-evaluation-using-list-comprehensions" class="header-anchor">#</a> Conditional Expression Evaluation Using List Comprehensions</h2> <p>Python allows you to hack list comprehensions to evaluate conditional expressions.</p> <p>For instance,</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token punctuation">[</span>value_false<span class="token punctuation">,</span> value_true<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token operator"><</span>conditional<span class="token operator">-</span>test<span class="token operator">></span><span class="token punctuation">]</span>
</code></pre></div><p>Example:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token operator">>></span> n <span class="token operator">=</span> <span class="token number">16</span>
<span class="token operator">>></span> <span class="token keyword">print</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">[</span>n <span class="token operator"><=</span> <span class="token number">15</span><span class="token punctuation">]</span>
<span class="token number">10</span>
</code></pre></div><p>Here <code>n<=15</code> returns <code>False</code> (which equates to 0 in Python). So what Python is evaluating is:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">[</span>n <span class="token operator"><=</span> <span class="token number">15</span><span class="token punctuation">]</span>
<span class="token operator">==</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token boolean">False</span><span class="token punctuation">]</span>
<span class="token operator">==</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token comment">#False==0, True==1 (Check Boolean Equivalencies in Python)</span>
<span class="token operator">==</span><span class="token operator">></span> <span class="token number">10</span>
</code></pre></div><p>The inbuilt <code>__cmp__</code> method returned 3 possible values: 0, 1, -1, where cmp(x,y) returned
0: if both objecs were the same
1: x > y
-1: x < y</p> <p>This could be used with list comprehensions to return the first(ie. index 0), second(ie. index 1) and last(ie. index -1) element of the list. Giving us a conditional of this type:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token punctuation">[</span>value_equals<span class="token punctuation">,</span> value_greater<span class="token punctuation">,</span> value_less<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token operator"><</span>conditional<span class="token operator">-</span>test<span class="token operator">></span><span class="token punctuation">]</span>
</code></pre></div><p>Finally, in all the examples above Python evaluates both branches before choosing one. To only evaluate the chosen branch:</p> <div class="language-py extra-class"><pre class="language-py"><code><span class="token punctuation">[</span><span class="token keyword">lambda</span><span class="token punctuation">:</span> value_false<span class="token punctuation">,</span> <span class="token keyword">lambda</span><span class="token punctuation">:</span> value_true<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token operator"><</span>test<span class="token operator">></span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><p>where adding the <code>()</code> at the end ensures that the lambda functions are only called/evaluated at the end. Thus, we only evaluate the chosen branch.</p> <p>Example:</p> <div class="language-py extra-class"><pre class="language-py"><code>count <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token keyword">lambda</span><span class="token punctuation">:</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token keyword">lambda</span><span class="token punctuation">:</span>N<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span>count<span class="token operator">==</span>N<span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><h4 id="syntax"><a href="#syntax" class="header-anchor">#</a> Syntax</h4> <ul><li><expression> if <conditional> else <expression> # Ternary Operator</expression></conditional></expression></li></ul></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/devtut/generate/edit/master/docs/python/conditionals.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
←
<a href="/python/variable-scope-and-binding.html" class="prev">
Variable Scope and Binding
</a></span> <span class="next"><a href="/python/comparisons.html">
Comparisons
</a>
→
</span></p></div> </main></div><div class="global-ui"><!----></div></div>
<script src="/assets/js/app.1779e102.js" defer></script><script src="/assets/js/3.2cfa8016.js" defer></script><script src="/assets/js/2673.a418632c.js" defer></script>
</body>
</html>