python으로 flask서버에서 if 문을 사용해서 클라이언트에 보내주는 return값을 다르게 해주려고 다음과 같이 코드를 짰다.
@app.route("/main/sign/userid", methods=["POST"])
def user_id_confirm():
user_id_receive = request.form['user_id_give']
# print(user_id_receive)
if user_id_receive is 'mintzzz':
result = 'available'
else:
result = 'fail'
# print(result)
# print(type(result))
return jsonify({'result': result})
그런데 user_id_reeive
의 값이 분명 mintzzz
로 출력되는데도 result값은 'fail'
이 나왔다. print()
로 출력해보면 원인은 if
문 안에 있는 것으로 보여서 의심가는 것들을 바꿔보았다. 그 중에 is
가 뭔가 미심쩍었다. 평소에 자주 써보지 않은 문법이었고 ==
과는 무엇이 다른지 정확히 공부한 적이 없었기 때문이다.
is
를 ==
으로 바꿔서 코드를 재실행해보니 원하는 결과가 나왔다. 그래서 두 문법이 다르다는 사실이 유추되었고, 무엇이 어떻게 다른지 구글링을 통해 찾아보았다.
is
는 변수가 같은 Object(객체)를 가리키면 True==
는 변수가 같은 Value(값)을 가지면 Truea = [1,2,3]
b = a
c = [1,2,3]
a is b # True
a is c # False
True
False
a = [1,2,3]
b = a
c = [1,2,3]
a == b # True
a == c # True
https://twpower.github.io/117-difference-between-python-is-and-double-equal