私は、次の python コードと、著者がリターンで「AND」ステートメントを使用した理由をよりよく理解しようとしています。
def valid_password(self, password):
PASS_RE = re.compile(r'^.{6,128}$')
return password and PASS_RE.match(password)
さらにコードを下に...
if not self.valid_password(self.password):
params['error_password'] = "Please enter a valid password."
呼び出し元に返される結果のオブジェクトを調べてみましたが、それがどのように機能するかはまだ完全にはわかりません。
これはパスワードを呼び出し元に返し、パスワードが有効かどうかのブール値を返すようですが、呼び出し元の関数がオブジェクトのブール値をチェックする方法がわかりませんか? これは私が見逃したPythonの基本的なことですか?
これの隣に同様の使用例がありますが、それは「または」ステートメントを使用しているため、さらに混乱します。
def valid_email(self, email):
EMAIL_RE = re.compile(r'^[\S]+@[\S]+\.[\S]+$')
return not email or EMAIL_RE.match(email)
ここで何が起こっているのかについてのアドバイスをいただければ幸いです。コードは機能し、期待どおりの動作を行い、正規表現に対して入力を検証し、True または False を返しますが、単純に bool を返すのではなく、このように記述されていることを本当に理解したいと思います。