##// END OF EJS Templates
fix mistakes introduced, and a few additional words
Mark Schmitz -
Show More
@@ -1,249 +1,249 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_file):
50 50 ...: raw = !echo $file
51 51 ...: !echo {files[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 do most of the time what you expect it will do. Let see each of these examples
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 name-space will show help relative to this object:
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 If you are looking for an object the use of wildcards ``*`` in conjunction
130 with a question mark will allow you to search the current name-space for objects with
129 If you are looking for an object, the use of wildcards ``*`` in conjunction
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 When doing interactive computing it is a common need is accessing the underlying shell.
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 b = "backup file"
197 197 for i,file in enumerate(my_file):
198 198 raw = !echo $backup $file
199 199 !cp $file {file.split('.')[0]+'.bak'}
200 200
201 201
202 202 Magics
203 203 ------
204 204
205 Magics function are often present in the form of shell-like syntax, but they are
205 Magic functions (magics) are often present in the form of shell-like syntax, but they are
206 206 python functions under the hood. The syntax and assignment possibilities are
207 207 similar to the one with the bang (``!``) syntax, but with more flexibility and
208 power. Magic functions start with a percent sign (``%``) or double percent (``%%``).
208 power. Magic functions start with a percent sign (``%``) or double percent signs (``%%``).
209 209
210 A magic call with a percent sign will act only on one line:
210 A magic call with a single percent sign will act only on one line:
211 211
212 212 .. code-block:: ipython
213 213
214 214 In[1]: %xmode
215 215 Exception reporting mode: Verbose
216 216
217 217 Magics support assignment:
218 218
219 219 .. code-block:: ipython
220 220
221 221 In [1]: results = %timeit -r1 -n1 -o list(range(1000))
222 222 1 loops, best of 1: 21.1 µs per loop
223 223
224 224 In [2]: results
225 225 Out[2]: <TimeitResult : 1 loops, best of 1: 21.1 µs per loop>
226 226
227 227 Magics with double percent signs (``%%``) can spread over multiple lines, but they do not support assignments:
228 228
229 229 .. code-block:: ipython
230 230
231 231 In[1]: %%bash
232 232 ... : echo "My shell is:" $SHELL
233 233 ... : echo "My disk usage is:"
234 234 ... : df -h
235 235 My shell is: /usr/local/bin/bash
236 236 My disk usage is:
237 237 Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
238 238 /dev/disk1 233Gi 216Gi 16Gi 94% 56788108 4190706 93% /
239 239 devfs 190Ki 190Ki 0Bi 100% 656 0 100% /dev
240 240 map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
241 241 map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /hom
242 242
243 243
244 244 Combining it all
245 245 ----------------
246 246
247 247 ::
248 248
249 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