##// END OF EJS Templates
Delete incomplete section.
André A. Gomes -
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 constructs you can do only in IPython.
7 7
8 8 Unless expressed otherwise all of the constructs 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 is described more in detail in the further parts of the documentation.
13 13
14 14
15 15 Quick overview:
16 16 ===============
17 17
18 18
19 19 All the following constructs 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 49 In [1]: for i, file in enumerate(my_files):
50 50 ...: raw = !echo $file
51 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 constructs is compiled by IPython into valid python code and will
62 62 do most of the time what you expect it will do. Let's see each of these examples
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 the 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 a question mark will allow you to search the current namespace for objects 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 print
139 139
140 140
141 141 Shell Assignment
142 142 ================
143 143
144 144
145 145 When doing interactive computing it is a common 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 allows to execute simple commands when present in beginning of the 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 expressions:
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 on the right hand side of an assignment, just
180 180 after the equal sign, or separated from it by a white space. In this 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 assigned to the left hand side.
183 183
184 184 This allows 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, conditions, functions...:
192 192
193 193 .. code-block:: ipython
194 194
195 195 my_files = !ls ~/
196 196 for i, file in enumerate(my_files):
197 197 raw = !echo $backup $file
198 198 !cp $file {file.split('.')[0] + '.bak'}
199 199
200 200
201 201 Magics
202 202 ------
203 203
204 204 Magic functions (magics) are often present in the form of shell-like syntax, but they are
205 205 python functions under the hood. The syntax and assignment possibilities are
206 206 similar to the one with the bang (``!``) syntax, but with more flexibility and
207 207 power. Magic functions start with a percent sign (``%``) or double percent signs (``%%``).
208 208
209 209 A magic call with a single percent sign will act only on one line:
210 210
211 211 .. code-block:: ipython
212 212
213 213 In[1]: %xmode
214 214 Exception reporting mode: Verbose
215 215
216 216 Magics support assignment:
217 217
218 218 .. code-block:: ipython
219 219
220 220 In [1]: results = %timeit -r1 -n1 -o list(range(1000))
221 221 1 loops, best of 1: 21.1 µs per loop
222 222
223 223 In [2]: results
224 224 Out[2]: <TimeitResult : 1 loops, best of 1: 21.1 µs per loop>
225 225
226 226 Magics with double percent signs (``%%``) can spread over multiple lines, but they do not support assignments:
227 227
228 228 .. code-block:: ipython
229 229
230 230 In[1]: %%bash
231 231 ... : echo "My shell is:" $SHELL
232 232 ... : echo "My disk usage is:"
233 233 ... : df -h
234 234 My shell is: /usr/local/bin/bash
235 235 My disk usage is:
236 236 Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
237 237 /dev/disk1 233Gi 216Gi 16Gi 94% 56788108 4190706 93% /
238 238 devfs 190Ki 190Ki 0Bi 100% 656 0 100% /dev
239 239 map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
240 240 map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /hom
241
242
243 ..
244 Combining it all
245 ----------------
246
247 ::
248
249 find a snippet that combine all that into one thing!
General Comments 0
You need to be logged in to leave comments. Login now