It's been a while since I've done Python so I might be hazy on my syntax but that code reads to me like the if statement is only applying to the print immediately below. Especially with what you're saying of it working properly adding that basically empty else case.
So like if I were to add some imaginary grouping, instead of
if power != None: {
print(power) # this is just to test
mylcd.backlight(power)
}
You're getting
if power != None: {
print(power) # this is just to test
}
mylcd.backlight(power)
And the mylcd.backlight(power) statement is running regardless of the state of the power variable? Again it's been a few years since I've done Python so I might be misremembering the syntax rules. But that's how it's reading to me.
I'd think if it was related to initialization then the else statement wouldn't result in the display staying off as you mentioned in the post though. Either way, glad you figured it out and it's doing what you want it to now.