Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are there any declaration keywords in Python?

Are there any declaration keywords in python, like local, global, private, public etc. I know it's type free but how do you know if this statement:

x = 5;
  • Creates a new variable.

or

  • Sets an existing one.
like image 354
Joan Venge Avatar asked Feb 20 '09 22:02

Joan Venge


People also ask

Which keyword is used to declare in Python?

The def keyword is used to create, (or define) a function.

Is there any keyword in Python?

Control Flow Keywords: if , elif , elseThree Python keywords are used for control flow: if , elif , and else . These Python keywords allow you to use conditional logic and execute code given certain conditions. These keywords are very common—they'll be used in almost every program you see or write in Python.

What are the 33 keywords of Python?

In Python, there are approximately around thirty-three (33) keywords, and a few of the keywords generally used in the program coding are break, continue, true, false, and, or, not, for, while, def, class, if, else, elif, import, from, except, exec, print, return, yield, lambda, global, etc.

Which is not a valid keyword in Python?

Rules for writing identifiers An identifier cannot start with a digit. 1variable is invalid, but variable1 is a valid name. Keywords cannot be used as identifiers. We cannot use special symbols like !, @, #, $, % etc.


1 Answers

I really like the understanding that Van Gale is providing, but it doesn't really answer the question of, "how do you know if this statement: creates a new variable or sets an existing variable?"

If you want to know how to recognize it when looking at code, you simply look for a previous assignment. Avoid global variables, which is good practice anyway, and you'll be all set.

Programmatically, you could try to reference the variable, and see if you get a "Name Error" exception

try:
    x
except NameError:
    # x doesn't exist, do something
else:
    # x exists, do something else

I've never needed to do this... and I doubt you will really need to either.

soapbox alert !!!

Even though Python looks kinda loosey-goosey to someone who is used to having to type the class name (or type) over and over and over... it's actually exactly as strict as you want to make it.

If you want strict types, you would do it explictly:

assert(isinstance(variable, type))

Decorators exist to do this in a very convenient way for function calls...

Before long, you might just come to the conclusion that static type checking (at compile time) doesn't actually make your code that much better. There's only a small benefit for the cost of having to have redundant type information all over the place.

I'm currently working in actionscript, and typing things like:

var win:ThingPicker = PopUpManager.createPopUp(fEmotionsButton, 
       ThingPicker, false) as ThingPicker;

which in python would look like:

win = createPopup(parent, ThingPicker)

And I can see, looking at the actionscript code, that there's simply no benefit to the static type-checking. The variable's lifetime is so short that I would have to be completely drunk to do the wrong thing with it... and have the compiler save me by pointing out a type error.

like image 172
Jim Carroll Avatar answered Nov 03 '22 04:11

Jim Carroll