2019년 6월 11일 화요일

# python naming + with


python naming


코딩이라는 것을 처음 배울때 naming을 왜 해야하지?

나는 남들과 다른 특별한 사람이니까 나만의 naming을 할꺼야! 하던 때가 있었는데

얼마 못가 개발자 선배님들께서 naming을 지키시는데는 다 이유가 있다는 것을 알게 되었습니다.

아는 만큼 보이고 도움이 되는 naming 규칙에 대해 PEP 8을 참고하여 정리하겠습니다.


1.  단일 변수로 헷갈리는 알파벳을 사용하지 말자


    'l' 소문자 L   , 'I' 대문자 i 는 특정 폰트에서 1과 구분이 되지 않으므로 사용하지 맙시다.

    이와 같은 이유로 'O' 또한 0과 구분되지 않으므로 사용하지맙시다.



2.  모듈은 소문자로 된 짧은 이름



3. 클래스 이름은 PascalCase 를 따른다. 


    단어의 첫글자를 대문자로 한다(두 단어가 연결될때도 각 단어의 첫 글자를 대문자로 한다)


4. 예외 이름은 예외가 클래스이름이므로 PascalCase를 따르는데 

    대신 변수의 접미사로 Error가 붙어야한다 (예외는 에러이기때문)



5. 전역변수, 함수이름, 변수이름은 소문자를 사용한다. 

    단어사이 구분은 가독성을 위해 underscore( _ )를 이용한다.



6. 메소드 및 함수의 인수규칙은


    인스턴스 메소드의 첫번째 인수로는 항상 self를 사용합니다.
    클래스 메소드의 첫번째 인수로는 항상 cls를 사용합니다.

    ex) 클래스 메서드의 예시
         def class_method(cls):
               pass


    위와 같이 작성해주면 Class.class_method()로 호출할 수 있다.

 
    함수의 인수 규칙은 키워드가 충돌하는 경우 접미사로 underscore를 붙여주는 것으로 해결할 수 있다.

7. 상수는 모듈수준에서 정의되며 단어를 구분하는 밑줄을 포함하여 모두 대문자로 작성한다.




with 구문과 context manager


python code를 보다보면 with 를 마주칠때가 있다.

python 2.5부터 추가된 기능으로

with 구문이 실행됨에 있어서 내부적으로 __enter__와 __exit__
반드시 실행되기때문에 효과적으로 코드를 작성할 수 있게 도와준다


이때 context manager는 with구문에 쓰일수 있는 객체의 타입이고,
이는 context manager protocol을 따른다


가장 쉽게 볼수 있는 예로 file handler가 context manager 프로토콜을 따르는데

with open('example.txt' , 'w' ) as f:
    f.write("my text")

이렇게 작성을 해주면 with 구문이 동작하고 끝나는 시점에서 file close를 수행해주기 때문에 코드를 간편하게 작성해줄 수 있다.



가장 많이 본 글