Python에서 ‘is’와 ‘==’의 차이

Python 자체가 쉽고 언어가 그렇게 어려운편이 아니어서 그런지 나도 쓸때마다 너무 겉핥기로 알고있다는 생각을 많이 한다. 이미 시작은 해버렸고 이제 모르는건 바로바로 찾아서 깊게 아는게 중요!

오늘은 코드 짜다가 if문에 is를 썼는데 갑자기 is와 ==의 차이점이 궁금하다. 그 전엔 그냥 튜토리얼이 있으면 그대로 썼는데 문득 의문이 생긴다. is와 ==의 차이가 뭘까 분명히 뭔가 차이가 있을텐데…

정말 단순히 설명하면

  • is는 비교할 두 값이 같은 오브젝트 인스턴스라면 True를 반환
  • ==는 __eq__()매소드에 의해서 리턴값이 정해짐

 

https://stackoverflow.com/questions/26595/is-there-any-difference-between-foo-is-none-and-foo-none

https://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is-in-python

이 두 답변을 보면 정확하게 이해가 되는데 Java를 생각한다면 string 비교할때 ==로 비교하면 안되고 .equals()였나… 이걸로 비교해야되는 것 같은 느낌?!

Python파일에서 Django설정 사용하기

웹 크롤링을 해서 Django에 데이터를 집어넣고 싶었다. 그런데 Python파일에서는 Django를 바로 못쓰네… 하던참에 해결방법 찾음!

Django 프로젝트 맨위에 python파일을 하나 만들고 Python파일에

[code lang=”python”]

os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘기본 Django프로젝트 이름.settings’)
import django
django.setup()
from Django앱.models import 모델명

[/code]

이렇게 하면 Django에서 사용하던 모델을 그대로 사용할 수 있고! 모델 인스턴스 만들어서 save하면 바로 DB에 저장이 가능하다

Django에서 Form에 placeholder설정하기

Django를 사용하다보면 Form, ModelForm을 사용하는 일이 많이 생기는데 이럴 때 Input에 사용자들에게 입력하는 데이터를 설명할 수 있는 placeholder가 필요할 경우가 생긴다.

방법은 Field를 설정할 때 widget, attrs에 placeholder를 설정하는 방법이 있지만 나는 ModelForm을 사용하기 때문에 Field를 건들이고 싶지 않았다. 자동으로 생성해주니까… 그래서 __init__을 재정의해 placeholder를 넣는 방법이 있다.

placeholder.JPG

__init__을 재정의하고 일단 처음에 __init__을 실행시켜주고 그 다음에 내가 원하는 코드를 삽입한다.

self.fields['원하는 field명'].widget.attrs['placeholder'] = "원하는 문자열"

간단하죠?