{ "metadata": { "name": "variables" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import Image\n", "Image('https://raw.github.com/iguananaut/notebooks/master/images/Python_Variables_Cmap.png')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "png": "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\n", "prompt_number": 17, "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "a = 5\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "b = a\n", "print b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "a = 8\n", "print 'a is', a\n", "print 'b is still', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is 8\n", "b is still 5\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "a = a + 1\n", "print 'a is now', a\n", "print 'b is still', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is now 9\n", "b is still 5\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "a = [1, 2, 3]\n", "b = a\n", "print 'a is', a\n", "print 'b is', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is [1, 2, 3]\n", "b is [1, 2, 3]\n" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "a[0] = 42\n", "print 'a is now', a\n", "print 'b is also', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is now [42, 2, 3]\n", "b is also [42, 2, 3]\n" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "a = 5\n", "b = a\n", "print 'a is', a\n", "print 'b is', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is 5\n", "b is 5\n" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "a += 1\n", "print 'a is now', a\n", "print 'b is still', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is now 6\n", "b is still 5\n" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "a = [1, 2, 3]\n", "b = a\n", "print 'a is', a\n", "print 'b is', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is [1, 2, 3]\n", "b is [1, 2, 3]\n" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "a += [4, 5, 6]\n", "print 'a is now', a\n", "print 'b is also', b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a is now [1, 2, 3, 4, 5, 6]\n", "b is also [1, 2, 3, 4, 5, 6]\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Why did the list update in place, but not the integer?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mutable vs. Immutable Types\n", "\n", "In Python, some objects types are considered \"mutable\", while others are considered \"immutable\". Immutable objects include single values such as strings, integers, and floating point numbers, as well as a few containers like tuples. Immutable objects can never be updated in place--operations on immutable objects always return a new object of the same type. For example when we did\n", "\n", " a = 5\n", " b = a\n", " a += 1\n", "\n", "the value `5` was not added to in place. Rather, this was equivalent to:\n", "\n", " a = a + 1\n", "\n", "Where the expression `a + 1` returns a new integer object `6`. But the `b` variable is still pointing to the original value of `a`, which was the immutable `5` object.\n", "\n", "Mutable objects are usually container types such as `list` and `dict` that can have their contents updated in place. So in place operations such as when we did\n", "\n", " a = [1, 2, 3]\n", " b = a\n", " a += [4, 5, 6]\n", "\n", "are allowed to modify the object pointed to by `a`. The `b` variable is still pointing to the same object as `a` so it sees the updates as well." ] } ], "metadata": {} } ] }