Bruce Beckles University of Cambridge Computing Service

Slides:



Advertisements
Similar presentations
Python 3000 and You Guido van Rossum EuroPython July 7, 2008.
Advertisements

Python 3000 (PyCon, 24-Feb-02007) Guido van Rossum
Python 3000 and You Guido van Rossum PyCon March 14, 2008.
More about Ruby Maciej Mensfeld Presented by: Maciej Mensfeld More about Ruby dev.mensfeld.pl github.com/mensfeld.
Arrays A list is an ordered collection of scalars. An array is a variable that holds a list. Arrays have a minimum size of 0 and a very large maximum size.
A Crash Course Python. Python? Isn’t that a snake? Yes, but it is also a...
Introduction to Computers and Programming Lecture 4: Mathematical Operators New York University.
Mathematical Operators: working with floating point numbers and more operators  2000 Prentice Hall, Inc. All rights reserved. Modified for use with this.
Week 2 ______ \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Terms and Rules Professor Evan Korth New York University (All rights reserved)
Introduction to Python
Chapter 3: Introduction to C Programming Language C development environment A simple program example Characters and tokens Structure of a C program –comment.
Exceptions. Many problems in code are handled when the code is compiled, but not all Some are impossible to catch before the program is run  Must run.
Introduction to Python (for C++ programmers). Background Information History – created in December 1989 by Guido van Rossum Interpreted Dynamically-typed.
Java Software Solutions Lewis and Loftus Chapter 2 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Software Concepts -- Introduction.
Introduction to Python
General Computer Science for Engineers CISC 106 Lecture 02 Dr. John Cavazos Computer and Information Sciences 09/03/2010.
Input & Output: Console
Python3 and DM RFC-60 Tim Jenness. Python 3 Version 3.0 released in to be released in September 2.7 was released in 2010 – Critical bug fixes.
General Programming Introduction to Computing Science and Programming I.
Bill's Amazing Content Rotator jQuery Content Rotator.
Learning Web Design: Chapter 4. HTML  Hypertext Markup Language (HTML)  Uses tags to tell the browser the start and end of a certain kind of formatting.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 2 Input, Processing, and Output.
CS190/295 Programming in Python for Life Sciences: Lecture 3 Instructor: Xiaohui Xie University of California, Irvine.
Input, Output, and Processing
 JAVA Compilation and Interpretation  JAVA Platform Independence  Building First JAVA Program  Escapes Sequences  Display text with printf  Data.
Java 5 Part 1 CSE301 University of Sunderland Harry Erwin, PhD.
With Python.  One of the most useful abilities of programming is the ability to manipulate files.  Python’s operations for file management are relatively.
Introduction to Information Security Python. Python motivation Python is to a Hacker what Matlab is to an engineer Lots of built-in modules Lots of 3.
CSC 110 Using Python [Reading: chapter 1] CSC 110 B 1.
Python Overview  Last week Python 3000 was released  Python 3000 == Python 3.0 == Py3k  Designed to break backwards compatibility with the 2.x.
Copyright Curt Hill Variables What are they? Why do we need them?
Fall 2002CS 150: Intro. to Computing1 Streams and File I/O (That is, Input/Output) OR How you read data from files and write data to files.
Introduction to Python Dr. José M. Reyes Álamo. 2 Three Rules of Programming Rule 1: Think before you program Rule 2: A program is a human-readable set.
Jim Havrilla. Invoking Python Just type “python –m script.py [arg]” or “python –c command [arg]” To exit, quit() or Control-D is used To just use the.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
PHP vs. Python. Similarities are interpreted, high level languages with dynamic typing are Open Source are supported by large developer communities are.
Python Let’s get started!.
Data Types and Conversions, Input from the Keyboard CS303E: Elements of Computers and Programming.
Gator Engineering Copyright © 2008 W. W. Norton & Company. All rights reserved. 1 Chapter 3 Formatted Input/Output.
Data Types and Conversions, Input from the Keyboard If you can't write it down in English, you can't code it. -- Peter Halpern If you lie to the computer,
Tokens in C  Keywords  These are reserved words of the C language. For example int, float, if, else, for, while etc.  Identifiers  An Identifier is.
 2006 Pearson Education, Inc. All rights reserved Control Statements: Part 2.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
