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