■ 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에 백준 알고리즘 풀이에 딱히 다른 코멘트를 안달았었는데,
나중에 이걸 볼까? 본다고 한들 도움이될까? 생각이 들었음.
앞으로는 사용된 코드는 뭐고, 왜 썼는지, 왜 실수를 했고 어떤것을 찾아보았는지 등에 대한 내용을 적도록
지속보완해나갈 예정
'DEV > 파이썬 이론' 카테고리의 다른 글
파이썬 코딩 :: 파이썬 외부 패키지 (0) | 2022.09.06 |
---|---|
파이썬 코딩 :: 파이썬 패키지(Package) (0) | 2022.09.06 |
파이썬 코딩 :: 파이썬 모듈(Module) (0) | 2022.09.05 |
파이썬 코딩 :: 파이썬 문법, 알고리즘_TIL#05 (0) | 2022.09.02 |
파이썬 코딩 :: 파이썬 불러오기(텍스트 파일), 파이썬 split, strip (2) | 2022.09.02 |
댓글