Winter 2016CISC101 - Prof. McLeod1 CISC101 Reminders Quiz 3 next week. See next slide. Both versions of assignment 3 are posted. Due today.
Quiz 3 Topics Functions – using and writing. Lists: –operators used with lists. –keywords used with lists. –BIF’s used with lists. –list methods. Loops.
FILES AND EXCEPTIONS Topics Introduction to File Input and Output Using Loops to Process Files Processing Records Exceptions.
Quiz 1 A sample quiz 1 is linked to the grading page on the course web site. Everything up to and including this Friday’s lecture except that conditionals.
1 float Data Type Data type that can hold numbers with decimal values – e.g. 3.14, 98.6 Floats can be used to represent many values: –Money (but see warning.
Python 3000.
Introduction to Computing Science and Programming I
A bit of C programming Lecture 3 Uli Raich.
Python Let’s get started!.
Objectives You should be able to describe: Interactive Keyboard Input
Tokens in C Keywords Identifiers Constants
Computing with C# and the .NET Framework
Chapter 3: Understanding C# Language Fundamentals
Functional Programming with Java
Starting JavaProgramming
Topics Introduction to File Input and Output
Variables ICS2O.
Winter 2018 CISC101 12/1/2018 CISC101 Reminders
CISC101 Reminders Assn 3 due tomorrow, 7pm.
Introduction to Primitive Data types
Fundamentals of Data Representation
Problems Debugging is fine and dandy, but remember we divided problems into compile-time problems and runtime problems? Debugging only copes with the former.
Topics Introduction to File Input and Output
CISC101 Reminders Assignment 3 due today.
Introduction to Primitive Data types
Presentation transcript:

Bruce Beckles University of Cambridge Computing Service Python: 2 or 3? Bruce Beckles University of Cambridge Computing Service

Outline of talk Background: Python 2 or 3? What’s so special about Python 3? Python 2 or 3? Main differences between Python 2 or 3 Migrating from Python 2 to 3

Python 2 Initial (2.0) release in October 2000 First release incorporating some Python 3 features (2.6) in October 2008: Incorporates some Python 3.0 features Final major release (2.7) in July 2010 Incorporates some Python 3.1 features Most recent release (2.7.5) in May 2013 Python 2 is now in extended maintenance: Bugfix releases only Until May 2015 (see PEP 373)

Python 3 Initial (3.0) release in December 2008 First decent release (3.1) in June 2009 Most recent major release (3.3) in September 2012 Most recent release (3.3.2) in May 2013 Python 3 is the current version of Python: New features will only be added to Python 3, not Python 2

Python 3 evolution Python 3.0: essentially an “extended beta” release Do not use I/O performance is rubbish Python 3.1: First usable Python 3.x Python 3.2: Improved version of Python 3.1 No changes to syntax or core language (as compared to 3.1) More support for porting from Python 2.x Python 3.3: Current major release of Python 3.x Even more support for porting from Python 2.x

What’s so special about Python 3? Backward compatibility Python 2.7.x Python 1.5 Python 3.x Python 3.0

Python 3: A flag day for Python December 3rd, 2008 Python 3: A flag day for Python

Differences between Python 2 and Python 3

Why Python 3 at all? Python 2.x Backward compatibility means very few features are ever removed (so the core language gets ‘bloated’) …and re-engineering is more-or-less impossible… Python 3.x Not backwardly compatible, so… Little used or obsolete features removed or demoted to modules Re-engineered many of the internals and ways of doing things

Example: print Python 2.x print is a statement: a special reserved word that does something “magic” (printing an object) Cannot be modified or overloaded Syntax not flexible or easily extensible Python 3.x print() is a built-in function: behaves like any other function Can be modified or overloaded Can easily extend it in the future with additional options (keyword arguments) without breaking backward compatibility

Standard library Python 2.x Over time has accumulated lots of “hacks”, obsolete functions/features, sub-optimal ways of doings Some similar modules Many deprecated modules still shipped Python 3.x Re-designed, streamlined and improved standard library Similar/related modules rationalised Many deprecated modules removed

Unicode Python 2.x Support provided by Python module In practice: Aaaaaaargh! Mixing Unicode and ASCII strings = AgONy!!! Python 3.x Built into core language: all strs are Unicode strings (default encoding: UTF-8) Separate type, bytes (byte strings), if you really need strings where each character is stored as a single byte

String Formatting Python 2.x C printf()-style string formating via % operator on strings "%10s %5.2f" % (name, price) Python 3.x Built-in method of strings using .NET framework-style syntax "{0:10} {1:5.2f}". format(name, price) C printf()-style string formating via % operator still supported, but discouraged

Numeric types Two types of integers: “True” integer division, e.g. Python 2.x Two types of integers: C-based integers (int) Python long integer (long) “True” integer division, e.g. 5 / 2 = 2 Up to Python 2.6.x: Floats often displayed to a surprising number of decimal paces, e.g 1.0 / 10 = 0.1000000000000001 Python 3.x All integers are Python long integers so only one integer type (int) Integer division can change type, e.g. 5 / 2 = 2.5 From Python 3.1: Floats usually displayed to smaller number of decimal places, e.g. 1.0 / 10 = 0.1

Iterators and Sequences “Treat it like a list and it will behave like an iterator” for key in dictionary: print dictionary[key] Python 2.x next() built-in function backported to Python 2.6 Several similar sequence types Fewer specialist container types Python 3.x next() built-in function Rationalised built-in sequence types Many more specialist container types and subclasses

Example: range range() produces a list of numbers Python 2.x range() produces a list of numbers xrange() produces an xrange object: doesn’t produce an explicit list of numbers, instead knows what the current number is and can give the next one Python 3.x range() now produces an range object: doesn’t produce an explicit list of numbers, instead knows what the current number is and can give the next one Get an explicit list of numbers with list(range())

Exception Handling No proper exception hierarchy Python 2.x No proper exception hierarchy Each type of exception can be different No standard behaviour …or information provided by exception Python 3.x All exceptions are derived from BaseException String exceptions are finally dead! Exceptions cannot be treated as sequences Use args attribute instead Exception chaining Cleaned up APIs for raising and catching exceptions

Metaprogramming Python 2.x Supports function decorators Function wrappers Supports metaclasses (but they can only process a class after the entire class has been executed) Python 3.x Adds support for function annotation Extends power of function decorators Metaclasses can now process a class before any part of the class is processed and incrementally as methods are defined

Python 2 or 3? Use Python 2.7.x for projects using: Significant amounts of pre-existing Python 2.x code that can’t easily be ported to Python 3.x Python 2.x modules with no Python 3.x equivalent Use Python 3 (3.1 or higher) for: Everything else! In particular: Brand new projects Code making significant use of Unicode Code intended to be used after 2016/2017

Migrating from 2.x to 3.x Make sure code runs under Python 2.7.x Run Python 2.7.x with the “-3” command-line switch: Fix warnings Use the Python-provided 2to3 tool to automatically port to Python 3.x: Test under Python 3.x and manually fix any remaining issues Re-write exception handlers and any code that explicitly deals with Unicode

References (1) Should I use Python 2 or Python 3 for my development activity?: http://wiki.python.org/moin/Python2orPython3 Includes good set of links on differences between Python 2 and Python 3, and on porting to Python 3 What’s New In Python 3.0: http://docs.python.org/3/whatsnew/3.0.html

References (2) Python 3: the good, the bad, and the ugly (David Beazley) http://www.ukuug.org/newsletter/18.3/#pytho_david Note that some of the criticisms of Python 3(.0) in this article do not apply to later versions of Python 3.x (most notably the I/O performance has been fixed in Python 3.1 and later) Let’s talk about Python 3.0 (James Bennett) http://www.b-list.org/weblog/2008/dec/05/python-3000/

Porting tools Porting from Python 2.x to Python 3.x: 2to3 http://docs.python.org/3/library/2to3.html Use version that ships with release of Python 3.x to which you are porting Porting from Python 3.x to Python 2.7: 3to2 http://wiki.python.org/moin/3to2 http://pypi.python.org/pypi/3to2 http://bitbucket.org/amentajo/lib3to2 http://code.google.com/p/backport/

Questions?