Видео надо смотреть с 25-ой минуты (IPython in Depth, SciPy2013 Tutorial, Part 1 of 3 )... Как получать помощь (? ?? %quickref ...), история , i, _7, %history -n 1-5, files=!ls, !echo
When executing code in IPython, all valid Python syntax works as-is, but IPython provides a number of features designed to make the interactive experience more fluid and efficient.
First things first: running code, getting help¶
In the notebook, to run a cell of code, hit
Shift-Enter
. This executes the cell and puts the cursor in the next cell below, or makes a new one if you are at the end. Alternately, you can use:Alt-Enter
to force the creation of a new cell unconditionally (useful when inserting new content in the middle of an existing notebook).Control-Enter
executes the cell and keeps the cursor in the same cell, useful for quick experimentation of snippets that you don't need to keep permanently.
In [1]:
print "Hi"
Getting help:
In [2]:
?
Typing
object_name?
will print all sorts of details about any object, including docstrings, function definition lines (for call arguments) and constructor details for classes.
In [3]:
import collections
collections.namedtuple?
In [4]:
collections.Counter??
In [5]:
*int*?
An IPython quick reference card:
In [6]:
%quickref
Tab completion¶
Tab completion, especially for attributes, is a convenient way to explore the structure of any object you’re dealing with. Simply type
object_name.<TAB>
to view the object’s attributes. Besides Python objects and keywords, tab completion also works on file and directory names.
In [44]:
collections.
The interactive workflow: input, output, history¶
In [7]:
2+10
Out[7]:
In [8]:
_+10
Out[8]:
You can suppress the storage and rendering of output if you append
;
to the last cell (this comes in handy when plotting with matplotlib, for example):
In [9]:
10+20;
In [10]:
_
Out[10]:
The output is stored in
_N
and Out[N]
variables:
In [11]:
_7 == Out[7]
Out[11]:
And the last three have shorthands for convenience:
In [12]:
print 'last output:', _
print 'next one :', __
print 'and next :', ___
In [13]:
In[11]
Out[13]:
In [14]:
_i
Out[14]:
In [15]:
_ii
Out[15]:
In [16]:
print 'last input:', _i
print 'next one :', _ii
print 'and next :', _iii
In [17]:
%history -n 1-5
Exercise
Write the last 10 lines of history to a file named
Write the last 10 lines of history to a file named
log.py
.Accessing the underlying operating system¶
In [18]:
!pwd
In [19]:
files = !ls
print "My current directory's files:"
print files
In [20]:
!echo $files
In [21]:
!echo {files[0].upper()}
Beyond Python: magic functions¶
The IPyhton 'magic' functions are a set of commands, invoked by prepending one or two
%
signs to their name, that live in a namespace separate from your normal Python variables and provide a more command-like interface. They take flags with --
and arguments without quotes, parentheses or commas. The motivation behind this system is two-fold:- To provide an orthogonal namespace for controlling IPython itself and exposing other system-oriented functionality.
- To expose a calling mode that requires minimal verbosity and typing while working interactively. Thus the inspiration taken from the classic Unix shell style for commands.
In [22]:
%magic
Line vs cell magics:
In [23]:
%timeit range(10)
In [24]:
%%timeit
range(10)
range(100)
Line magics can be used even inside code blocks:
In [25]:
for i in range(5):
size = i*100
print 'size:',size,
%timeit range(size)
Magics can do anything they want with their input, so it doesn't have to be valid Python:
In [26]:
%%bash
echo "My shell is:" $SHELL
echo "My memory status is:"
free
Another interesting cell magic: create any file you want locally from the notebook:
In [27]:
%%writefile test.txt
This is a test file!
It can contain anything I want...
And more...
In [28]:
!cat test.txt
Let's see what other magics are currently defined in the system:
In [29]:
%lsmagic
Out[29]:
Running normal Python code: execution and errors¶
Notonly can you input normal Python code, you can even paste straight from a Python or IPython shell session:
In [30]:
>>> # Fibonacci series:
... # the sum of two elements defines the next
... a, b = 0, 1
>>> while b < 10:
... print b
... a, b = b, a+b
In [31]:
In [1]: for i in range(10):
...: print i,
...:
And when your code produces errors, you can control how they are displayed with the
%xmode
magic:
In [32]:
%%writefile mod.py
def f(x):
return 1.0/(x-1)
def g(y):
return f(y+1)
Now let's call the function
g
with an argument that would produce an error:
In [33]:
import mod
mod.g(0)
In [34]:
%xmode plain
mod.g(0)
In [35]:
%xmode verbose
mod.g(0)
The default
%xmode
is "context", which shows additional context but not all local variables. Let's restore that one for the rest of our session.
In [36]:
%xmode context
Raw Input in the notebook¶
Since 1.0 the IPython notebook web application support
raw_input
which for example allow us to invoke the %debug
magic in the notebook:
In [37]:
mod.g(0)
In [38]:
%debug
Don't foget to exit your debugging session. Raw input can of course be use to ask for user input:
In [39]:
enjoy = raw_input('Are you enjoying this tutorial ?')
print 'enjoy is :', enjoy
Plotting in the notebook¶
This imports numpy as
np
and matplotlib's plotting routines as plt
, plus setting lots of other stuff for you to work interactivel very easily:
In [40]:
%matplotlib inline
In [41]:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import gcf
In [42]:
x = np.linspace(0, 2*np.pi, 300)
y = np.sin(x**2)
plt.plot(x, y)
plt.title("A little chirp")
f = gcf() # let's keep the figure object around for later...
The IPython kernel/client model¶
In [43]:
%connect_info
In [83]:
%qtconsole
Посты чуть ниже также могут вас заинтересовать
Комментариев нет:
Отправить комментарий