Is it possible only to declare a variable without assigning any value in Python?

后端 未结 14 1845
暖寄归人
暖寄归人 2020-11-30 17:26

Is it possible to declare a variable in Python, like so?:

var

so that it initialized to None? It seems like Python allows this, but as soon

14条回答
  •  情深已故
    2020-11-30 17:56

    I'm not sure what you're trying to do. Python is a very dynamic language; you don't usually need to declare variables until you're actually going to assign to or use them. I think what you want to do is just

    foo = None
    

    which will assign the value None to the variable foo.

    EDIT: What you really seem to want to do is just this:

    #note how I don't do *anything* with value here
    #we can just start using it right inside the loop
    
    for index in sequence:
       if conditionMet:
           value = index
           break
    
    try:
        doSomething(value)
    except NameError:
        print "Didn't find anything"
    

    It's a little difficult to tell if that's really the right style to use from such a short code example, but it is a more "Pythonic" way to work.

    EDIT: below is comment by JFS (posted here to show the code)

    Unrelated to the OP's question but the above code can be rewritten as:

    for item in sequence:
        if some_condition(item): 
           found = True
           break
    else: # no break or len(sequence) == 0
        found = False
    
    if found:
       do_something(item)
    

    NOTE: if some_condition() raises an exception then found is unbound.
    NOTE: if len(sequence) == 0 then item is unbound.

    The above code is not advisable. Its purpose is to illustrate how local variables work, namely whether "variable" is "defined" could be determined only at runtime in this case. Preferable way:

    for item in sequence:
        if some_condition(item):
           do_something(item)
           break
    

    Or

    found = False
    for item in sequence:
        if some_condition(item):
           found = True
           break
    
    if found:
       do_something(item)
    

提交回复
热议问题