본문 바로가기
DEV/파이썬 이론

파이썬 코딩 :: 파이썬 문법, 효율적인 코딩 공부법_TIL#06

by 올커 2022. 9. 5.

■ JITHub 개발일지(TIL : Today I Learned) 6일차


□  TIL ::

     파이썬 알고리즘(Python Algorithm), 기초 문법, 백준 실습

1. 파이썬 언어의 이해

  - 컴파일 언어 vs 인터프리터 언어

    파이썬은 인터프리터 언어로 코드를 컴파일 하는 단계가 없기 때문에 코드가 실행되기까지의 속도는 빠르지만,

    런타임에서 코드가 동작하는 시간은 비교적 느린 편

2. 코드 컨벤션

 - 코딩을 하고 나중에 코드를 확인하게 되면 해석이 어려운 경우가 많음.

   이를 방지하기 위해 각 언어에 맞는 컨벤션 스타일에 맞춰 코드작성할 필요가 있다.

   파이썬에서는 PEP-8이라는 컨벤션 가이드를 제공하고 있음

 - 네이밍 컨벤션 : 변수, 함수, 클래스 등을 네이밍 할 때 사용하는 컨벤션 스타일

   (1) Pascal : PythonIsVeryGood과 같이 각 단어를 대문자로 구별

   (2) Camel

        Lower Camel Case : pythonIsVeryGood, 

        Upper Camel Case : PythonIsVeryGood, 

   (3) Snake : python_is_very_good과 같이 각 단어를 언더바(_)로 구분

  - 변수나 함수를 네이밍할 때는  ▶ Snake 표기법

  - Class를 네이밍할 때에는         ▶ Pascal 표기법 

3. 자료형

- 자료형의 종류 : integer(int), float, string(str), list, tuple, set, dictionary(dict), boolean(bool)

  *set 자료형은 numbers = {1, 2, 3, 4, 5}와 같이 선언하며 중복된 데이터를 담을 수 없음

  *dictionary 자료형은 아래와 같이 items라는 함수를 사용하면 Key와 Value를 한꺼번에 for문을 반복할 수 있다.

for key, val in a.items():
	print("key = {key}, value={value}".format(key=key,value=val))

>>> key = alice, value=[1, 2, 3]
>>> key = bob, value=20
>>> key = tony, value=15
sample_dict = {
		"key" : "value".
		"key1" : "value1".
		"key2" : "value2".
		"key3" : "value3".
}

for k, v in sample_dict.items():
	print(f"key : {k}, value : {v}")

>>> [("key", "value"), ("key1", "value1"), ("key2", "value2"), ("key3", "value3")]

  * float는 파이썬에서 계산시 아래와 같은 오류를 만들기 때문에 되도록 정수형을 사용하는 것이 좋다.

    (오류가 나는 이유? : 유튜브 링크)

a = 1.1
b = 0.1
print(a+b)
print(1.2000000000000002 == 1.1 + 0.1)

>>> 1.2000000000000002
>>> True

  *문자열은 큰따옴표, 작은따옴표 크게 차이없이 사용한다.

   그러나 따옴표를 문자로 사용하고 싶은 경우 아래와 같은 방식으로 입력해야 한다.

""무궁화""     # 오류발생

'"무궁화"'
'''"무궁화"'''
"\"무궁화\""

 - 리스트, 튜플은 내부에 어떤 자료형이든 가져올 수 있다.

sample_list = [
	1,
    "문자",
    ['리', '스', '트'],
    {'key', 'value'},
    True
]

sample_tuple = (
	1,
    "문자",
    ['리', '스', '트'],
    {'key', 'value'},
    True
)

 - set의 경우 리스트, 딕셔너리는 가져올 수 없다.

  *set은 중복된 요소를 갖지 않는 성격이 있다.

sample_tuple = {
	1,
    "문자",
    True
}

- 변수 유효범위

 (1) 지역변수(local variable)

 (2) 전역변수(global variable) : 전역변수는 예상치 못한 오류를 발생시킬 수 있기 때문에 사용하지 않는 것을 권장

 - 어떤 코드?

 (1) 가독성 좋고 기능까지 좋은 코드

 (2) 가독성 좋고 기능 별로인 코드

 (3) 가독성 안 좋고 기능도 안 좋은 코드

