{ "metadata": { "name": "", "signature": "sha256:da4f5ed1a9094f0edfa89edf77dd61f3510045b870013f64459e17b120920a36" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "***\n", "# 10. \ud568\uc218\n", "***\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 01 \ud568\uc218\ub780\n", "***\n", "- \ud568\uc218: \uc5ec\ub7ec \uac1c\uc758 Statement\ub4e4\uc744 \ud558\ub098\ub85c \ubb36\uc740 \ub2e8\uc704\n", "- \ud568\uc218 \uc0ac\uc6a9\uc758 \uc7a5\uc810\n", " - \ubc18\ubcf5\uc801\uc778 \uc218\ud589\uc774 \uac00\ub2a5\ud558\ub2e4\n", " - \ucf54\ub4dc\ub97c \ub17c\ub9ac\uc801\uc73c\ub85c \uc774\ud574\ud558\ub294 \ub370 \ub3c4\uc6c0\uc744 \uc900\ub2e4\n", " - \ucf54\ub4dc\uc758 \uc77c\uc815 \ubd80\ubd84\uc744 \ubcc4\ub3c4\uc758 \ub17c\ub9ac\uc801 \uac1c\ub150\uc73c\ub85c \ub3c5\ub9bd\ud654\ud560 \uc218 \uc788\uc74c\n", " - \uc218\ud559\uc5d0\uc11c \ubcf5\uc7a1\ud55c \uac1c\ub150\uc744 \ud558\ub098\uc758 \ub2e8\uc21c\ud55c \uae30\ud638\ub85c \ub300\uce58\ud558\ub294 \uac83\uacfc \ube44\uc2b7" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc218\ud559\uc758 \uc2ec\ubcfc\uacfc \ud568\uc218\uc758 \uc720\uc0ac\uc131\n", " - \ud568\uc218\ub97c \uc798 \uc0ac\uc6a9\ud558\uba74 \uc804\uccb4\uc801\uc73c\ub85c \ucf54\ub4dc\uac00 \ub17c\ub9ac\uc801\uc73c\ub85c \uc798 \ubd84\ub9ac\ub418\uc5b4 \ucf54\ub4dc\uc758 \uac00\ub3c5\uc131\uc774 \ub192\uc544\uc9c4\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import math\n", "\n", "x1 = (-b + math.sqrt(b*b - 4*a*c)) / (2.0*a)\n", "x2 = (-b - math.sqrt(b*b - 4*a*c)) / (2.0*a)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "D = b*b - 4*a*c\n", "a2 = 2 * a\n", "sd = math.sqrt(D)\n", "x1 = (-b + sd) / a2\n", "x2 = (-b - sd) /a2" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1-1 \uac04\ub2e8\ud55c \ud568\uc218\uc758 \uc815\uc758\n", "- \ud568\uc218 \uc815\uc758\uc2dc \uc0ac\uc6a9\ud558\ub294 \ud0a4\uc6cc\ub4dc: def" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def add(a, b):\n", " return a+b\n", "\n", "print add(1, 2)\n", "print\n", "\n", "def myabs(x):\n", " if x < 0 : x = -x\n", " return x\n", "\n", "print abs(-4)\n", "print myabs(-4)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "3\n", "\n", "4\n", "4\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \ub0b4\uc5d0\uc11c \ub2e4\ub978 \ud568\uc218\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\uc74c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def addabs(a, b):\n", " c = add(a, b)\n", " return myabs(c)\n", "\n", "addabs(-5, -7)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "12" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 02 \ud568\uc218\uc758 \uc815\uc758\uc640 \ud638\ucd9c\n", "***\n", "- \ud568\uc218\uc758 \uc774\ub984 \uc790\uccb4\ub294 \ud568\uc218 \uac1d\uccb4\uc758 \ub808\ud37c\ub7f0\uc2a4(Reference)\ub97c \uc9c0\ub2c8\uace0 \uc788\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def add(a, b):\n", " return a+b\n", "\n", "add" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "c = add(10, 30)\n", "print c" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "40\n" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "40 + add(5,10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 36, "text": [ "55" ] } ], "prompt_number": 36 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc774\ub984\uc5d0 \uc800\uc7a5\ub41c \ub808\ud37c\ub7f0\uc2a4\ub97c \ub2e4\ub978 \ubcc0\uc218\uc5d0 \ud560\ub2f9\ud558\uc5ec \uadf8 \ubcc0\uc218\ub97c \uc774\uc6a9\ud55c \ud568\uc218 \ud638\ucd9c \uac00\ub2a5 " ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = add\n", "print f(4, 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "9\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "print f\n", "\n", "print f is add" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "True\n" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218\uc758 \ubab8\uccb4\uc5d0\ub294 \ucd5c\uc18c\ud55c \ud55c\uac1c \uc774\uc0c1\uc758 statement\uac00 \uc874\uc7ac\ud574\uc57c \ud568\n", " - \uc544\ubb34\ub7f0 \ub0b4\uc6a9\uc774 \uc5c6\ub294 \ubab8\uccb4\ub97c \uc9c0\ub2cc \ud568\uc218\ub97c \ub9cc\ub4e4 \ub54c\uc5d0\ub294 pass \ub77c\ub294 \ud0a4\uc6cc\ub4dc\ub97c \ubab8\uccb4\uc5d0 \uc801\uc5b4\uc8fc\uc5b4\uc57c \ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def simple():\n", " pass\n", "\n", "simple()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc0ac\uc6a9 \uc608" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def addmember(memberlist, newmember):\n", " if newmember not in memberlist: # \uae30\uc874 \uba64\ubc84\uac00 \uc544\ub2c8\uba74\n", " memberlist.append(newmember) # \ucd94\uac00\n", "\n", "#\ub9ac\uc2a4\ud2b8\uc5d0 \ucd08\uae30 \uba64\ubc84 \uc124\uc815\n", "members = ['kim', 'lee', 'park', 'youn']\n", "\n", "# \uc0c8\ub85c\uc6b4 \uba64\ubc84 \ucd94\uac00\n", "addmember(members, 'jo')\n", "\n", "# (\uc774\ubbf8 \uc874\uc7ac\ud558\ub294) \uc0c8\ub85c\uc6b4 \uba64\ubc84 \ucd94\uac00\n", "addmember(members, 'kim')\n", "\n", "print members" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['kim', 'lee', 'park', 'youn', 'jo']\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc704 addmember\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ud655\uc7a5\n", " - \ub450\ubc88\uc9f8 newmember\uc778\uc790\uc5d0 \ub9ac\uc2a4\ud2b8\ub098 \ud29c\ud50c\uc774 \uc778\uc218\ub85c \uc804\ub2ec\ub418\uba74 \ud569\uc9d1\ud569 \uc5f0\uc0b0 \uc218\ud589\n", " - \ub450\ubc88\uc9f8 newmember\uc778\uc790\uc5d0 \ubb38\uc790\uc5f4 \uc6d0\uc18c\uac00 \uc804\ub2ec\ub418\uba74 \uc9d1\ud569\uc5d0 \ucd94\uac00\n", " - \ub450\ubc88\uc9f8 newmember\uc778\uc790 \uc774\ub984\uc740 newmembers\ub85c \ubcc0\uacbd" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def addmember(memberlist, newmembers):\n", " if type(newmembers) not in (type([]), type(())):\n", " newmembers = [newmembers]\n", " for m in newmembers:\n", " if m not in memberlist: #\uae30\uc874 \uba64\ubc84\uac00 \uc544\ub2c8\uba74\n", " memberlist.append(m) #\ucd94\uac00!\n", "\n", "members = ['kim', 'lee', 'park', 'youn']\n", "\n", "addmember(members, 'jung')\n", "print members\n", "\n", "addmember(members, 'lee')\n", "print members\n", "\n", "addmember(members, ['kim', 'jo', 'jae'])\n", "print members\n", "\n", "addmember(members, ('sang', 'oh', 'jae'))\n", "print members" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['kim', 'lee', 'park', 'youn', 'jung']\n", "['kim', 'lee', 'park', 'youn', 'jung']\n", "['kim', 'lee', 'park', 'youn', 'jung', 'jo', 'jae']\n", "['kim', 'lee', 'park', 'youn', 'jung', 'jo', 'jae', 'sang', 'oh']\n" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 03 \uc778\uc218 \uc804\ub2ec\ubc29\ubc95\n", "***\n", "- \ud30c\uc774\uc36c\uc5d0\uc11c\uc758 \uc778\uc218 \uc804\ub2ec \ubc29\ubc95\n", " - \uae30\ubcf8\uc801\uc73c\ub85c \uac12\uc5d0 \uc758\ud55c \ud638\ucd9c(Call-by-Value)\n", " - \ud558\uc9c0\ub9cc \ubcc0\uc218\uc5d0 \uc800\uc7a5\ub41c \uac12\uc774 \ucc38\uc870\uac12(Reference)\uc774\ubbc0\ub85c \uc2e4\uc81c\ub85c\ub294 \ucc38\uc870\uc5d0 \uc758\ud55c \ud638\ucd9c(Call-by-Reference)\ub85c \uc2e4\ud589\ub428" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc778\uc790\uc5d0 \ubcc0\uacbd\ubd88\uac00\ub2a5(Immutable) \uac1d\uccb4\uc778 \uc22b\uc790\uac12\uc744 \uc804\ub2ec\n", " - \ud568\uc218 \ub0b4\uc5d0\uc11c \ub2e4\ub978 \uc22b\uc790\uac12\uc73c\ub85c \uce58\ud658 --> \uc758\ubbf8 \uc5c6\ub294 \uc778\uc790 \uc804\ub2ec" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f1(b):\n", " b = 100\n", "\n", "a = 200\n", "f1(a)\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "200\n" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/function_arg_int.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc778\uc790\uc5d0 \ubcc0\uacbd\ubd88\uac00\ub2a5(Immutable) \uac1d\uccb4\uc778 \ubb38\uc790\uc5f4\uc744 \uc804\ub2ec\n", " - \ud568\uc218 \ub0b4\uc5d0\uc11c \ub2e4\ub978 \ubb38\uc790\uc5f4\ub85c \uce58\ud658 --> \uc758\ubbf8 \uc5c6\ub294 \uc778\uc790 \uc804\ub2ec" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f2(b):\n", " b = \"abc\"\n", "\n", "a = \"def\"\n", "f2(a)\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "def\n" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/function_arg_str.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc778\uc790\uc5d0 \ubcc0\uacbd\ubd88\uac00\ub2a5(Immutable) \uac1d\uccb4\uc778 \ud29c\ud50c\uc744 \uc804\ub2ec\n", " - \ud568\uc218 \ub0b4\uc5d0\uc11c \ub2e4\ub978 \ud29c\ud50c\ub85c \uce58\ud658 --> \uc758\ubbf8 \uc5c6\ub294 \uc778\uc790 \uc804\ub2ec" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f3(b):\n", " b = (1,2,3)\n", "\n", "a = (4,5,6)\n", "f3(a)\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(4, 5, 6)\n" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/function_arg_tuple.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc778\uc790\uc5d0 \ubcc0\uacbd\uac00\ub2a5\ud55c(Mutable)\ud55c \uac1d\uccb4\uc778 \ub9ac\uc2a4\ud2b8 \uc804\ub2ec \ubc0f \ub0b4\uc6a9 \uc218\uc815\n", " - \uc804\ud615\uc801\uc778 \ud568\uc218 \uc778\uc790 \uc804\ub2ec\ubc95 \ubc0f \ud65c\uc6a9\ubc95" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f4(b):\n", " b[1] = 10\n", "\n", "a = [4,5,6]\n", "f4(a)\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[4, 10, 6]\n" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/function_arg_list.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc778\uc790\uc5d0 \ubcc0\uacbd\uac00\ub2a5\ud55c(Mutable)\ud55c \uac1d\uccb4\uc778 \uc0ac\uc804 \uc804\ub2ec \ubc0f \ub0b4\uc6a9 \uc218\uc815\n", " - \uc804\ud615\uc801\uc778 \ud568\uc218 \uc778\uc790 \uc804\ub2ec\ubc95 \ubc0f \ud65c\uc6a9\ubc95" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f5(b):\n", " b['a'] = 10\n", "\n", "a = {\"a\":1, \"b\":2}\n", "f5(a)\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'a': 10, 'b': 2}\n" ] } ], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/function_arg_dict.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc778\uc790\uc5d0 \ubcc0\uacbd\uac00\ub2a5\ud55c(Mutable)\ud55c \uac1d\uccb4\ub97c \uc804\ub2ec\ud558\uc5ec\ub3c4 \ud568\uc218 \ub0b4\uc5d0\uc11c \uac1d\uccb4 \uce58\ud658\uc744 \ud560 \uc218 \uc788\uc74c\n", " - \ud568\uc218 \ub0b4\uc5d0\uc11c \ub2e4\ub978 \uac1d\uccb4\ub85c \uce58\ud658 --> \uc758\ubbf8 \uc5c6\ub294 \uc778\uc790 \uc804\ub2ec" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f6(b):\n", " b = [1, 2, 3]\n", " b[1] = 10\n", "\n", "a = [4,5,6]\n", "f6(a)\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[4, 5, 6]\n" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/function_arg_list2.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 04 return\ubb38\uc5d0 \ub300\ud558\uc5ec\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4-1 \uc778\uc218\uc5c6\uc774 \ub9ac\ud134\ud558\uae30" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def nothing():\n", " return\n", "\n", "print nothing()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "None\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc778\uc218 \uc5c6\uc774 return \ubb38\uc744 \uc0ac\uc6a9\ud558\uba74 \uc2e4\uc81c\ub85c\ub294 None \uac1d\uccb4\uac00 \uc804\ub2ec\ub41c\ub2e4.\n", " - None \uac1d\uccb4: \ud30c\uc774\uc36c \ub0b4\uc7a5 \uac1d\uccb4\ub85c\uc11c \uc544\ubb34 \uac12\ub3c4 \uc5c6\uc74c\uc744 \ub098\ud0c0\ub0b4\uae30 \uc704\ud55c \uac1d\uccb4" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f():\n", " return\n", "\n", "f()\n", "a = f()\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "None\n" ] } ], "prompt_number": 47 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4-2 return\ubb38 \uc5c6\uc774 \ub9ac\ud134\ud558\uae30" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def print_menu():\n", " print '1. Snack'\n", " print '2. Snake'\n", " print '3. Snick'\n", " \n", "print_menu()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1. Snack\n", "2. Snake\n", "3. Snick\n" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- return\ubb38 \uc5c6\ub294 \ud568\uc218\ub77c\uace0 \ud560 \uc9c0\ub77c\ub3c4 \uc2e4\uc81c\ub85c\ub294 None \uac1d\uccb4\uac00 \uc804\ub2ec\ub428" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = print_menu()\n", "\n", "print a" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1. Snack\n", "2. Snake\n", "3. Snick\n", "None\n" ] } ], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4-3 \ud55c \uac1c\uc758 \uac12\uc744 \ub9ac\ud134\ud560 \ub54c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def abs(x):\n", " if x < 0 : return -x\n", " return x\n", "\n", "print abs(-10)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4-4 \ub450 \uac1c \uc774\uc0c1\uc758 \uac12\uc744 \ub9ac\ud134\ud560 \ub54c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def swap(x, y):\n", " return y, x # \ud29c\ud50c\ub85c \ub9ac\ud134\ub41c\ub2e4.\n", "\n", "a = 10\n", "b = 20\n", "print a, b\n", "print \n", "\n", "a, b = swap(a, b) # \uacb0\uacfc\uc801\uc73c\ub85c a, b = b, a\uc640 \ub3d9\uc77c\n", "print a, b\n", "print\n", "\n", "a = 10\n", "b = 20\n", "x = swap(a, b)\n", "print x[0], x[1] # \ud558\ub098\uc758 \uc774\ub984\uc73c\ub85c \ud29c\ud50c\uc744 \ubc1b\uc544\uc11c \ucc98\ub9ac\ud560 \uc218 \ub3c4\uc788\ub2e4." ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 20\n", "\n", "20 10\n", "\n", "20 10\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ub0b4\uc7a5 \ud568\uc218 divmod\ub294 \ub450 \uc22b\uc790\ub97c \uc778\uc790\ub85c \ubc1b\uc544\uc11c \ubaab\uacfc \ub098\uba38\uc9c0\ub97c \ud29c\ud50c\ub85c \ub9ac\ud134\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print divmod(9, 5)\n", "print\n", "\n", "a, b = divmod(9, 5)\n", "print a, b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(1, 4)\n", "\n", "1 4\n" ] } ], "prompt_number": 47 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0c8\ub85c\uc6b4 \ub9ac\uc2a4\ud2b8\ub97c \ub9ac\ud134\ud558\ub294 \ud568\uc218 \uc608\n", " - \ubb38\uc790\uc5f4 \ub9ac\uc2a4\ud2b8\ub97c \ubc1b\uc544\uc11c \uac01 \ubb38\uc790\uc5f4\uc758 \uae38\uc774 \uc815\ubcf4\ub97c \uc9c0\ub2cc \ub9ac\uc2a4\ud2b8\ub97c \ub9ac\ud134 " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def length_list(l):\n", " res = []\n", " for el in l:\n", " res.append(len(el))\n", " return res\n", "\n", "l = ['python', 'pyson', 'pythong', 'pydon']\n", "print length_list(l)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[6, 5, 7, 5]\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "l = ['python', 'pyson', 'pythong', 'pydon']\n", "print [len(s) for s in l]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[6, 5, 7, 5]\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 05 \ub3d9\uc801\uc778 \uc790\ub8cc\ud615 \uacb0\uc815\n", "***\n", "- \ud30c\uc774\uc36c\uc5d0\uc11c\ub294 \ubaa8\ub4e0 \uac1d\uccb4\ub294 \ub3d9\uc801\uc73c\ub85c (\uc2e4\ud589\uc2dc\uac04\uc5d0) \uadf8 \ud0c0\uc785\uc774 \uacb0\uc815\ub41c\ub2e4.\n", "- \uadf8\ub7ec\ubbc0\ub85c, \ud568\uc218 \uc778\uc790\ub294 \ud568\uc218\uac00 \ud638\ucd9c\ub418\ub294 \uc21c\uac04 \ud574\ub2f9 \uc778\uc790\uc5d0 \uc804\ub2ec\ub418\ub294 \uac1d\uccb4\uc5d0 \ub530\ub77c \uadf8 \ud0c0\uc785\uc774 \uacb0\uc815\ub41c\ub2e4.\n", " - \ud568\uc218 \ubab8\uccb4 \ub0b4\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \uc5ec\ub7ec\uac00\uc9c0 \uc5f0\uc0b0\uc790\ub4e4\uc740 \ud568\uc218 \ud638\ucd9c\uc2dc\uc5d0 \uacb0\uc815\ub41c \uac1d\uccb4 \ud0c0\uc785\uc5d0 \ub9de\uac8c \uc2e4\ud589\ub41c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def add(a, b):\n", " return a + b\n", "\n", "c = add(1, 3.4)\n", "d = add('dynamic', 'typing')\n", "e = add(['list'], ['and', 'list'])\n", "print c\n", "print d\n", "print e" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "4.4\n", "dynamictyping\n", "['list', 'and', 'list']\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud2b9\uc218 \ud568\uc218 \\_\\_add__\n", " - \\+ \uc5f0\uc0b0\uc790\uc758 \ud589\ub3d9 \ubc29\uc2dd\uc744 \uacb0\uc815\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class MyClass:\n", " def __add__(self, b):\n", " return 'add %s is called' % b\n", "\n", "c = MyClass()\n", "print c + 1\n", "print\n", "print c + 'abc'\n", "print\n", "print c + 'anaconda'" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "add 1 is called\n", "\n", "add abc is called\n", "\n", "add anaconda is called\n" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 06 \uc2a4\ucf54\ud551 \ub8f0(Scoping Rule)\n", "***\n", "- \uc774\ub984 \uacf5\uac04 \ub610\ub294 \uc2a4\ucf54\ud504 (Naming Space or Scope): \uc774\ub984\uc774 \uc874\uc7ac\ud558\ub294 \uc7a5\uc18c. \ud30c\uc774\uc36c\uc740 \uc2e4\ud589 \uc2dc\uac04\uc5d0 \uac01 \uc774\ub984\ub4e4\uc744 \uc801\uc808\ud55c \uc774\ub984 \uacf5\uac04\uc5d0 \ub123\uc5b4 \uad00\ub9ac\ud55c\ub2e4.\n", "- \uc774\ub984 \uacf5\uac04(\uc2a4\ucf54\ud504)\uc758 \uc885\ub958\n", " - \uc9c0\uc5ed(Local): \uac01 \ud568\uc218 \ub0b4\ubd80\n", " - \uc804\uc5ed(Global): \ubaa8\ub4c8 (\ud30c\uc77c) \ub0b4\ubd80\n", " - \ub0b4\uc7a5(Built-in): \ud30c\uc774\uc36c \uc5b8\uc5b4 \uc790\uccb4\uc5d0\uc11c \uc815\uc758\ud55c \uc601\uc5ed\n", "- \ubcc0\uc218\uc758 \uc2a4\ucf54\ud504\uac00 \uacb0\uc815\ub418\ub294 \uaddc\uce59\n", " - \ubcc0\uc218\uac00 \uc815\uc758\ub418\ub294 \uc704\uce58\uc5d0 \uc758\ud574 \uc815\ud574\uc9d0\n", " - \ud30c\uc774\uc36c\uc5d0\uc11c \ubcc0\uc218\uc758 \uc815\uc758\n", " - \ubcc0\uc218\uac00 l-value\ub85c \uc0ac\uc6a9\ub420 \ub54c\n", "- \ubcc0\uc218\uac00 r-value\ub85c \uc0ac\uc6a9\ub420 \ub54c \ud574\ub2f9 \ubcc0\uc218\uc758 \uac12\uc744 \ucc3e\ub294 \uc21c\uc11c \uaddc\uce59\n", " - L --> G --> B" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](images/scoping_rule.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-1 \uc9c0\uc5ed\ubcc0\uc218\uc640 \uc804\uc5ed\ubcc0\uc218\n", "- \ubcc0\uc218\uc758 \uc2a4\ucf54\ud504\ub294 \ud574\ub2f9 \ubcc0\uc218\uac00 l-value\ub85c\uc11c \uc815\uc758\ub418\ub294 \uc704\uce58\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9d0\n", "- \ubcc0\uc218\uac00 \ud568\uc218 \ub0b4\uc5d0\uc11c \uc815\uc758\ub418\uba74 \ud574\ub2f9 \ud568\uc218\uc758 \uc9c0\uc5ed \ubcc0\uc218\uac00 \ub41c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# g, h\ub294 \uc804\uc5ed \ubcc0\uc218\n", "g = 10\n", "h = 5\n", "\n", "def f(a): # a\ub294 \uc9c0\uc5ed \ubcc0\uc218\n", " h = a + 10 # h\ub294 \uc9c0\uc5ed, \uc0c8\ub85c l-value\ub85c \uc815\uc758\ud588\uc74c\n", " b = h + a + g # b\ub3c4 \uc9c0\uc5ed, g\ub294 r-value\uc774\ubbc0\ub85c \uae30\uc874 \uac12\uc744 \ucc38\uc870 - \uc804\uc5ed \ubcc0\uc218\n", " return b\n", "\n", "print f(h) # \ud568\uc218 \ud638\ucd9c\uc2dc\uc5d0 \uc0ac\uc6a9\ub418\ub294 \ubcc0\uc218\ub294 \ud574\ub2f9 \uc704\uce58\uc758 \uc2a4\ucf54\ud504\uc5d0\uc11c \uac12\uc744 \ucc3e\uc74c - \uc804\uc5ed \ubcc0\uc218\n", "print h # \uc804\uc5ed \ubcc0\uc218 h\ub294 \ubcc0\ud568 \uc5c6\uc74c" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "30\n", "5\n" ] } ], "prompt_number": 62 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \ub0b4\ubd80\uc5d0\uc11c \uc804\uc5ed \ubcc0\uc218\ub97c \uc9c1\uc811 \uc0ac\uc6a9\ud558\uace0\uc790 \ud560 \ub54c\n", " - global \ud0a4\uc6cc\ub4dc \ud65c\uc6a9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "h = 5\n", "\n", "def f(a): # a\ub294 \uc9c0\uc5ed\n", " global h # h \ubcc0\uc218\ub97c \uc804\uc5ed\uc774\ub77c\uace0 \ubbf8\ub9ac \uc120\uc5b8\ud568\n", " h = a + 10 # h\ub294 l-velue\ub85c \uc815\uc758\ub418\ub354\ub77c\ub3c4 \ubbf8\ub9ac \uc120\uc5b8\ub41c \ub0b4\uc6a9 \ub54c\ubb38\uc5d0 \uc804\uc5ed \ubcc0\uc218\n", " return h\n", "\n", "print f(10)\n", "print h # \uc804\uc5ed \ubcc0\uc218 h \uac12\uc774 \ud568\uc218 \ub0b4\uc5d0\uc11c \ubcc0\uacbd\ub418\uc5c8\uc74c" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "20\n", "20\n" ] } ], "prompt_number": 63 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\uc8fc\uc758] \ub3d9\uc77c \ud568\uc218 \ub0b4\uc5d0\uc11c \ub3d9\uc77c\ud55c \ubcc0\uc218\uac00 \uc9c0\uc5ed\ubcc0\uc218\uc640 \uc804\uc5ed\ubcc0\uc218\ub85c \ub3d9\uc2dc\uc5d0 \ud65c\uc6a9\ub420 \uc218 \uc5c6\uc74c\n", " - \ud568\uc218 \ub0b4\uc5d0\uc11c \uc815\uc758\ub418\ub294 \ubcc0\uc218\ub294 \uc9c0\uc5ed \ubcc0\uc218\ub85c \uac04\uc8fc\n", " - \uc9c0\uc5ed \ubcc0\uc218\ub85c \uc120\uc5b8\ub418\uae30 \uc774\uc804\uc5d0 \ud574\ub2f9 \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "g = 10\n", "\n", "def f():\n", " a = g # l-value\ub85c \uc0ac\uc6a9\ub418\ub294 g\ub294 \uc804\uc5ed \ubcc0\uc218\n", " g = 20 # r-value\ub85c \uc815\uc758\ub418\ub294 g\ub294 \uc9c0\uc5ed \ubcc0\uc218\n", " return a\n", "\n", "print f()" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "UnboundLocalError", "evalue": "local variable 'g' referenced before assignment", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mf\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\u001b[0m in \u001b[0;36mf\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mf\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----> 4\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mg\u001b[0m \u001b[0;31m# l-value\ub85c \uc0ac\uc6a9\ub418\ub294 g\ub294 \uc804\uc5ed \ubcc0\uc218\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m20\u001b[0m \u001b[0;31m# r-value\ub85c \uc815\uc758\ub418\ub294 g\ub294 \uc9c0\uc5ed \ubcc0\uc218\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'g' referenced before assignment" ] } ], "prompt_number": 68 }, { "cell_type": "code", "collapsed": false, "input": [ "g = 10\n", "\n", "def f():\n", " global g # g\ub294 \uc804\uc5ed \ubcc0\uc218\ub85c \uc120\uc5b8\ub428\n", " a = g # a\ub294 \uc9c0\uc5ed \ubcc0\uc218, g\ub294 \uc804\uc5ed \ubcc0\uc218\n", " g = 20 # g\ub294 \uc804\uc5ed \ubcc0\uc218\n", " return a\n", "\n", "print f()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 67 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-2 \ub0b4\uc7a5 \uc601\uc5ed\uc758 \uc774\ub984 \uc54c\uc544\ubcf4\uae30" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc774\ub984(Name)\n", " - \ubcc0\uc218 \uc774\ub984\n", " - \ud568\uc218 \uc774\ub984\n", " - \ud074\ub798\uc2a4 \uc774\ub984\n", " - \uac1d\uccb4 \uc774\ub984\n", " - \ubaa8\ub4c8 \uc774\ub984\n", "- dir(): \ud568\uc218\uac00 \ud638\ucd9c\ub41c \uc2a4\ucf54\ud504\uc5d0\uc11c \uc815\uc758\ub418\uc5b4 \uc788\ub294 \ubaa8\ub4e0 Name\ub4e4\uc744 \ubb38\uc790\uc5f4 \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658\ud55c\ub2e4. \n", "- dir(object): object\uc774 \uc9c0\ub2c8\uace0 \uc788\ub294 \ubaa8\ub4e0 Name\ub4e4\uc744 \ubb38\uc790\uc5f4 \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "l = []\n", "print dir(l)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']\n" ] } ], "prompt_number": 73 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \\_\\_builtins__: built-in \ubaa8\ub4c8 \uac1d\uccb4" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print __builtin__.abs(-5)\n", "\n", "print __builtin__.bool(0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n", "False\n" ] } ], "prompt_number": 75 }, { "cell_type": "code", "collapsed": false, "input": [ "print dir(__builtins__)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '__IPYTHON__', '__IPYTHON__active', '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'dreload', 'enumerate', 'eval', 'execfile', 'file', 'filter', 'float', 'format', 'frozenset', 'get_ipython', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']\n" ] } ], "prompt_number": 69 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6-3 \uc911\ucca9 \uc601\uc5ed(Nested Scopes) \uc9c0\uc6d0\n", "- Nested Scope: \ud568\uc218 \uc548\uc5d0 \uc815\uc758\ub418\uc5b4 \uc788\ub294 \ud568\uc218 \ub0b4\ubd80\n", " - \uac00\uc7a5 \uc548\ucabd\uc758 \uc2a4\ucf54\ud504\ubd80\ud130 \ubc14\uae65\ucabd\uc758 \uc2a4\ucf54\ud504\ucabd\uc73c\ub85c \ubcc0\uc218\ub97c \ucc3e\ub294\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = 2\n", "def F():\n", " x = 1\n", " def G():\n", " print x\n", " G()\n", "\n", "F()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1\n" ] } ], "prompt_number": 76 }, { "cell_type": "code", "collapsed": false, "input": [ "def f(x):\n", " def g(i):\n", " print i,\n", " if i: g(i-1)\n", " g(x)\n", " \n", "f(3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "3 2 1 0\n" ] } ], "prompt_number": 73 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc911\ucca9 \uc601\uc5ed\uc774 \uc874\uc7ac\ud558\ub294 \ud568\uc218 \uc815\uc758\uc2dc \uc8fc\uc758\ud560 \uc810\n", " - \uc678\ubd80 \ud568\uc218\uc5d0 \uc815\uc758\ub41c \ubcc0\uc218\ub97c \uc911\ucca9\ub41c \ub0b4\ubd80 \ud568\uc218\uc5d0\uc11c \uc811\uadfc\ud560 \ub54c global\uacfc \uac19\uc740 \ud0a4\uc6cc\ub4dc \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c\n", " - \uc544\ub798 \ucf54\ub4dc\uc5d0\uc11c balance\ub294 deposit\uacfc withdraw \ud568\uc218 \ub0b4\uc5d0\uc11c r-value\uc640 l-value\ub85c\uc11c \ub3d9\uc2dc\uc5d0 \uc0ac\uc6a9\ud568\n", " - \uc989, balance\ub294 deposit\uacfc withdraw \ud568\uc218 \ub0b4 \uc9c0\uc5ed \ubcc0\uc218\uc774\uc9c0\ub9cc \uc120\uc5b8\uc5c6\uc774 \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc5d0\ub7ec \ubc1c\uc0dd" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def bank_account1(initial_balance):\n", " balance = initial_balance\n", " def deposit(amount):\n", " balance = balance + amount\n", " return balance\n", " def withdraw(amount):\n", " balance = balance - amount\n", " return balance\n", " return deposit, withdraw\n", "\n", "d, w = bank_account1(100)\n", "print d(100)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "UnboundLocalError", "evalue": "local variable 'balance' referenced before assignment", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbank_account1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m\u001b[0m in \u001b[0;36mdeposit\u001b[0;34m(amount)\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mbalance\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minitial_balance\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdeposit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamount\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mbalance\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbalance\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mamount\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbalance\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwithdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamount\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 'balance' referenced before assignment" ] } ], "prompt_number": 78 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc704 \ucf54\ub4dc\ub97c \uac1c\uc120\ud55c \ucf54\ub4dc\n", " - balance\ub294 \uc804\uc5ed \ubcc0\uc218\uac00 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0 global \ud0a4\uc6cc\ub4dc \uc0ac\uc6a9 \ubabb\ud568\n", " - deposit\uacfc widthdraw \ud568\uc218 \ub0b4\uc5d0\uc11c balance \ubcc0\uc218 \uc790\uccb4\ub97c l-value\ub85c \uc120\uc5b8\ud558\uc9c0 \uc54a\ub294 \ubc29\ubc95 \ud65c\uc6a9\n", " - balance[0]\uc740 \uae30\uc874 balance \ubcc0\uc218\uc5d0 indexing\ud558\uc5ec \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc\uc784" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def bank_account2(initial_balance):\n", " balance = [initial_balance]\n", " def deposit(amount):\n", " balance[0] = balance[0] + amount\n", " return balance[0]\n", " \n", " def withdraw(amount):\n", " balance[0] = balance[0] - amount\n", " return balance[0]\n", " return deposit, withdraw\n", "\n", "d, w = bank_account2(100)\n", "print d(100)\n", "print w(50)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "200\n", "150\n" ] } ], "prompt_number": 80 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 07 \ud568\uc218 \uc778\uc218\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7-1 \uae30\ubcf8 \uc778\uc218 \uac12\n", "- \uae30\ubcf8 \uc778\uc218 \uac12\n", " - \ud568\uc218\ub97c \ud638\ucd9c\ud560 \ub54c \uc778\uc218\ub97c \ub118\uaca8\uc8fc\uc9c0 \uc54a\uc544\ub3c4 \uc778\uc218\uac00 \uae30\ubcf8\uc801\uc73c\ub85c \uac00\uc9c0\ub294 \uac12" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def incr(a, step=1):\n", " return a + step\n", "\n", "b = 1\n", "b = incr(b) # 1 \uc99d\uac00\n", "print b\n", "\n", "b = incr(b, 10) # 10 \uc99d\uac00\n", "print b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2\n", "12\n" ] } ], "prompt_number": 81 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\uc8fc\uc758] \ud568\uc218 \uc815\uc758\ub97c \ud560 \ub54c \uae30\ubcf8 \uac12\uc744 \uc9c0\ub2cc \uc778\uc218 \ub4a4\uc5d0 \uc77c\ubc18\uc801\uc778 \uc778\uc218\uac00 \uc62c \uc218 \uc5c6\uc74c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def incr(step=1, a):\n", " return a + step" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "non-default argument follows default argument (, line 1)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m def incr(step=1, a):\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m non-default argument follows default argument\n" ] } ], "prompt_number": 82 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \uc815\uc758 \uc2dc\uc5d0 \uc5ec\ub7ec \uac1c\uc758 \uae30\ubcf8 \uc778\uc218 \uac12 \uc815\uc758 \uac00\ub2a5" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def incr(a, step=1, step2=10):\n", " return a + step + step2\n", "\n", "print incr(10)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "21\n" ] } ], "prompt_number": 83 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7-2 \ud0a4\uc6cc\ub4dc \uc778\uc218\n", "- \ud0a4\uc6cc\ub4dc \uc778\uc218\n", " - \uc778\uc218 \uac12 \uc804\ub2ec \uc2dc\uc5d0 \uc778\uc218 \uc774\ub984\uacfc \ud568\uaed8 \uac12\uc744 \uc804\ub2ec\ud558\ub294 \ubc29\uc2dd\uc744 \uc77c\uceeb\ub294\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def area(height, width):\n", " return height * width\n", "\n", "#\uc21c\uc11c\uac00 \uc544\ub2cc \uc774\ub984\uc73c\ub85c \uac12\uc774 \uc804\ub2ec\n", "a = area(width=20, height=10)\n", "print a\n", "\n", "b = area(height='height string ', width=3)\n", "print b" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "200\n", "height string height string height string \n" ] } ], "prompt_number": 85 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218\ub97c \ud638\ucd9c \ud560 \ub54c\uc5d0 \ud0a4\uc6cc\ub4dc \uc778\uc218\ub294 \ub9c8\uc9c0\ub9c9\uc5d0 \ub193\uc5ec\uc838\uc57c \ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "area(20, width=5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 79, "text": [ "100" ] } ], "prompt_number": 79 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [\uc8fc\uc758] \ud568\uc218 \ud638\ucd9c\uc2dc\uc5d0 \ud0a4\uc6cc\ub4dc \uc778\uc218 \ub4a4\uc5d0 \uc77c\ubc18 \uc778\uc218 \uac12\uc774 \uc62c \uc218 \uc5c6\ub2e4. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "area(width=5, 20)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "non-keyword arg after keyword arg (, line 1)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m area(width=5, 20)\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m non-keyword arg after keyword arg\n" ] } ], "prompt_number": 80 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uae30\ubcf8 \uc778\uc218\uac12 \ubc0f \ud0a4\uc6cc\ub4dc \uc778\uc218\uc758 \ud63c\uc6a9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def incr(a, step=1, step2=10, step3=100):\n", " return a + step + step2 + step3\n", "\n", "print incr(10, 2, step2=100)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "212\n" ] } ], "prompt_number": 88 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \ud638\ucd9c \uc2dc\uc5d0 \ud0a4\uc6cc\ub4dc \uc778\uc218 \ub4a4\uc5d0 \uc77c\ubc18 \uc778\uc218 \uac12\uc774 \uc624\uba74 \uc5d0\ub7ec " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def incr(a, step=1, step2=10, step3=100):\n", " return a + step + step2 + step3\n", "\n", "print incr(10, 2, step2=100, 200)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "non-keyword arg after keyword arg (, line 4)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m4\u001b[0m\n\u001b[0;31m print incr(10, 2, step2=100, 200)\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m non-keyword arg after keyword arg\n" ] } ], "prompt_number": 89 }, { "cell_type": "code", "collapsed": false, "input": [ "def incr(a, step=1, step2=10, step3=100):\n", " return a + step + step2 + step3\n", "\n", "print incr(10, 2, step2=100, step3=200)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "312\n" ] } ], "prompt_number": 90 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7-3 \uac00\ubcc0 \uc778\uc218 \ub9ac\uc2a4\ud2b8\n", "- \ud568\uc218 \uc815\uc758\uc2dc\uc5d0 \uc77c\ubc18\uc801\uc778 \uc778\uc218 \uc120\uc5b8 \ub4a4\uc5d0 *var \ud615\uc2dd\uc758 \uc778\uc218\ub85c \uac00\ubcc0 \uc778\uc218\ub97c \uc120\uc5b8\ud560 \uc218 \uc788\uc74c\n", " - var\uc5d0\ub294 \ud568\uc218 \ud638\ucd9c\uc2dc \ub123\uc5b4\uc8fc\ub294 \uc778\uc218 \uac12\ub4e4 \uc911 \uc77c\ubc18 \uc778\uc218\uc5d0 \ud560\ub2f9\ub418\ub294 \uac12\uc744 \uc81c\uc678\ud55c \ub098\uba38\uc9c0 \uac12\ub4e4\uc744 \uc9c0\ub2cc \ud29c\ud50c \uac1d\uccb4\uac00 \ud560\ub2f9\ub41c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def varg(a, *arg):\n", " print a, arg\n", "\n", "varg(1)\n", "varg(2,3)\n", "varg(2,3,4,5,6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 ()\n", "2 (3,)\n", "2 (3, 4, 5, 6)\n" ] } ], "prompt_number": 91 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- C\uc5b8\uc5b4\uc758 printf\ubb38\uacfc \uc720\uc0ac\ud55c \ud615\ud0dc\uc758 printf \uc815\uc758 \ubc29\ubc95" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def printf(format, *args):\n", " print format % args\n", "\n", "printf(\"I've spent %d days and %d night to do this\", 6, 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "I've spent 6 days and 5 night to do this\n" ] } ], "prompt_number": 84 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7-4 \uc815\uc758\ub418\uc9c0 \uc54a\uc740 \ud0a4\uc6cc\ub4dc \uc778\uc218 \ucc98\ub9ac\ud558\uae30\n", "- \ud568\uc218\ub97c \uc815\uc758\ud560 \ub54c \uc608\uce21\ud560 \uc218 \uc5c6\ub294 \uc778\uc218\ub97c \uc120\uc5b8\ud558\uc5ec \uc0ac\uc804 \ud0c0\uc785\uc73c\ub85c \uadf8\ub7ec\ud55c \uc778\uc218\ub97c \ubc1b\uc744 \uc218 \uc788\ub2e4.\n", " - \ud568\uc218 \uc815\uc758\uc2dc\uc5d0 **var \ud615\ud0dc\uc758 \uc778\uc218 \uc815\uc758" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f(width, height, **kw):\n", " print width, height\n", " print kw\n", " value = 0\n", " for key in kw:\n", " value += kw[key]\n", " return value\n", "\n", "print f(width=10, height=5, depth=10, diamension=3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 5\n", "{'depth': 10, 'diamension': 3}\n", "13\n" ] } ], "prompt_number": 95 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc0ac\uc804 \ud0a4\uc6cc\ub4dc \ud615\ud0dc\uc758 \uc778\uc218\ub294 \ud568\uc218 \uc815\uc758\uc2dc\uc5d0 \ub9e8 \ub9c8\uc9c0\ub9c9\uc5d0 \uc120\uc5b8\ud574\uc57c \ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def g(a, b, *args, **kw):\n", " print a, b\n", " print args\n", " print kw\n", " \n", "g(1,2,3,4, c=5, d=6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 2\n", "(3, 4)\n", "{'c': 5, 'd': 6}\n" ] } ], "prompt_number": 86 }, { "cell_type": "code", "collapsed": false, "input": [ "def g(a, b, **kw, *args):\n", " print a, b\n", " print args\n", " print kw\n", " \n", "g(1,2,3,4, c=5, d=6)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m def g(a, b, **kw, *args):\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "prompt_number": 96 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7-5 \ud29c\ud50c \uc778\uc218\uc640 \uc0ac\uc804 \uc778\uc218\ub85c \ud568\uc218 \ud638\ucd9c\ud558\uae30\n", "- \ud568\uc218 \ud638\ucd9c\uc5d0 \uc0ac\uc6a9\ub420 \uc778\uc218\uac12\ub4e4\uc774 \ud29c\ud50c\uc5d0 \uc788\ub2e4\uba74 \"*\ud29c\ud50c\ubcc0\uc218\"\ub97c \uc774\uc6a9\ud558\uc5ec \ud568\uc218 \ud638\ucd9c\uc774 \uac00\ub2a5" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def h(a,b,c):\n", " print a,b,c\n", " \n", "args = (1,2,3)\n", "h(*args)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 2 3\n" ] } ], "prompt_number": 87 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud568\uc218 \ud638\ucd9c\uc5d0 \uc0ac\uc6a9\ub420 \uc778\uc218\uac12\ub4e4\uc774 \uc0ac\uc804\uc5d0 \uc788\ub2e4\uba74 \"*\uc0ac\uc804\ubcc0\uc218\"\ub97c \uc774\uc6a9\ud558\uc5ec \ud568\uc218 \ud638\ucd9c\uc774 \uac00\ub2a5" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dargs = {'a':1, 'b':2, 'c':3}\n", "h(**dargs)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 2 3\n" ] } ], "prompt_number": 88 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud29c\ud50c \uc778\uc218\uc640 \uc0ac\uc804 \uc778\uc218\ub97c \ub3d9\uc2dc\uc5d0 \uc0ac\uc6a9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "args = (1,2)\n", "dargs = {'c':3}\n", "h(*args, **dargs)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 2 3\n" ] } ], "prompt_number": 89 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 08 \ud55c \uc904 \ud568\uc218 - \ub78c\ub2e4(lambda)\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8-1 \ub78c\ub2e4 \ud568\uc218 \uc815\uc758\ud558\uae30\n", "- \ub78c\ub2e4(lambda) \ud568\uc218 (or \ucd95\uc57d \ud568\uc218): https://wikidocs.net/64\n", " - \uc77c\ubc18\uc801\uc778 \ud568\uc218\ub97c \ud55c \uc904\uc758 \ubb38(Statement)\uc73c\ub85c \uc815\uc758\ud560 \uc218 \uc788\ub294 \uc0c8\ub85c\uc6b4 \ud568\uc218 \uc815\uc758 \ub9ac\ud130\ub7f4\n", " - \ud568\uc218 \ubab8\uccb4\uc5d0\ub294 \uc2dd(expression)\ub9cc\uc774 \uc62c \uc218 \uc788\ub2e4. \n", " - \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 \ud568\uc218 \uc774\ub984\uc744 \uc815\uc758\ud558\uc9c0 \uc54a\uc73c\uba74\uc11c \uc77c\ud68c\uc131\uc73c\ub85c \ud65c\uc6a9\ud560 \ud568\uc218\ub97c \uc815\uc758\ud560 \ub54c \ud65c\uc6a9\n", " - \uad6c\ubb38(syntax)\n", " - lambda \ucf64\ub9c8\ub85c \uad6c\ubd84\ub41c \uc778\uc218\ub4e4: \uc2dd(expression)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc778\uc218\uac00 \uc5c6\ub294 \ub78c\ub2e4 \ud568\uc218 \uc815\uc758 " ] }, { "cell_type": "code", "collapsed": false, "input": [ "lambda: 1" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 90, "text": [ ">" ] } ], "prompt_number": 90 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc778\uc218\uac00 \uc5c6\ub294 \ub78c\ub2e4 \ud568\uc218\ub97c \uc9c0\ub2c8\ub294 \ubcc0\uc218 \uc9c0\uc815 \ubc0f \ud568\uc218 \ud638\ucd9c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "f = lambda: 1\n", "f()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 91, "text": [ "1" ] } ], "prompt_number": 91 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc778\uc218\uac00 \ub450 \uac1c \uc788\ub294 \ub78c\ub2e4 \ud568\uc218\ub97c \uc9c0\ub2c8\ub294 \ubcc0\uc218 \uc9c0\uc815 \ubc0f \ud568\uc218 \ud638\ucd9c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "g = lambda x, y: x + y\n", "print g(1, 2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "3\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uae30\ubcf8 \uc778\uc218\ub97c \uc9c0\ub2c8\ub294 \ub78c\ub2e4 \ud568\uc218 \uc815\uc758" ] }, { "cell_type": "code", "collapsed": false, "input": [ "incr = lambda x, inc = 1: x + inc\n", "print incr(10) #inc \uae30\ubcf8 \uc778\uc218 \uac12\uc73c\ub85c 1 \uc0ac\uc6a9\n", "print incr(10, 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "11\n", "15\n" ] } ], "prompt_number": 99 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uac00\ubcc0 \uc778\uc218\ub97c \uc9c0\ub2c8\ub294 \ub78c\ub2e4 \ud568\uc218 \uc815\uc758" ] }, { "cell_type": "code", "collapsed": false, "input": [ "vargs = lambda x, *args: args\n", "print vargs(1,2,3,4,5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(2, 3, 4, 5)\n" ] } ], "prompt_number": 100 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud0a4\uc6cc\ub4dc \uc778\uc218\ub97c \uc9c0\ub2c8\ub294 \ub78c\ub2e4 \ud568\uc218 \uc815\uc758" ] }, { "cell_type": "code", "collapsed": false, "input": [ "kwords = lambda x, *args, **kw: kw\n", "kwords(1,2,3,a=4,b=6)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 94, "text": [ "{'a': 4, 'b': 6}" ] } ], "prompt_number": 94 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8-2 \ub78c\ub2e4 \ud568\uc218 \uc0ac\uc6a9\ud558\uae30" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f1(x):\n", " return x*x + 3*x - 10\n", "\n", "def f2(x):\n", " return x*x*x\n", "\n", "def g(func):\n", " return [func(x) for x in range(-10, 10)]\n", "\n", "print g(f1)\n", "print g(f2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[60, 44, 30, 18, 8, 0, -6, -10, -12, -12, -10, -6, 0, 8, 18, 30, 44, 60, 78, 98]\n", "[-1000, -729, -512, -343, -216, -125, -64, -27, -8, -1, 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]\n" ] } ], "prompt_number": 96 }, { "cell_type": "code", "collapsed": false, "input": [ "def g(func):\n", " return [func(x) for x in range(-10, 10)]\n", "\n", "print g(lambda x: x*x + 3*x - 10)\n", "print g(lambda x: x*x*x)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[60, 44, 30, 18, 8, 0, -6, -10, -12, -12, -10, -6, 0, 8, 18, 30, 44, 60, 78, 98]\n", "[-1000, -729, -512, -343, -216, -125, -64, -27, -8, -1, 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]\n" ] } ], "prompt_number": 101 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ub78c\ub2e4 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc \uc608\uc81c" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#\ub354\ud558\uae30, \ube7c\uae30, \uacf1\ud558\uae30, \ub098\ub204\uae30\uc5d0 \ud574\ub2f9\ud558\ub294 \ub78c\ub2e4 \ud568\uc218 \ub9ac\uc2a4\ud2b8 \uc815\uc758\n", "func = [lambda x, y: x + y, lambda x, y: x - y, lambda x, y: x * y, lambda x, y: x / y]\n", "\n", "#\uba54\ub274\ub97c \ud45c\uc2dc\ud558\uace0 \uba54\ub274\ub97c \uc785\ub825\ubc1b\ub294\ub2e4(0-4).\n", "def menu():\n", " print \"0. add\"\n", " print \"1. sub\"\n", " print \"2. mul\"\n", " print \"3. div\"\n", " print \"4. quit\"\n", " return input('Select menu:')\n", "\n", "#\uba54\ub274\ub97c \ud45c\uc2dc\ud558\uace0 \uc120\ud0dd\ub41c \uba54\ub274\ub97c \uc2e4\ud589\ud55c\ub2e4.\n", "while 1:\n", " sel = menu() # \uba54\ub274 \ud45c\uc2dc\ud558\uace0 \ud0a4 \uc785\ub825 \ubc1b\uc74c\n", " if sel < 0 or sel > len(func): # \ubc94\uc704\ub97c \ubc97\uc5b4\ub098\uba74 \ub2e4\uc2dc \uba54\ub274 \ud45c\uc2dc\n", " continue\n", " if sel == len(func): # quit\uc774\uba74 \uc885\ub8cc\n", " break\n", " x = input('First operand:') # \uccab\ubc88\uc9f8 \uc778\uc218\n", " y = input('Second operand:') # \ub450\ubc88\uc9f8 \uc778\uc218\n", " print 'Result =', func[sel](x,y) # \ud574\ub2f9\ud568\uc218 \ud638\ucd9c" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0. add\n", "1. sub\n", "2. mul\n", "3. div\n", "4. quit\n" ] } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 09 \ud568\uc218\uc801 \ud504\ub85c\uadf8\ub798\ubc0d(map, filter, reduce)\n", "***\n", "- \ud568\uc218\ub97c \uc778\uc790\ub85c \ubc1b\uc544\uc11c \uadf8 \ud568\uc218\ub97c \uc911\uc694\ud558\uac8c \ud65c\uc6a9\ud558\ub294 \ud504\ub85c\uadf8\ub798\ubc0d \ubc29\ubc95\n", "- \ub0b4\uc7a5 \ud568\uc218 map, filter, reducre\n", " - \uccab\ubc88\uc9f8 \uc778\uc790: function\n", " - \ub450\ubc88\uc9f8 \uc778\uc790: \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615 (\ubb38\uc790\uc5f4, \ub9ac\uc2a4\ud2b8, \ud29c\ud50c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 9-1 map \ub0b4\uc7a5 \ud568\uc218\n", "- map(function, seq)\n", " - seq \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc774 \uc9c0\ub2cc \uac01 \uc6d0\uc18c\uac12\ub4e4\uc5d0 \ub300\ud574 function\uc5d0 \uc801\uc6a9\ud55c \uacb0\uacfc\ub97c \ub3d9\uc77c \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc73c\ub85c \ubc18\ud658\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f(x):\n", " return x * x\n", "\n", "X = [1, 2, 3, 4, 5]\n", "Y = map(f, X)\n", "print Y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1, 4, 9, 16, 25]\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- map \ub0b4\uc7a5 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc744 \ub54c \ucf54\ub4dc" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f(x):\n", " return x * x\n", "\n", "X = [1, 2, 3, 4, 5]\n", "Y = []\n", "for x in X:\n", " y = f(x)\n", " Y.append(y)\n", "print Y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1, 4, 9, 16, 25]\n" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- map\uacfc \ub78c\ub2e4 \ud568\uc218\ub97c \ub3d9\uc2dc\uc5d0 \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc (\uac00\uc7a5 \ucd94\ucc9c\ud558\ub294 \ucf54\ub4dc)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X = [1, 2, 3, 4, 5]\n", "print map(lambda x: x * x, X)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1, 4, 9, 16, 25]\n" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- X = range(10)\uc758 \ubaa8\ub4e0 \uac12 x\uc5d0 \ub300\ud574 f = x \\* x + 4 * x + 5\uc758 \uacc4\uc0b0 \uacb0\uacfc\ub97c \ub9ac\uc2a4\ud2b8\ub85c \uad6c\ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Y = map(lambda x: x * x + 4 * x + 5, range(10))\n", "print Y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[5, 10, 17, 26, 37, 50, 65, 82, 101, 122]\n" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uac01 \ub2e8\uc5b4\ub4e4\uc758 \uae38\uc774 \ub9ac\uc2a4\ud2b8" ] }, { "cell_type": "code", "collapsed": false, "input": [ "y = map(lambda x: len(x), [\"Hello\", \"Python\", \"Programming\"])\n", "print y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[5, 6, 11]\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 9-2 \uc21c\uc11c\uc30d \ub9cc\ub4e4\uae30(map, zip)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- map\ud568\uc218\uc5d0 \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc744 \ub450 \uac1c \uc774\uc0c1 \ud560\ub2f9\ud560 \uc218 \uc788\ub2e4.\n", " - \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc774 n\uac1c \uc774\uba74 function\uc758 \uc778\uc790\ub3c4 n\uac1c \uc774\uc5b4\uc57c \ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Y1 = map(lambda x, y: x + y, [1, 2, 3, 4, 5], [6, 7, 8, 9, 10])\n", "Y2 = map(lambda x, y, z: x + y + z, [1, 2, 3], [4, 5, 6], [7, 8, 9])\n", "print Y1\n", "print Y2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[7, 9, 11, 13, 15]\n", "[12, 15, 18]\n" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ub450 \uac1c \uc774\uc0c1\uc758 \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\ub4e4\uc5d0 \ub300\ud574 map \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc21c\uc11c\uc30d \ub9cc\ub4e4\uae30\n", " - function \uc778\uc790\ub97c None\uc73c\ub85c \ud560\ub2f9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = ['a', 'b', 'c', 'd']\n", "b = [1, 2, 3, 4]\n", "print map(None, a, b)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('a', 1), ('b', 2), ('c', 3), ('d', 4)]\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "a = ['a', 'b', 'c', 'd']\n", "b = [1, 2, 3, 4]\n", "c = [5, 6, 7, 8]\n", "print map(None, a, b, c)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('a', 1, 5), ('b', 2, 6), ('c', 3, 7), ('d', 4, 8)]\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "a = ['a', 'b', 'c', 'd']\n", "b = (1, 2, 3, 4)\n", "c = [5, 6, 7, 8]\n", "d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}\n", "print map(None, a, b, c, d)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('a', 1, 5, 'a'), ('b', 2, 6, 'c'), ('c', 3, 7, 'b'), ('d', 4, 8, 'd')]\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ub450 \uac1c\uc758 \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc758 \uc6d0\uc18c\uc758 \uac1c\uc218\uac00 \ub2e4\ub974\uba74 \ubd80\uc871\ud55c \uc6d0\uc18c\uc5d0\ub294 None\uc744 \ud560\ub2f9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = ['a', 'b']\n", "b = [1, 2, 3, 4]\n", "print map(None, a, b)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('a', 1), ('b', 2), (None, 3), (None, 4)]\n" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc21c\uc11c\uc30d\uc744 \ub9cc\ub4dc\ub294 \uc804\uc6a9 \ub0b4\uc7a5 \ud568\uc218 zip\uc740 None\uc744 \ucd94\uac00\ud558\uc9c0 \uc54a\uace0 \uc9e7\uc740 \uc778\uc790\ub97c \uae30\uc900\uc73c\ub85c \ub098\uba38\uc9c0\ub294 \ubc84\ub9b0\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = ['a', 'b']\n", "b = [1, 2, 3, 4]\n", "print zip(a, b)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[('a', 1), ('b', 2)]\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "print zip([1, 2, 3], [4, 5, 6, 7, 8])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[(1, 4), (2, 5), (3, 6)]\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc5ec\ub7ec \uac1c\uc758 \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc73c\ub85c \uc21c\uc11c\uc30d \ub9cc\ub4e4\uae30" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print zip([1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)]\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc744 \uc6d0\uc18c\ub4e4\uc744 zip\uc5d0 \uc778\uc790\ub85c \ub123\ub294 \ub2e4\ub978 \ubc29\ubc95" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = [[1, 2, 3], [4, 5, 6]]\n", "print zip(*a)\n", "print\n", "\n", "b = [(1, 2, 3), (4, 5, 6)]\n", "print zip(*b)\n", "print\n", "\n", "c = ([1, 2, 3], (4, 5, 6))\n", "print zip(*c)\n", "print" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[(1, 4), (2, 5), (3, 6)]\n", "\n", "[(1, 4), (2, 5), (3, 6)]\n", "\n", "[(1, 4), (2, 5), (3, 6)]\n", "\n", "[(1, 4), (2, 5), (3, 6)]\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 9-3 filter \ub0b4\uc7a5 \ud568\uc218\n", "- filter(function, seq)\n", " - seq \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc774 \uc9c0\ub2cc \uac01 \uc6d0\uc18c\uac12\ub4e4\uc5d0 \ub300\ud574 function\uc5d0 \uc801\uc6a9\ud55c \uacb0\uacfc\uac00 \ucc38\uc778 \uc6d0\uc18c\uac12\ub4e4\ub9cc\uc744 \ub3d9\uc77c \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc73c\ub85c \ubc18\ud658\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "filter(lambda x: x > 2, [1, 2, 3, 34])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "[3, 34]" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc704 \ucf54\ub4dc\ub294 \uc544\ub798\uc640 \ub3d9\uc77c\ud558\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "y = []\n", "for x in [1, 2, 3, 34]:\n", " if x > 2:\n", " y.append(x)\n", "print y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[3, 34]\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc8fc\uc5b4\uc9c4 \uc2dc\ud000\uc2a4 \ub0b4\uc5d0 \uc788\ub294 \uc815\uc218\uc911 \ud640\uc218\ub9cc \ud544\ud130\ub9c1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "filter(lambda x: x % 2, [1, 2, 3, 4, 5, 6])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "[1, 3, 5]" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \uc8fc\uc5b4\uc9c4 \uc2dc\ud000\uc2a4 \ub0b4\uc5d0 \uc788\ub294 \uc815\uc218\uc911 \uc9dd\uc218\ub9cc \ud544\ud130\ub9c1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "filter(lambda x: x % 2 - 1, [1, 2, 3, 4, 5, 6])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "[2, 4, 6]" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ud2b9\uc815 \ubc94\uc704\uc5d0 \uc788\ub294 \uc815\uc218\ub9cc \ud544\ud130\ub9c1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def F():\n", " x = 1\n", " print filter(lambda a: a > x, range(-5, 5))\n", " \n", "F()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[2, 3, 4]\n" ] } ], "prompt_number": 77 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- filter\uc758 \uacb0\uacfc\ub294 \uc8fc\uc5b4\uc9c4 seq \uc790\ub8cc\ud615\uacfc \ub3d9\uc77c\ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print filter(lambda x: x > 2, [1, 2, 3, 34])\n", "print filter(lambda x: x > 2, (1, 2, 3, 34))\n", "print filter(lambda x: x < 'a', 'abcABCdefDEF')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[3, 34]\n", "(3, 34)\n", "ABCDEF\n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- filter\uc758 \uccab \uc778\uc790\uc758 \ud568\uc218\ub97c None\uc744 \ud560\ub2f9\ud558\uba74 seq \uc790\ub8cc\ud615\uc5d0 \uc788\ub294 \uac01 \uc6d0\uc18c\uac12 \uc790\uccb4\ub4e4\uc744 \ud3c9\uac00\ud558\uc5ec \ucc38\uc778 \uac83\ub4e4\ub9cc \ud544\ud130\ub9c1\ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "L = ['high', False, 'level', '', 'built-in', '', 'function', 0, 10]\n", "L = filter(None, L)\n", "print L" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['high', 'level', 'built-in', 'function', 10]\n" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 9-4 reduce \ub0b4\uc7a5 \ud568\uc218\n", "- reduce (function, seq[, initial])\n", " - seq \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc774 \uc9c0\ub2cc \uc6d0\uc18c\uac12\ub4e4\uc5d0 \ub300\ud574 function \ud568\uc218\ub97c \uc801\uc6a9\ud558\uba74\uc11c \ud558\ub098\uc758 \uac12\uc73c\ub85c \ub9e4\ud551\ud55c\ub2e4.\n", " - \uccab\ubc88\uc9f8 \uc778\uc790\uc778 function \ud568\uc218\ub294 \ubc18\ub4dc\uc2dc \ub450 \uac1c\uc758 \uc778\uc790 (\uc608\ub97c \ub4e4\uc5b4, x, y)\ub97c \ubc1b\uc544\uc57c \ud55c\ub2e4.\n", " - seq \uc2dc\ud000\uc2a4 \uc790\ub8cc\ud615\uc758 \uac01 \uc6d0\uc18c\uac12\ub4e4\uc740 \uac01 \ub2e8\uacc4\ubcc4\ub85c y\uc5d0 \uc21c\ucc28\uc801\uc73c\ub85c \ub4e4\uc5b4\uac04\ub2e4. \n", " - \ud568\uc218\uac00 \uc218\ud589\ub41c \uac12\uc740 \uac01 \ub2e8\uacc4\ubcc4\ub85c x\uc5d0 \uc21c\ucc28\uc801\uc73c\ub85c \ub4e4\uc5b4\uac04\ub2e4.\n", " - \ucd94\uac00\uc801\uc73c\ub85c \uc81c\uacf5\uac00\ub2a5\ud55c \uc138\ubc88\uc9f8 \uc778\uc790\uc778 initial\uc740 \uccab\ubc88\uc9f8 \ub2e8\uacc4\uc5d0 x\uc5d0 \ud560\ub2f9\ud560 \ucd08\uae30\uac12\uc73c\ub85c \uc0ac\uc6a9\ub41c\ub2e4. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "print reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "15\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \ub2e8\uacc4 | x | y | reduce |\n", "|-----|---|---|---------|\n", "| 1 | 0 | 1 | 1 |\n", "| 2 | 1 | 2 | 3 |\n", "| 3 | 3 | 3 | 6 |\n", "| 4 | 6 | 4 | 10 |\n", "| 5 | 10| 5 | 15 | " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- initial \uac12 \ud560\ub2f9" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 100)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "115\n" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 1\ubd80\ud130 10\uae4c\uc9c0 \uac01 \uc218\uc5d0 \ub300\ud55c \uc81c\uacf1\uac12\uc744 \ubaa8\ub450 \ub354\ud55c \uacb0\uacfc \uad6c\ud568" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print reduce(lambda x, y: x + y * y, range(1, 11), 0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "385\n" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "x = 0\n", "for y in range(1, 11):\n", " x = x + y * y\n", "print x" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "385\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- \ubb38\uc790\uc5f4 \uc21c\uc11c \ub4a4\uc9d1\uae30" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print reduce(lambda x, y: y + x, 'abcde')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "edcba\n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \ub2e8\uacc4 | x | y | reduce |\n", "|-----|---|---|---------|\n", "| 1 | 0 | 'a' | 'a' |\n", "| 2 | 'a' | 'b' | 'ba' |\n", "| 3 | 'ba' | 'c' | 'cba' |\n", "| 4 | 'cba' | 'd' | 'dcba' |\n", "| 5 | 'dcba' | 'e' | 'edcba' | " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 10 \ud568\uc218 \uac1d\uccb4\uc758 \uc18d\uc131\n", "***\n", "- \ud568\uc218\ub3c4 \uac1d\uccb4\uc774\uba70 \uc18d\uc131\uc744 \uc9c0\ub2cc\ub2e4.\n", " - \\_\\_doc__, func_doc: \ubb38\uc11c \ubb38\uc790\uc5f4\n", " - \\_\\_name__, func_name: \ud568\uc218 \uc774\ub984\n", " - func\\_defaults: \uae30\ubcf8 \uc778\uc218 \uac12\ub4e4\n", " - func_code: \ucf54\ub4dc \uac1d\uccb4" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f(a, b, c=1):\n", " 'func attribute testing'\n", " localx = 1\n", " localy = 2\n", " return 1 " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "print f.__doc__ # \ubb38\uc11c \ubb38\uc790\uc5f4\n", "print f.func_doc\n", "print f.__name__ # \ud568\uc218\uc758 \uc774\ub984\n", "print f.func_name\n", "print\n", "print f.func_defaults # \uae30\ubcf8 \uc778\uc218\uac12\ub4e4" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "func attribute testing\n", "func attribute testing\n", "f\n", "f\n", "\n", "(1,)\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "print f.func_code # \ud568\uc218\uc758 \ucf54\ub4dc \uac1d\uccb4" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\", line 1>\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 10-1 func_code\n", "- \ud568\uc218\uc758 \ucf54\ub4dc \uac1d\uccb4: \ucef4\ud30c\uc77c\uc774 \uc5b4\ub290\uc815\ub3c4 \ub418\uc5b4\uc9c4 \uc2e4\ud589 \uac00\ub2a5\ud55c \ud30c\uc774\uc36c \ucf54\ub4dc \uac1d\uccb4\n", " - \ub0b4\uc7a5 \ud568\uc218 compile()\uc5d0 \uc758\ud574 \ubc18\ud658\ub41c \uac1d\uccb4 " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f(a, b, c, *args, **kw): # \ud568\uc218 \uc815\uc758\n", " localx = 1\n", " localy = 2\n", " return 1\n", "\n", "code = f.func_code # \ucf54\ub4dc \uac1d\uccb4 \ucc38\uc870\n", "\n", "print code.co_name # \ud568\uc218\uc758 \uc774\ub984\n", "print code.co_argcount # \ud544\uc218\uc801\uc778 \uc778\uc218\uc758 \uac1c\uc218\n", "print code.co_nlocals # \uc9c0\uc5ed\ubcc0\uc218\uc758 \uac1c\uc218\n", "print code.co_varnames # \uc9c0\uc5ed\ubcc0\uc218\uc758 \uc774\ub984\ub4e4" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "f\n", "3\n", "7\n", "('a', 'b', 'c', 'args', 'kw', 'localx', 'localy')\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 11 \uc7ac\uadc0\uc801 \ud504\ub85c\uadf8\ub798\ubc0d*\n", "***\n", "- \uc7ac\uadc0(Recursive) \ud568\uc218: \ud568\uc218 \ubab8\uccb4\uc5d0\uc11c \uc790\uae30 \uc790\uc2e0\uc744 \ud638\ucd9c\ud558\ub294 \ud568\uc218\n", " - \uc77c\ubc18 \uc218\ud559\uc5d0\uc11c \uc810\ud654\uc2dd\uacfc \uc720\uc0ac\ud55c \ucf54\ub4dc\n", " - \ubc18\ub4dc\uc2dc \uc885\uacb0 \uc870\uac74 \ubc0f \uc885\uacb0 \uc870\uac74\uc774 \ub9cc\uc871\ud560 \ub54c\uc758 \ubc18\ud658 \uac12\uc774 \uc788\uc5b4\uc57c \ud55c\ub2e4." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def sum(N):\n", " if N == 1: # \uc885\uacb0 \uc870\uac74\n", " return 1 # \uc885\uacb0 \uc870\uac74\uc774 \ub9cc\uc871\ud560 \ub54c\uc758 \ubc18\ud658 \uac12\n", " return N + sum(N-1) # \uc7ac\uadc0 \ud638\ucd9c\n", "\n", "print sum(10)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "55\n" ] } ], "prompt_number": 12 } ], "metadata": {} } ] }