##// END OF EJS Templates
Minor paraphrasing.
André A. Gomes -
Show More
@@ -1,282 +1,282 b''
1 1 .. _tutorial:
2 2
3 3 ======================
4 4 Introducing IPython
5 5 ======================
6 6
7 7 You don't need to know anything beyond Python to start using IPython – just type
8 8 commands as you would at the standard Python prompt. But IPython can do much
9 9 more than the standard prompt. Some key features are described here. For more
10 10 information, check the :ref:`tips page <tips>`, or look at examples in the
11 11 `IPython cookbook <https://github.com/ipython/ipython/wiki/Cookbook%3A-Index>`_.
12 12
13 13 If you haven't done that yet see :ref:`how to install ipython <install>`.
14 14
15 15 If you've never used Python before, you might want to look at `the official
16 16 tutorial <http://docs.python.org/tutorial/>`_ or an alternative, `Dive into
17 17 Python <https://www.diveinto.org/python3/table-of-contents.html>`_.
18 18
19 19 Start IPython by issuing the ``ipython`` command from your shell, you should be
20 20 greeted by the following::
21 21
22 22 Python 3.6.0
23 23 Type 'copyright', 'credits' or 'license' for more information
24 24 IPython 6.0.0.dev -- An enhanced Interactive Python. Type '?' for help.
25 25
26 26 In [1]:
27 27
28 28
29 29 Unlike the Python REPL, you will see that the input prompt is ``In [N]:``
30 30 instead of ``>>>``. The number ``N`` in the prompt will be used later in this
31 31 tutorial but should usually not impact the computation.
32 32
33 33 You should be able to type single line expressions and press enter to evaluate
34 34 them. If an expression is incomplete, IPython will automatically detect this and
35 35 add a new line when you press :kbd:`Enter` instead of executing right away.
36 36
37 37 Feel free to explore multi-line text input. Unlike many other REPLs, with
38 38 IPython you can use the up and down arrow keys when editing multi-line
39 39 code blocks.
40 40
41 41 Here is an example of a longer interaction with the IPython REPL,
42 42 which we often refer to as an IPython *session* ::
43 43
44 44 In [1]: print('Hello IPython')
45 45 Hello IPython
46 46
47 47 In [2]: 21 * 2
48 48 Out[2]: 42
49 49
50 50 In [3]: def say_hello(name):
51 51 ...: print('Hello {name}'.format(name=name))
52 52 ...:
53 53
54 54 We won't get into details right now, but you may notice a few differences to
55 55 the standard Python REPL. First, your code should be syntax-highlighted as you
56 56 type. Second, you will see that some results will have an ``Out[N]:`` prompt,
57 57 while some other do not. We'll come to this later.
58 58
59 59 Depending on the exact command you are typing you might realize that sometimes
60 60 :kbd:`Enter` will add a new line, and sometimes it will execute the current
61 61 statement. IPython tries to guess what you are doing, so most of the time you
62 62 should not have to care. Though if by any chance IPython does not the right
63 63 thing you can force execution of the current code block by pressing in sequence
64 64 :kbd:`Esc` and :kbd:`Enter`. You can also force the insertion of a new line at
65 65 the position of the cursor by using :kbd:`Ctrl-o`.
66 66
67 67 The four most helpful commands
68 68 ==============================
69 69
70 70 The four most helpful commands, as well as their brief description, is shown
71 71 to you in a banner, every time you start IPython:
72 72
73 73 ========== =========================================================
74 74 command description
75 75 ========== =========================================================
76 76 ? Introduction and overview of IPython's features.
77 77 %quickref Quick reference.
78 78 help Python's own help system.
79 79 object? Details about 'object', use 'object??' for extra details.
80 80 ========== =========================================================
81 81
82 82 Tab completion
83 83 ==============
84 84
85 85 Tab completion, especially for attributes, is a convenient way to explore the
86 86 structure of any object you're dealing with. Simply type ``object_name.<TAB>``
87 87 to view the object's attributes. Besides Python objects and keywords, tab
88 88 completion also works on file and directory names.
89 89
90 90 Starting with IPython 6.0, if ``jedi`` is installed, IPython will try to pull
91 91 completions from Jedi as well. This allows to not only inspect currently
92 92 existing objects, but also to infer completion statically without executing
93 code. There is nothing particular to get this to work, simply use tab completion
94 on more complex expressions like the following::
93 code. There is nothing particular needed to get this to work, simply use tab
94 completion on more complex expressions like the following::
95 95
96 96 >>> data = ['Number of users', 123456]
97 97 ... data[0].<tab>
98 98
99 99 IPython and Jedi will be able to infer that ``data[0]`` is actually a string
100 100 and should show relevant completions like ``upper()``, ``lower()`` and other
101 101 string methods. You can use the :kbd:`Tab` key to cycle through completions,
102 102 and while a completion is highlighted, its type will be shown as well.
103 103 When the type of the completion is a function, the completer will also show the
104 104 signature of the function when highlighted.
105 105
106 106 Exploring your objects
107 107 ======================
108 108
109 109 Typing ``object_name?`` will print all sorts of details about any object,
110 110 including docstrings, function definition lines (for call arguments) and
111 111 constructor details for classes. To get specific information on an object, you
112 112 can use the magic commands ``%pdoc``, ``%pdef``, ``%psource`` and ``%pfile``
113 113
114 114 .. _magics_explained:
115 115
116 116 Magic functions
117 117 ===============
118 118
119 119 IPython has a set of predefined 'magic functions' that you can call with a
120 120 command line style syntax. There are two kinds of magics, line-oriented and
121 121 cell-oriented. **Line magics** are prefixed with the ``%`` character and work
122 122 much like OS command-line calls: they get as an argument the rest of the line,
123 123 where arguments are passed without parentheses or quotes. **Lines magics** can
124 124 return results and can be used in the right hand side of an assignment. **Cell
125 125 magics** are prefixed with a double ``%%``, and they are functions that get as
126 126 an argument not only the rest of the line, but also the lines below it in a
127 127 separate argument.
128 128
129 129 Magics are useful as convenient functions where Python syntax is not the most
130 130 natural one, or when one want to embed invalid python syntax in their work flow.
131 131
132 132 The following examples show how to call the built-in :magic:`timeit` magic, both
133 133 in line and cell mode::
134 134
135 135 In [1]: %timeit range(1000)
136 136 100000 loops, best of 3: 7.76 us per loop
137 137
138 138 In [2]: %%timeit x = range(10000)
139 139 ...: max(x)
140 140 ...:
141 141 1000 loops, best of 3: 223 us per loop
142 142
143 143 The built-in magics include:
144 144
145 145 - Functions that work with code: :magic:`run`, :magic:`edit`, :magic:`save`,
146 146 :magic:`macro`, :magic:`recall`, etc.
147 147
148 148 - Functions which affect the shell: :magic:`colors`, :magic:`xmode`,
149 149 :magic:`automagic`, etc.
150 150
151 151 - Other functions such as :magic:`reset`, :magic:`timeit`,
152 152 :cellmagic:`writefile`, :magic:`load`, or :magic:`paste`.
153 153
154 154 You can always call magics using the ``%`` prefix, and if you're calling a line
155 155 magic on a line by itself, as long as the identifier is not defined in your
156 156 namespace, you can omit even that::
157 157
158 158 run thescript.py
159 159
160 160 You can toggle this behavior by running the :magic:`automagic` magic. Cell
161 161 magics must always have the ``%%`` prefix.
162 162
163 163 A more detailed explanation of the magic system can be obtained by calling
164 164 ``%magic``, and for more details on any magic function, call ``%somemagic?`` to
165 165 read its docstring. To see all the available magic functions, call
166 166 ``%lsmagic``.
167 167
168 168 .. seealso::
169 169
170 170 The :ref:`magic` section of the documentation goes more in depth into how
171 171 the magics works and how to define your own, and :doc:`magics` for a list of
172 172 built-in magics.
173 173
174 174 `Cell magics`_ example notebook
175 175
176 176 Running and Editing
177 177 -------------------
178 178
179 179 The :magic:`run` magic command allows you to run any python script and load all
180 180 of its data directly into the interactive namespace. Since the file is re-read
181 181 from disk each time, changes you make to it are reflected immediately (unlike
182 182 imported modules, which have to be specifically reloaded). IPython also includes
183 183 :ref:`dreload <dreload>`, a recursive reload function.
184 184
185 185 ``%run`` has special flags for timing the execution of your scripts (-t), or
186 186 for running them under the control of either Python's pdb debugger (-d) or
187 187 profiler (-p).
188 188
189 189 The :magic:`edit` command gives a reasonable approximation of multi-line editing,
190 190 by invoking your favorite editor on the spot. IPython will execute the
191 191 code you type in there as if it were typed interactively. Note that for
192 192 :magic:`edit` to work, the call to startup your editor has to be a blocking
193 193 call. In a GUI environment, your editor likely will have such an option.
194 194
195 195 Debugging
196 196 ---------
197 197
198 198 After an exception occurs, you can call :magic:`debug` to jump into the Python
199 199 debugger (pdb) and examine the problem. Alternatively, if you call :magic:`pdb`,
200 200 IPython will automatically start the debugger on any uncaught exception. You can
201 201 print variables, see code, execute statements and even walk up and down the call
202 202 stack to track down the true source of the problem. This can be an efficient way
203 203 to develop and debug code, in many cases eliminating the need for print
204 204 statements or external debugging tools.
205 205
206 206 You can also step through a program from the beginning by calling
207 207 ``%run -d theprogram.py``.
208 208
209 209 History
210 210 =======
211 211
212 212 IPython stores both the commands you enter, and the results it produces. You
213 213 can easily go through previous commands with the up- and down-arrow keys, or
214 214 access your history in more sophisticated ways.
215 215
216 216 Input and output history are kept in variables called ``In`` and ``Out``, keyed
217 217 by the prompt numbers, e.g. ``In[4]``. The last three objects in output history
218 218 are also kept in variables named ``_``, ``__`` and ``___``.
219 219
220 220 You can use the ``%history`` magic function to examine past input and output.
221 221 Input history from previous sessions is saved in a database, and IPython can be
222 222 configured to save output history.
223 223
224 224 Several other magic functions can use your input history, including ``%edit``,
225 225 ``%rerun``, ``%recall``, ``%macro``, ``%save`` and ``%pastebin``. You can use a
226 226 standard format to refer to lines::
227 227
228 228 %pastebin 3 18-20 ~1/1-5
229 229
230 230 This will take line 3 and lines 18 to 20 from the current session, and lines
231 231 1-5 from the previous session.
232 232
233 233 System shell commands
234 234 =====================
235 235
236 236 To run any command at the system shell, simply prefix it with ``!``, e.g.::
237 237
238 238 !ping www.bbc.co.uk
239 239
240 240 You can capture the output into a Python list, e.g.: ``files = !ls``. To pass
241 241 the values of Python variables or expressions to system commands, prefix them
242 242 with $: ``!grep -rF $pattern ipython/*`` or wrap in `{braces}`. See :ref:`our
243 243 shell section <system_shell_access>` for more details.
244 244
245 245 Define your own system aliases
246 246 ------------------------------
247 247
248 248 It's convenient to have aliases to the system commands you use most often. This
249 249 allows you to work seamlessly from inside IPython with the same commands you are
250 250 used to in your system shell. IPython comes with some pre-defined aliases and a
251 251 complete system for changing directories, both via a stack (see :magic:`pushd`,
252 252 :magic:`popd` and :magic:`dhist`) and via direct :magic:`cd`. The latter keeps a
253 253 history of visited directories and allows you to go to any previously visited
254 254 one.
255 255
256 256
257 257 Configuration
258 258 =============
259 259
260 260 Much of IPython can be tweaked through :doc:`configuration </config/intro>`.
261 261 To get started, use the command ``ipython profile create`` to produce the
262 262 default config files. These will be placed in
263 263 :file:`~/.ipython/profile_default`, and contain comments explaining
264 264 what the various options do.
265 265
266 266 Profiles allow you to use IPython for different tasks, keeping separate config
267 267 files and history for each one. More details in :ref:`the profiles section
268 268 <profiles>`.
269 269
270 270 .. _startup_files:
271 271
272 272 Startup Files
273 273 -------------
274 274
275 275 If you want some code to be run at the beginning of every IPython session, the
276 276 easiest way is to add Python (.py) or IPython (.ipy) scripts to your
277 277 :file:`profile_default/startup/` directory. Files here will be executed as soon
278 278 as the IPython shell is constructed, before any other code or scripts you have
279 279 specified. The files will be run in order of their names, so you can control the
280 280 ordering with prefixes, like ``10-myimports.py``.
281 281
282 282 .. include:: ../links.txt
General Comments 0
You need to be logged in to leave comments. Login now