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