A Print function for different versions of python

Gribouillis 1 Tallied Votes 801 Views Share

This snippet defines a Print function which can be used with python 2.4, 2.5, 2.6 and 3.0 (for 3.0 this is just the built-in print function). It's interface is that of the python 3.0's print. It simplifies the task of writing transitional code which runs under python 2.5 and python 3.0.

# module cbprint
# (C) 2008 Gribouillis at www.daniweb.com

"""This module defines a Print function to use with python 2.x or 3.x.

Usage:
  from cbprint import Print
  Print("hello", "world")

It's interface is that of python 3.0's print. See
http://docs.python.org/3.0/library/functions.html?highlight=print#print
"""
__all__ = ["Print"]
import sys
try:
  Print = eval("print") # python 3.0 case
except SyntaxError:
  try:
    D = dict()
    exec("from __future__ import print_function\np=print", D)
    Print = D["p"] # 2.6 case
    del D
  except SyntaxError:
    del D
    def Print(*args, **kwd): # 2.4, 2.5, define our own Print function
      fout = kwd.get("file", sys.stdout)
      w = fout.write
      if args:
        w(str(args[0]))
        sep = kwd.get("sep", " ")
        for a in args[1:]:
          w(sep)
          w(str(a))
      w(kwd.get("end", "\n"))
Member Avatar for leegeorg07
leegeorg07

where would you put this to have it as a built in function?
i have python 2.5 but it says python2.4.6 if that helps

martineau 19 Newbie Poster

@leegeorg07, you could make it built-in for the rest of the execution of your script by making it a part of the __builtins__ module by adding these lines at the end:

    import __builtin__   # use "builtins" in Python 3
    __builtin__.Print = Print

Although this practice is often frowned-up.

Gribouillis commented: good idea +13
Lucaci Andrew 140 Za s|n

@martineau you are knew to our forums, but we have a rule going on here: if the thread is older than 3 months, there's no need to resurface it. I'm not saying that your advice is bad. I'm just saying that @leegeorg07 posted his question 4 years ago, and I doubt he's still searching for an answer to it.

martineau 19 Newbie Poster

@Lucaci-Andrew, Yes I'm new to the forums and knew that @leegeorg07's message was old, but thought a reply was worthwhile mainly for any other folks who might stumble across the original code snippet and related thread as I myself did.

Lucaci Andrew commented: touché +6
Lucaci Andrew 140 Za s|n

As for my mistake, early in the morning.
As for your reply: this can be easily solved searching it through {insert your preferred search engine}.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.