Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Defining constant strings

Reply
Thread Tools

Defining constant strings

 
 
Hans
Guest
Posts: n/a
 
      08-27-2006
Hi,

I want to define a couple of constant strings, like in C:
#define mystring "This is my string"
or using a const char construction.

Is this really not possible in Python?

Hans
 
Reply With Quote
 
 
 
 
Tal Einat
Guest
Posts: n/a
 
      08-27-2006

Hans wrote:
> Hi,
>
> I want to define a couple of constant strings, like in C:
> #define mystring "This is my string"
> or using a const char construction.
>
> Is this really not possible in Python?
>
> Hans


It is really not possible.

The Pythonic way (as far as I have come to know it) is to stop trying
to protect yourself from yourself, and just don't change something
which should be constant. Good documentation (including in-code
comments) and good design are better for preventing programming errors
than defining things as constant.

Actually, you can't really define anything as constant in C either. A
#define can be overriden, a 'const' variable can be casted. These are
merely conventions which are enforced to some degree by compilers, but
can easily be worked around.

There are conventions for constant values in Python too. Usually,
variables with an all uppercase name are used. As for variables,
functions, attributes, methods etc. which shouldn't be changed/used
outside a certain module/class: these are usually prefixed with an
underscore ("_"). These are not enforced by the interpreter at all,
though.


As a side note, Python strings are actually all constants, or
"immutable" in Python-ish. The variables which reference string objects
can be changed to reference any other object - that's the nature of
Python variables. But the strings themselves don't change.

- Tal

 
Reply With Quote
 
 
 
 
Tal Einat
Guest
Posts: n/a
 
      08-27-2006
Hans wrote:
> Hi,
>
> I want to define a couple of constant strings, like in C:
> #define mystring "This is my string"
> or using a const char construction.
>
> Is this really not possible in Python?
>
> Hans


One last note:

If you truly insist on having constant variables, you could write a
class which implements such behavior. You can write a simple class
which answers your specific needs quite easily.

Or you could go for a more generic approach, such as this:
http://aspn.activestate.com/ASPN/Coo...n/Recipe/59878

- Tal

 
Reply With Quote
 
Peter Otten
Guest
Posts: n/a
 
      08-27-2006
Hans wrote:

> I want to define a couple of constant strings, like in C:
> #define mystring "This is my string"
> or using a const char construction.
>
> Is this really not possible in Python?


No, this is not really not possible in Python:

$ ls
preprocess.pyp
$ cat preprocess.pyp
#define MYSTRING "Hello, world"
def f():
print "Goodbye, " MYOTHERSTRING
print MYSTRING
f()
$ gcc -DMYOTHERSTRING="'sanity'" -xc -E preprocess.pyp -o preprocess.py
$ python preprocess.py
Hello, world
Goodbye, sanity
$



Peter
 
Reply With Quote
 
danielx
Guest
Posts: n/a
 
      08-27-2006
I would really like to highlight something Tal has already said: Python
strings are immutable. That means if you construct a string object, you
don't have to worry about someone else going in and changing that
object. What might happen, however, is that someone might reassign a
variable you have which points to that object. You can tell people not
to do this (although you can't force them) using a mechanism Tal has
also described. You give your variable a name which is all caps.

Hans wrote:
> Hi,
>
> I want to define a couple of constant strings, like in C:
> #define mystring "This is my string"
> or using a const char construction.
>
> Is this really not possible in Python?
>
> Hans
> ------=_NextPart_000_004E_01C6C9FF.C5137CF0
> Content-Type: text/html; charset=iso-8859-1
> Content-Transfer-Encoding: quoted-printable
> X-Google-AttachSize: 902
>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> <HTML><HEAD>
> <META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
> <META content="MSHTML 6.00.2900.2604" name=GENERATOR>
> <STYLE></STYLE>
> </HEAD>
> <BODY bgColor=#e6e3df>
> <DIV><FONT face=Arial size=2>Hi,</FONT></DIV>
> <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2>I want to define a couple of constant strings, like
> in C:</FONT></DIV>
> <DIV><FONT face=Arial size=2>#define mystring "This is my string"</FONT></DIV>
> <DIV><FONT face=Arial size=2>or using a const char construction.</FONT></DIV>
> <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2>Is this really not possible in Python?</FONT></DIV>
> <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2>Hans</FONT></DIV></BODY></HTML>
>
> ------=_NextPart_000_004E_01C6C9FF.C5137CF0--


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Strings, Strings and Damned Strings Ben C Programming 14 06-24-2006 05:09 AM
Defining a constant in a class Joe Van Dyk C++ 8 04-21-2006 08:47 PM
defining a flag-dependent constant valentin tihomirov VHDL 3 11-28-2004 04:15 AM
need help defining Constant memory requirement Jani Yusef Python 8 09-21-2004 01:20 PM
defining or not defining destructors johny smith C++ 8 07-02-2004 08:51 AM



Advertisments