基本上,我收到了UnboundLocalError: local variable 'pw_is_long' referenced before assignment
,并看到使用global
关键字有助于在函数中消除这一点。使用它后,我得到NameError: name 'pw_is_long' is not defined
我正在硒和instagram网站上工作。在将其放入函数之前,这段代码已经起作用。
我的第一个功能:
password = input("Password\n")
def pw_minimum_length(pw):
if len(pw) > 5:
return(True)
else:
return(False)
pw_is_long = pw_minimum_length(password)
第二个主要功能:
def login(username, password):
#some if-else code
#selenium element selecting & clicking
#the following is the heirarchy inside the function where I am having this issue
while (condition):
if (condition):
password = input("Password\n")
global pw_is_long #when this line was not here, I was getting UnboundLocalError
pw_is_long = pw_minimum_length(password)
while not(pw_is_long): #line throwing NameError
print("Password length must be at least 6 characters")
password = input("Password\n")
pw_is_long = pw_minimum_length(password)
任何答案都是有帮助的。预先感谢。
答案 0 :(得分:1)
如果condition
是False
,则它不会运行if condition
,并且不会创建变量pw_is_long = ...
,但您需要在while not pw_is_long
中使用它>
我看到两种可能性:
首先:首先使用一些默认值创建pw_is_long
-即。 None
或Flase
或0
def login(username, password):
pw_is_long = False
while condition:
if condition:
password = input("Password\n")
pw_is_long = pw_minimum_length(password)
while not pw_is_long:
print("Password length must be at least 6 characters")
password = input("Password\n")
pw_is_long = pw_minimum_length(password)
第二:也许您应该将其嵌套并在while
内运行if
def login(username, password):
while condition:
if condition:
password = input("Password\n")
pw_is_long = pw_minimum_length(password)
while not pw_is_long:
print("Password length must be at least 6 characters")
password = input("Password\n")
pw_is_long = pw_minimum_length(password)