Last active
December 16, 2016 06:31
-
-
Save ony/9bc2d3d5f8eb32aeb1fd434f36293aa0 to your computer and use it in GitHub Desktop.
Just review of python basic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "slide" | |
| } | |
| }, | |
| "source": [ | |
| "## Variables, statements" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "47\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "var1 = 42\n", | |
| "var1 += var1 * 12 / 100 # in python3 will be float\n", | |
| "print var1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "NameError", | |
| "evalue": "name 'var1' is not defined", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-2-2ebe64d58721>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mdel\u001b[0m \u001b[0mvar1\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mvar1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
| "\u001b[0;31mNameError\u001b[0m: name 'var1' is not defined" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "del var1; print var1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "slide" | |
| } | |
| }, | |
| "source": [ | |
| "## Builtin data types / collections" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(int,\n", | |
| " float,\n", | |
| " complex,\n", | |
| " str,\n", | |
| " unicode,\n", | |
| " 'Escaped \"string\"',\n", | |
| " 'Raw \\\\\"string\\\\\"',\n", | |
| " 'single quotes',\n", | |
| " 'tripple quotes',\n", | |
| " 'triple single quotes',\n", | |
| " 16,\n", | |
| " 8,\n", | |
| " 2)" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "(type(2), type(3.), type(3+1j), type(\"String\"), type(u\"Unicode string\"),\n", | |
| " \"Escaped \\\"string\\\"\", r\"Raw \\\"string\\\"\", # escapes\n", | |
| " 'single quotes', \"\"\"tripple quotes\"\"\", '''triple single quotes''',\n", | |
| " 0x10, 0o10, 0b10 # numbers\n", | |
| ")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "{'loc': {'x': 1, 'y': 2},\n", | |
| " 'people': [('John', 35), ('Henry', 40)],\n", | |
| " 'tags': {'it', 'python'}}" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "{\"people\": [(\"John\", 35), (\"Henry\", 40)], # list of tuples\n", | |
| " \"loc\": {\"x\":1, \"y\":2}, # dict\n", | |
| " \"tags\": {\"it\", \"python\"} # set\n", | |
| "}" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "subslide" | |
| } | |
| }, | |
| "source": [ | |
| "### List operations" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[1, 2, 3, 4]\n", | |
| "[1, 'a', 'b', 'c', 4]\n", | |
| "[1, 'a', 'b', 'c']\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "list1 = [1, 2, 3]\n", | |
| "list1.append(4); print list1\n", | |
| "list1[1:3] = \"abc\"; print list1\n", | |
| "print list1[:-1]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[1, 'a', 'b', 'c', 4, 0, 2, 4, 6, 8]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "list1.extend(range(0, 10, 2)); print list1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "['Begin', 1, 'a', 'b', 'c', 4, 0, 2, 4, 6, 8, '-', '-']\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print [\"Begin\"] + list1 + [\"-\"]*2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[0, 1, 2, 4, 4, 6, 8, 'a', 'b', 'c']\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "list1.sort(); print list1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "subslide" | |
| } | |
| }, | |
| "source": [ | |
| "### Dictionary operations" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{'a': 2, 'c': 4, 'b': 2}\n", | |
| "2\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "dict1 = {'a': 1, 'b': 2}\n", | |
| "dict1['a'] = 2; dict1.setdefault('b', 3); dict1.setdefault('c', 4)\n", | |
| "print dict1\n", | |
| "print dict1['a']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "KeyError", | |
| "evalue": "'d'", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-10-031bb2effc7f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mdict1\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'd'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
| "\u001b[0;31mKeyError\u001b[0m: 'd'" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print dict1['d']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "(None, 2)" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "dict1.get('d'), dict1.get('a')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "slide" | |
| } | |
| }, | |
| "source": [ | |
| "## Control-flow" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{'a': 2, 'c': 4, 'b': 2}\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "if dict1: print dict1\n", | |
| "else:\n", | |
| " print \"empty dict1\"" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 31, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "| 0 | 0 |\n", | |
| "| 1 | 1 |\n", | |
| "| 2 | 2 |\n", | |
| "| 3 | 4 |\n", | |
| "| 4 | 4 |\n", | |
| "| 5 | 6 |\n", | |
| "| 6 | 8 |\n", | |
| "| 7 | 'a' |\n", | |
| "| 8 | 'b' |\n", | |
| "| 9 | 'c' |\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "for i, x in enumerate(list1):\n", | |
| " print \"| %4d | %-10r |\" % (i, x)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "3\n", | |
| "9\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "i = 0\n", | |
| "while i < 10:\n", | |
| " i += 3\n", | |
| " if (i % 2) == 0: continue\n", | |
| " print i" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "slide" | |
| } | |
| }, | |
| "source": [ | |
| "## Functions" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "120" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "def fact(n):\n", | |
| " return 1 if n == 0 else n * fact(n-1)\n", | |
| "fact(5)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]" | |
| ] | |
| }, | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "def fib(n, init=(1, 1)):\n", | |
| " if n < 2: return init[n]\n", | |
| " else: return fib(n-1, init=(init[1], sum(init)))\n", | |
| "[fib(k) for k in range(10)]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "subslide" | |
| } | |
| }, | |
| "source": [ | |
| "### Keyword global" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 29, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "ename": "UnboundLocalError", | |
| "evalue": "local variable 'last_id' referenced before assignment", | |
| "output_type": "error", | |
| "traceback": [ | |
| "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
| "\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)", | |
| "\u001b[0;32m<ipython-input-29-44cd0a45576c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mlast_id\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mlast_id\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mget_id\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
| "\u001b[0;32m<ipython-input-29-44cd0a45576c>\u001b[0m in \u001b[0;36mget_id\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mlast_id\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_id\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mlast_id\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mlast_id\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mget_id\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
| "\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'last_id' referenced before assignment" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "last_id = 0\n", | |
| "def get_id():\n", | |
| " last_id += 1\n", | |
| " return last_id\n", | |
| "get_id()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 30, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[1, 2, 3, 4, 5]" | |
| ] | |
| }, | |
| "execution_count": 30, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "def get_id():\n", | |
| " global last_id\n", | |
| " last_id += 1\n", | |
| " return last_id\n", | |
| "[get_id() for k in range(5)]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "slide" | |
| } | |
| }, | |
| "source": [ | |
| "## I/O\n", | |
| "```python\n", | |
| "def store(filepath, text):\n", | |
| " \"\"\"Store text to file\n", | |
| " \n", | |
| " filepath path to file\n", | |
| " text: content to store\n", | |
| " \n", | |
| " returns amount of actual bytes written to the file\"\"\"\n", | |
| " with open(filepath, \"w\") as fp:\n", | |
| " fp.write(text)\n", | |
| " return fp.tell()\n", | |
| "```" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "source": [ | |
| "```python\n", | |
| "def chunked_read(filepath, chunk_size=4096):\n", | |
| " \"\"\"Generate stream of chunks read from file\"\"\"\n", | |
| " with open(filepath, \"rb\") as fp:\n", | |
| " while True:\n", | |
| " chunk = fp.read(chunk_size)\n", | |
| " if len(chunk) == 0: break # end of file\n", | |
| " yield chunk\n", | |
| "```" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "subslide" | |
| } | |
| }, | |
| "source": [ | |
| "### Filesystem example\n", | |
| "```python\n", | |
| "import os, os.path\n", | |
| "for entry in os.listdir('.'):\n", | |
| " if os.path.isdir(entry): t = 'd'\n", | |
| " elif os.path.islink(entry): t = 'l'\n", | |
| " else: t = '-'\n", | |
| " print '%c %s' % (t, entry)\n", | |
| "```" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "slide" | |
| } | |
| }, | |
| "source": [ | |
| "## Exceptions" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 37, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "No such key 'abc'\n", | |
| "Do this regardless of exceptions/returns/breaks\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "try:\n", | |
| " dict1['abc']\n", | |
| "except KeyError as e:\n", | |
| " print \"No such key %r\" % (e.args[0],)\n", | |
| "finally:\n", | |
| " print \"Do this regardless of exceptions/returns/breaks\"" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 39, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "fragment" | |
| } | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Hi\n", | |
| "there\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "try:\n", | |
| " print \"Hi\"\n", | |
| "except: pass\n", | |
| "else:\n", | |
| " print \"there\"" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "celltoolbar": "Slideshow", | |
| "kernelspec": { | |
| "display_name": "Python 2", | |
| "language": "python", | |
| "name": "python2" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 2 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython2", | |
| "version": "2.7.11" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment