Initialize a string variable in Python: “” or None?

前端 未结 11 694
鱼传尺愫
鱼传尺愫 2021-01-30 12:44

Suppose I have a class with a string instance attribute. Should I initialize this attribute with \"\" value or None? Is either

11条回答
  •  忘掉有多难
    2021-01-30 12:47

    Either might be fine, but I don't think there is a definite answer.

    • If you want to indicate that the value has not been set, comparing with None is better than comparing with "", since "" might be a valid value,
    • If you just want a default value, "" is probably better, because its actually a string, and you can call string methods on it. If you went with None, these would lead to exceptions.
    • If you wish to indicate to future maintainers that a string is required here, "" can help with that.

    Complete side note:

    If you have a loop, say:

    def myfunc (self, mystr = ""):
        for other in self.strs:
            mystr = self.otherfunc (mystr, other)
    

    then a potential future optimizer would know that str is always a string. If you used None, then it might not be a string until the first iteration, which would require loop unrolling to get the same effects. While this isn't a hypothetical (it comes up a lot in my PHP compiler) you should certainly never write your code to take this into account. I just thought it might be interesting :)

提交回复
热议问题