2. 효율적인 코딩 공부법 (강민철 튜터님)

 - 서류 준비 : 사용자가 있는 프로젝트 경험, 실무에서 사용되는 개념들(인증, DB, 배포)을 녹여낸 프로젝트,

                     문제 해결력을 높이기 위한 CS 지식(자료구조, 알고리즘, 네트워크, 데이터베이스, 컴퓨터 구조/운영체제)

 - 코딩 학습의 순서 :

   1) 프로그래밍 언어 : 언어학자 전직X, 익숙해지기 O!

       코딩은 수험공부가 아니다! 직접 해보면서 익숙해지는것이 중요!

       알고리즘은 코딩테스트 반복을 통해 익숙해진다.

   2) 프레임워크/라이브러리 : 프레임워크는 기계! 사용법을 익히자는 마음가짐으로

   3) 프로젝트 : 완벽하게, 타인에게 설명할 수 있을 정도

     *프로젝트에 사용된 기술을 깊게 알기에 앞서, 왜 프로젝트레 이 라이브러리/코드를 사용했는지 설명할 수 있어야 함

      (ex. for문의 내부 동작을 알기보다는 왜 for문을 썼는지 설명할 수 있어야 한다.)

     ▶ TIL을 꾸준히 잘 쓰는 것이 큰 도움이 된다. 코드를 갖다 붙이는 것은 무의미하며, 이 코드를 왜 썼고,

          어떤 로직으로 구성이 되는지, 그리고 고민한 흔적들을 작성하는 것이 중요하다.

          TIL은 미래 여러분의 면접 답안지다

   4) 프로젝트 발전 : 배포, 사용자 피드백, 유지보수, 테스트

       사용자 피드백을 받는 프로젝트가 중요. 사용자가 없는 프로젝트는 무의미한 프로젝트이다.

   5) 코딩테스트 대비 : 개념잡기, 그림 그리기, 코드로 옮기기

       코딩테스트 유형은 어느정도 정형화 되어 있음

       알고리즘 테스트 연습 참고 : LEETCODE : 링크

 - 구글링도 실력이다. 자주 시도해보는 사람이 훨신 큰 아웃풋을 낼 수 있다. (*참고 링크)

* 출처 : 리틀자이언트 블로그(링크)

 - 단축키는 공부가 아니다. 하지만 설치는 공부다. (*참고 링크)

   설치가 안되는 사유들 겪으면서 성장 (경로, OS, 파이썬 버전, 환경변수 설정 등..)

 - 개발자는 평생 공부해야 하는 직장이다. (그러나 수험생처럼 공부하는 것이 아닌 '덕질'에 가깝다)

 - 깃허브 관리 : 서로를 팔로우하기, 각자의 코드/고수의 코드를 참고하는 것이 또 하나의 스터디/멘토링이 된다.


■ TIT :: Today I thought

         - 파이썬 이론을 계속 보고있지만, 어떤 코드가 좋은 코드일까는 좀 더 많은 경험이 필요

           코드 컨벤션을 인지하고 쓰도록해서 좋은 코드를 써보도록 노력이 필요

         - 사실 아직도 몇몇 알고리즘 문제를 풀면서 주석처리를 신경쓰지 못함(약간 귀찮)

           귀찮아도 계속 쓰도록 노력해보는 것이 중요!

         - 강민철 튜터님을 통해 많은 생각을 하게 됨. 정말 개발자로 성장하기 위해 필요한 말씀들을 많이 해주심

           수험생처럼 공부하기 보단 자주해서 익숙해지려 노력해보고, 그러면서 재미를 찾아 덕질의 경지까지..

         - 기존에 TIL에 백준 알고리즘 풀이에 딱히 다른 코멘트를 안달았었는데,

           나중에 이걸 볼까? 본다고 한들 도움이될까? 생각이 들었음.

           앞으로는 사용된 코드는 뭐고, 왜 썼는지, 왜 실수를 했고 어떤것을 찾아보았는지 등에 대한 내용을 적도록

           지속보완해나갈 예정 

 

반응형

댓글