##// END OF EJS Templates
Address @takluyver's comments.
Address @takluyver's comments.

File last commit:

r15704:c5ed6aa8
r16224:8135baef
Show More
Part 1 - Running Code.ipynb
471 lines | 54.3 KiB | text/plain | TextLexer
/ examples / notebooks / Part 1 - Running Code.ipynb

Running Code in the IPython Notebook¶

First and foremost, the IPython Notebook is an interactive environment for writing and running Python code.

Code cells allow you to enter and run Python code¶

<script type="text/javascript"> var _toggle=false; var hl = function (id, on){ $(id)[0].style.background = ''; if (on) { $(id)[0].style.background = 'lightcyan'; } }; </script>

Run a code cell using shift-enter or pressing the <button></button> button in the toolbar above:

In [10]:
a = 10
In [11]:
print(a)
10

Managing the IPython Kernel¶

Code is run in a separate process called the IPython Kernel. The Kernel can be interrupted or restarted. Try running the following cell and then hit the <button></button> button in the toolbar above.

In [16]:
import time
time.sleep(10)
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-16-d7b436e260d5> in <module>()
      1 import time
----> 2 time.sleep(10)

KeyboardInterrupt: 

If the Kernel dies you will be prompted to restart it. Here we call the low-level system libc.time routine with the wrong argument via ctypes to segfault the Python interpreter:

In [ ]:
import sys
from ctypes import CDLL
# This will crash a Linux or Mac system; equivalent calls can be made on Windows
dll = 'dylib' if sys.platform == 'darwin' else 'so.6'
libc = CDLL("libc.%s" % dll) 
libc.time(-1)  # BOOM!!

All of the goodness of IPython works¶

Here are two system aliases:

In [4]:
pwd
Out[4]:
u'/Users/bgranger/Documents/Computation/IPython/code/ipython/examples/notebooks'
In [2]:
ls
01_notebook_introduction.ipynb        Octave Magic.ipynb
Animations Using clear_output.ipynb   PyLab and Matplotlib.ipynb
Basic Output.ipynb                    R Magics.ipynb
Custom Display Logic.ipynb            Running Code.ipynb
Cython Magics.ipynb                   Script Magics.ipynb
Data Publication API.ipynb            SymPy Examples.ipynb
Display System.ipynb                  Trapezoid Rule.ipynb
JS Progress Bar.ipynb                 Typesetting Math Using MathJax.ipynb
Local Files.ipynb                     animation.m4v
Markdown Cells.ipynb                  python-logo.svg
Notebook Tour.ipynb

Any command line program can be run using ! with string interpolation from Python variables:

In [ ]:
message = 'The IPython notebook is great!'
# note: the echo command does not run on Windows, it's a unix command.
!echo $message

Tab completion works:

In [9]:
import numpy
numpy.random.

Shift-Tab on selection, or after ( brings up a tooltip with the docstring:

In [ ]:
numpy.random.rand(

Adding ? opens the docstring in the pager below:

In [8]:
magic?

Exceptions are formatted nicely:

In [15]:
x = 1
y = 4
z = y/(1-x)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-15-dc39888fd1d2> in <module>()
      1 x = 1
      2 y = 4
----> 3 z = y/(1-x)

ZeroDivisionError: integer division or modulo by zero

Working with external code¶

There are a number of ways of getting external code into code cells.

Pasting code with &gt;&gt;&gt; prompts works as expected:

In [1]:
>>> the_world_is_flat = 1
>>> if the_world_is_flat:
...     print("Be careful not to fall off!")
Be careful not to fall off!

The %load magic lets you load code from URLs or local files:

In [14]:
%load?
In [1]:
%matplotlib inline
In [2]:
%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py
In [3]:
"""
Plot demonstrating the integral as the area under a curve.

Although this is a simple example, it demonstrates some important tweaks:

    * A simple line plot with custom color and line width.
    * A shaded region created using a Polygon patch.
    * A text label with mathtext rendering.
    * figtext calls to label the x- and y-axes.
    * Use of axis spines to hide the top and right spines.
    * Custom tick placement and labels.
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon


def func(x):
    return (x - 3) * (x - 5) * (x - 7) + 85


a, b = 2, 9 # integral limits
x = np.linspace(0, 10)
y = func(x)

fig, ax = plt.subplots()
plt.plot(x, y, 'r', linewidth=2)
plt.ylim(ymin=0)

# Make the shaded region
ix = np.linspace(a, b)
iy = func(ix)
verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]
poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')
ax.add_patch(poly)

plt.text(0.5 * (a + b), 30, r"$\int_a^b f(x)\mathrm{d}x$",
         horizontalalignment='center', fontsize=20)

plt.figtext(0.9, 0.05, '$x$')
plt.figtext(0.1, 0.9, '$y$')

ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.xaxis.set_ticks_position('bottom')

ax.set_xticks((a, b))
ax.set_xticklabels(('$a$', '$b$'))
ax.set_yticks([])

plt.show()
No description has been provided for this image