{ "metadata": { "name": "", "signature": "sha256:831402bdcf6a50366e6a400bf971e09b25983de0ebf01458d42a693aa22990c1" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "CHAPTER 15: MISCELLANEOUS FEATURES" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:473-474" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def emp_dept(*sequential, **named): #definition of enumeration\n", " enums = dict(zip(sequential, range(len(sequential))), **named)\n", " return type('Enum', (), enums)\n", "class employee(): #structure\n", " def __init__(self,**kwds):\n", " self.__dict__.update(kwds)\n", "department=emp_dept('assembly','manufacturing','accounts','stores') #defining a variable of type enum emp_dept\n", "e=employee(name=\"Lothar Mattheus\",age=28,bs=5575.50,department=department.manufacturing)\n", "print \"Name=%s\\n\" % (e.name)\n", "print \"Age=%d\\n\" % (e.age)\n", "print \"Basic salary=%f\\n\" % (e.bs)\n", "print \"Dept=%d\\n\" % (e.department)\n", "if e.department==department.accounts:\n", " print \"%s is an accountant\\n\" % (e.name)\n", "else:\n", " print \"%s is not an accountant\\n\" % (e.name)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Name=Lothar Mattheus\n", "\n", "Age=28\n", "\n", "Basic salary=5575.500000\n", "\n", "Dept=1\n", "\n", "Lothar Mattheus is not an accountant\n", "\n" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:475" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def ASSEMBLY():\n", " return 0\n", "def MANUFACTURING():\n", " return 1\n", "def ACCOUNTS():\n", " return 2\n", "def STORES():\n", " return 3\n", "class employee():\n", " def __init__(self,**kwds):\n", " self.__dict__.update(kwds)\n", "e=employee()\n", "e.name=\"Lothar Mattheus\"\n", "e.age=28\n", "e.bs=5575.50\n", "e.department=MANUFACTURING()\n", "print \"Name=%s\\n\" % (e.name)\n", "print \"Age=%d\\n\" % (e.age)\n", "print \"Basic salary=%f\\n\" % (e.bs)\n", "print \"Dept=%d\\n\" % (e.department)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Name=Lothar Mattheus\n", "\n", "Age=28\n", "\n", "Basic salary=5575.500000\n", "\n", "Dept=1\n", "\n" ] } ], "prompt_number": 2 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:477-478" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "x=6\n", "y=4\n", "a=x/y #int\n", "print \"Value of a=%f\\n\" % (a)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Value of a=1.000000\n", "\n" ] } ], "prompt_number": 3 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:478" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "x=6\n", "y=4\n", "a=float(x)/y #float\n", "print \"Value of a=%f\\n\" % (a)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Value of a=1.500000\n", "\n" ] } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:478-479" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "a=6.35\n", "print \"Value of a on type casting=%d\\n\" % (int(a)) #converts float to int\n", "print \"Value of a=%f\\n\" % (a) " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Value of a on type casting=6\n", "\n", "Value of a=6.350000\n", "\n" ] } ], "prompt_number": 5 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:480" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "from ctypes import *\n", "def MALE():\n", " return 0\n", "def FEMALE():\n", " return 1\n", "def SINGLE():\n", " return 0\n", "def MARRIED():\n", " return 1\n", "def DIVORCED():\n", " return 2\n", "def WIDOWED():\n", " return 3\n", "class employee(Structure):\n", " _fields_= [(\"gender\",c_short, 1), #1 bit size for storage\n", " (\"mar_stat\", c_short, 2), #2 bit size for storage\n", " (\"hobby\",c_short, 3), #3 bit size for storage\n", " (\"scheme\",c_short, 4)] #4 bit size for storage\n", "e=employee()\n", "e.gender=MALE()\n", "e.mar_status=DIVORCED()\n", "e.hobby=5\n", "e.scheme=9\n", "print \"Gender=%d\\n\" % (e.gender)\n", "print \"Marital status=%d\\n\" % (e.mar_status)\n", "import ctypes\n", "print \"Bytes occupied by e=%d\\n\" % (ctypes.sizeof(e))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Gender=0\n", "\n", "Marital status=2\n", "\n", "Bytes occupied by e=2\n", "\n" ] } ], "prompt_number": 6 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:481" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def display():\n", " print \"Long live viruses!!\\n\"\n", "print \"Address of function display is %s\\n\" % (display)\n", "display()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Address of function display is \n", "\n", "Long live viruses!!\n", "\n" ] } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:481-482" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def display():\n", " print \"\\nLong live viruses!!\"\n", "func_ptr=display\n", "print \"Address of function display is %s\\n\" % (display)\n", "func_ptr()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Address of function display is \n", "\n", "\n", "Long live viruses!!\n" ] } ], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:483" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def fun():\n", " i=20\n", " return (id(i))\n", "p=fun\n", "p()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "20688356" ] } ], "prompt_number": 9 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:483-484" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def copy(t,s):\n", " t=\"\\0\"\n", " for item in s:\n", " t=t+item\n", " return t\n", "source=\"Jaded\"\n", "target=[]\n", "str1=copy(target,source)\n", "print \"%s\\n\" % (str1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\u0000Jaded\n", "\n" ] } ], "prompt_number": 18 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:485" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def findmax(tot_num,*num): #tuples\n", " max=0\n", " for count in range(0,len(num),1):\n", " if num[count]>max:\n", " max=num[count]\n", " return max\n", "max=findmax(5,23,15,1,92,50)\n", "print \"maximum=%d\\n\" % (max)\n", "max=findmax(3,100,300,29)\n", "print \"maximum=%d\\n\" % (max)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "maximum=92\n", "\n", "maximum=300\n", "\n" ] } ], "prompt_number": 19 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:486-487" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "def display(type,num,*t):\n", " def integer():\n", " for j in range(0,num,1):\n", " print \"%d\" % (t[j])\n", " def char():\n", " for j in range(0,num,1):\n", " print \"%c\" % (t[j])\n", " def floating():\n", " for j in range(0,num,1):\n", " print \"%f\" % (t[j])\n", " def switch(ch):\n", " return {1: integer,\n", " 2: char,\n", " 3: floating,\n", " }[ch]()\n", " switch(type)\n", "display(1,2,5,6)\n", "display(2,4,'A','a','b','c')\n", "display(3,3,2.5,299.3,-1.0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "5\n", "6\n", "A\n", "a\n", "b\n", "c\n", "2.500000\n", "299.300000\n", "-1.000000\n" ] } ], "prompt_number": 21 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:488" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "from ctypes import *\n", "class a(Union): #definition of union\n", " _fields_= [(\"i\", c_short),\n", " (\"ch\",c_byte*2)]\n", "key=a()\n", "key.i=512\n", "print key.i\n", "print key.ch[0]\n", "print key.ch[1]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "512\n", "0\n", "2\n" ] } ], "prompt_number": 22 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:491" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "from ctypes import *\n", "class a(Union):\n", " _fields_= [(\"i\", c_short),\n", " (\"ch\",c_byte*2)]\n", "key=a()\n", "key.i=512\n", "print key.i\n", "print key.ch[0]\n", "print key.ch[1]\n", "key.ch[0]=50\n", "print key.i\n", "print key.ch[0]\n", "print key.ch[1]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "512\n", "0\n", "2\n", "562\n", "50\n", "2\n" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:492-493" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "from ctypes import *\n", "class a(Structure):\n", " _fields_ = [(\"i\", c_short),\n", " (\"c\", c_byte*2)]\n", "\n", "class b(Structure):\n", " _fields_ = [(\"j\", c_short),\n", " (\"d\", c_byte*2)]\n", "\n", "class z(Union):\n", " _fields_ = [(\"key\", a),\n", " (\"data\", b)]\n", "strange = z()\n", "strange.key.i=512\n", "strange.data.d[0]=0\n", "strange.data.d[1]=32\n", "print strange.key.i\n", "print strange.data.j\n", "print strange.key.c[0]\n", "print strange.data.d[0]\n", "print strange.key.c[1]\n", "print strange.data.d[1]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "512\n", "512\n", "0\n", "0\n", "32\n", "32\n" ] } ], "prompt_number": 2 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "EXAMPLE ON PAGE:494-495" ] }, { "cell_type": "code", "collapsed": false, "input": [ " \n", "from ctypes import *\n", "class info1(Structure):\n", " _fields_ = [(\"hobby\", c_byte*10),\n", " (\"crcardno\", c_short)]\n", "\n", "class info2(Structure):\n", " _fields_ = [(\"vehno\", c_byte*10),\n", " (\"dist\", c_short)]\n", "\n", "class info(Union):\n", " _fields_ = [(\"a\", info1),\n", " (\"b\", info2)]\n", "class emp(Structure):\n", " _fields_ = [(\"n\", c_byte*20),\n", " (\"grade\", c_byte*4),\n", " (\"age\", c_short),\n", " (\"f\", info)]\n", "e=emp()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 } ], "metadata": {} } ] }