在python中函数调用后获取局部变量



我在python中有一个函数可以更改我的帐户密码。如下所示:

def f(account):
new_password = # Some random string generation
# Do something and send password change request to remote
account.password = new_password
account.save()

在上面功能的第二行中,我发送了一个更改密码的帖子请求,然后进行一些处理,最后保存我的新密码。在处理阶段出现了一些错误,但不幸的是,我的请求已发送到服务器。我已经调用了python shell中的函数,现在我的密码已经更改,但我没有密码。是否可以从python shell中获取new_password变量?

首先,这不是有效的Python代码。函数不是用function定义的,而是用def定义的。(似乎你在看完这篇文章后更新了你的问题(。

如果函数确实是用account对象调用的,那么调用方在调用后将可以访问它。所以account.password应该有密码,除非account.save()将其删除。

例如,这可以工作:

def f(account):
new_password = # Some random string generation
# Do something and send password change request to remote
account.password = new_password
account.save()
account = Account()  # do here whatever you do to get an account object
try:  # Trap errors
f(account)
except:
print("Something went wrong...")
finally:  # Whether an exception occurred or not, print the password
print("The password is:", account.password)

同样,这只能在account.save()没有破坏分配给account.password的值的情况下提供密码。

如果您可以根据需要更改f函数,则在该函数中包含错误处理,并让其返回密码:

def f(account):
new_password = # Some random string generation
# Do something and send password change request to remote
account.password = new_password
try:  # Trap errors
account.save()
except:
print("Something went wrong...")
return new_password
account = Account()  # do here whatever you do to get an account object
new_password = f(account)  # now you will have the password returned
print("The password is:", new_password)

然而,如果已经调用了函数,程序结束了,那么现在当然为时已晚。在运行代码之前,您必须采取必要的预防措施,并且只有在您确信无论发生什么情况都可以恢复密码时才运行代码。

相关内容

  • 没有找到相关文章

最新更新