Show More
@@ -1,249 +1,240 b'' | |||
|
1 | 1 | ================= |
|
2 | 2 | Python vs IPython |
|
3 | 3 | ================= |
|
4 | 4 | |
|
5 | 5 | This document is meant to highlight the main differences between the Python |
|
6 | 6 | language and what are the specific construct you can do only in IPython. |
|
7 | 7 | |
|
8 | 8 | Unless expressed otherwise all of the construct you will see here will raise a |
|
9 | 9 | ``SyntaxError`` if run in a pure Python shell, or if executing in a Python |
|
10 | 10 | script. |
|
11 | 11 | |
|
12 | 12 | Each of these features are describe more in details in further part of the documentation. |
|
13 | 13 | |
|
14 | 14 | |
|
15 | 15 | Quick overview: |
|
16 | 16 | =============== |
|
17 | 17 | |
|
18 | 18 | |
|
19 | 19 | All the following construct are valid IPython syntax: |
|
20 | 20 | |
|
21 | 21 | .. code-block:: ipython |
|
22 | 22 | |
|
23 | 23 | In [1]: ? |
|
24 | 24 | |
|
25 | 25 | .. code-block:: ipython |
|
26 | 26 | |
|
27 | 27 | In [1]: ?object |
|
28 | 28 | |
|
29 | 29 | |
|
30 | 30 | .. code-block:: ipython |
|
31 | 31 | |
|
32 | 32 | In [1]: object? |
|
33 | 33 | |
|
34 | 34 | .. code-block:: ipython |
|
35 | 35 | |
|
36 | 36 | In [1]: *pattern*? |
|
37 | 37 | |
|
38 | 38 | .. code-block:: ipython |
|
39 | 39 | |
|
40 | 40 | In [1]: %shell like --syntax |
|
41 | 41 | |
|
42 | 42 | .. code-block:: ipython |
|
43 | 43 | |
|
44 | 44 | In [1]: !ls |
|
45 | 45 | |
|
46 | 46 | .. code-block:: ipython |
|
47 | 47 | |
|
48 | 48 | In [1]: my_files = !ls ~/ |
|
49 | In [1]: for i,file in enumerate(my_file): | |
|
49 | In [1]: for i, file in enumerate(my_files): | |
|
50 | 50 | ...: raw = !echo $file |
|
51 |
...: !echo {file |
|
|
51 | ...: !echo {file[0].upper()} $raw | |
|
52 | 52 | |
|
53 | 53 | |
|
54 | 54 | .. code-block:: ipython |
|
55 | 55 | |
|
56 | 56 | In [1]: %%perl magic --function |
|
57 | 57 | ...: @months = ("July", "August", "September"); |
|
58 | 58 | ...: print $months[0]; |
|
59 | 59 | |
|
60 | 60 | |
|
61 | 61 | Each of these construct is compile by IPython into valid python code and will |
|
62 | 62 | do most of the time what you expect it will do. Let see each of these example |
|
63 | 63 | in more detail. |
|
64 | 64 | |
|
65 | 65 | |
|
66 | 66 | Accessing help |
|
67 | 67 | ============== |
|
68 | 68 | |
|
69 | 69 | As IPython is mostly an interactive shell, the question mark is a simple |
|
70 | 70 | shortcut to get help. A question mark alone will bring up the IPython help: |
|
71 | 71 | |
|
72 | 72 | .. code-block:: ipython |
|
73 | 73 | |
|
74 | 74 | In [1]: ? |
|
75 | 75 | |
|
76 | 76 | IPython -- An enhanced Interactive Python |
|
77 | 77 | ========================================= |
|
78 | 78 | |
|
79 | 79 | IPython offers a combination of convenient shell features, special commands |
|
80 | 80 | and a history mechanism for both input (command history) and output (results |
|
81 | 81 | caching, similar to Mathematica). It is intended to be a fully compatible |
|
82 | 82 | replacement for the standard Python interpreter, while offering vastly |
|
83 | 83 | improved functionality and flexibility. |
|
84 | 84 | |
|
85 | 85 | At your system command line, type 'ipython -h' to see the command line |
|
86 | 86 | options available. This document only describes interactive features. |
|
87 | 87 | |
|
88 | 88 | MAIN FEATURES |
|
89 | 89 | ------------- |
|
90 | 90 | ... |
|
91 | 91 | |
|
92 | 92 | A single question mark before, or after an object available in current |
|
93 | 93 | namespace will show help relative to this object: |
|
94 | 94 | |
|
95 | 95 | .. code-block:: ipython |
|
96 | 96 | |
|
97 | 97 | In [6]: object? |
|
98 | 98 | Docstring: The most base type |
|
99 | 99 | Type: type |
|
100 | 100 | |
|
101 | 101 | |
|
102 | 102 | A double question mark will try to pull out more information about the object, |
|
103 | 103 | and if possible display the python source code of this object. |
|
104 | 104 | |
|
105 | 105 | .. code-block:: ipython |
|
106 | 106 | |
|
107 | 107 | In[1]: import collections |
|
108 | 108 | In[2]: collections.Counter?? |
|
109 | 109 | |
|
110 | 110 | Init signature: collections.Counter(*args, **kwds) |
|
111 | 111 | Source: |
|
112 | 112 | class Counter(dict): |
|
113 | 113 | '''Dict subclass for counting hashable items. Sometimes called a bag |
|
114 | 114 | or multiset. Elements are stored as dictionary keys and their counts |
|
115 | 115 | are stored as dictionary values. |
|
116 | 116 | |
|
117 | 117 | >>> c = Counter('abcdeabcdabcaba') # count elements from a string |
|
118 | 118 | |
|
119 | 119 | >>> c.most_common(3) # three most common elements |
|
120 | 120 | [('a', 5), ('b', 4), ('c', 3)] |
|
121 | 121 | >>> sorted(c) # list all unique elements |
|
122 | 122 | ['a', 'b', 'c', 'd', 'e'] |
|
123 | 123 | >>> ''.join(sorted(c.elements())) # list elements with repetitions |
|
124 | 124 | 'aaaaabbbbcccdde' |
|
125 | 125 | ... |
|
126 | 126 | |
|
127 | 127 | |
|
128 | 128 | |
|
129 | 129 | If you are looking for an object, the use of wildcards ``*`` in conjunction |
|
130 | 130 | with question mark will allow you to search current namespace for object with |
|
131 | 131 | matching names: |
|
132 | 132 | |
|
133 | 133 | .. code-block:: ipython |
|
134 | 134 | |
|
135 | 135 | In [24]: *int*? |
|
136 | 136 | FloatingPointError |
|
137 | 137 | int |
|
138 | 138 | |
|
139 | 139 | |
|
140 | 140 | |
|
141 | 141 | Shell Assignment |
|
142 | 142 | ================ |
|
143 | 143 | |
|
144 | 144 | |
|
145 | 145 | When doing interactive computing it is common to need to access the underlying shell. |
|
146 | 146 | This is doable through the use of the exclamation mark ``!`` (or bang). |
|
147 | 147 | |
|
148 | 148 | This allow to execute simple command when present in beginning of line: |
|
149 | 149 | |
|
150 | 150 | .. code-block:: ipython |
|
151 | 151 | |
|
152 | 152 | In[1]: !pwd |
|
153 | 153 | /User/home/ |
|
154 | 154 | |
|
155 | 155 | Change directory: |
|
156 | 156 | |
|
157 | 157 | .. code-block:: ipython |
|
158 | 158 | |
|
159 | 159 | In[1]: !cd /var/etc |
|
160 | 160 | |
|
161 | 161 | Or edit file: |
|
162 | 162 | |
|
163 | 163 | .. code-block:: ipython |
|
164 | 164 | |
|
165 | 165 | In[1]: !mvim myfile.txt |
|
166 | 166 | |
|
167 | 167 | |
|
168 | 168 | The line after the bang can call any program installed in the underlying |
|
169 | 169 | shell, and support variable expansion in the form of ``$variable`` or ``{variable}``. |
|
170 | 170 | The later form of expansion supports arbitrary python expression: |
|
171 | 171 | |
|
172 | 172 | .. code-block:: ipython |
|
173 | 173 | |
|
174 | 174 | In[1]: file = 'myfile.txt' |
|
175 | 175 | |
|
176 | 176 | In[2]: !mv $file {file.upper()} |
|
177 | 177 | |
|
178 | 178 | |
|
179 | 179 | The bang can also be present in the right hand side of an assignment, just |
|
180 | 180 | after the equal sign, or separated from it by a white space. In which case the |
|
181 | 181 | standard output of the command after the bang ``!`` will be split out into lines |
|
182 | 182 | in a list-like object and assign to the left hand side. |
|
183 | 183 | |
|
184 | 184 | This allow you for example to put the list of files of the current working directory in a variable: |
|
185 | 185 | |
|
186 | 186 | .. code-block:: ipython |
|
187 | 187 | |
|
188 | 188 | In[1]: my_files = !ls |
|
189 | 189 | |
|
190 | 190 | |
|
191 | 191 | You can combine the different possibilities in for loops, condition, functions...: |
|
192 | 192 | |
|
193 | 193 | .. code-block:: ipython |
|
194 | 194 | |
|
195 | 195 | my_files = !ls ~/ |
|
196 | b = "backup file" | |
|
197 | for i,file in enumerate(my_file): | |
|
196 | for i, file in enumerate(my_files): | |
|
198 | 197 | raw = !echo $backup $file |
|
199 | 198 | !cp $file {file.split('.')[0]+'.bak'} |
|
200 | 199 | |
|
201 | 200 | |
|
202 | 201 | Magics |
|
203 | 202 | ------ |
|
204 | 203 | |
|
205 | 204 | Magics function are often present in the form of shell-like syntax, but are |
|
206 | 205 | under the hood python function. The syntax and assignment possibility are |
|
207 | 206 | similar to the one with the bang (``!``) syntax, but with more flexibility and |
|
208 | 207 | power. Magic function start with a percent sign (``%``) or double percent (``%%``). |
|
209 | 208 | |
|
210 | 209 | A magic call with a sign percent will act only one line: |
|
211 | 210 | |
|
212 | 211 | .. code-block:: ipython |
|
213 | 212 | |
|
214 | 213 | In[1]: %xmode |
|
215 | 214 | Exception reporting mode: Verbose |
|
216 | 215 | |
|
217 | 216 | And support assignment: |
|
218 | 217 | |
|
219 | 218 | .. code-block:: ipython |
|
220 | 219 | |
|
221 | 220 | In [1]: results = %timeit -r1 -n1 -o list(range(1000)) |
|
222 | 221 | 1 loops, best of 1: 21.1 Β΅s per loop |
|
223 | 222 | |
|
224 | 223 | In [2]: results |
|
225 | 224 | Out[2]: <TimeitResult : 1 loops, best of 1: 21.1 Β΅s per loop> |
|
226 | 225 | |
|
227 | 226 | Magic with two percent sign can spread over multiple lines, but do not support assignment: |
|
228 | 227 | |
|
229 | 228 | .. code-block:: ipython |
|
230 | 229 | |
|
231 | 230 | In[1]: %%bash |
|
232 | 231 | ... : echo "My shell is:" $SHELL |
|
233 | 232 | ... : echo "My disk usage is:" |
|
234 | 233 | ... : df -h |
|
235 | 234 | My shell is: /usr/local/bin/bash |
|
236 | 235 | My disk usage is: |
|
237 | 236 | Filesystem Size Used Avail Capacity iused ifree %iused Mounted on |
|
238 | 237 | /dev/disk1 233Gi 216Gi 16Gi 94% 56788108 4190706 93% / |
|
239 | 238 | devfs 190Ki 190Ki 0Bi 100% 656 0 100% /dev |
|
240 | 239 | map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net |
|
241 | 240 | map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /hom |
|
242 | ||
|
243 | ||
|
244 | Combining it all | |
|
245 | ---------------- | |
|
246 | ||
|
247 | :: | |
|
248 | ||
|
249 | find a snippet that combine all that into one thing! |
@@ -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 need to get this to work, simply use tab | |
|
93 | code. There is nothing particular needed to get this to work, simply use tab | |
|
94 | 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