WEBS 동아리 스터디로 다음과 같이 처음 시작하는 파이썬으로 제대로된 파이썬 공부를 시작 하였다.
http://www.yes24.com/Product/Goods/29289816
처음 시작하는 파이썬 - YES24
파이썬으로 프로그래밍에 입문하자!데이터 분석, 금융, 자연 과학 등 다양한 분야에서 각광받는 언어 파이썬. 개발자가 아니더라도 개발자가 되고 싶다면, 개발자지만 파이썬을 처음 시작한다
www.yes24.com
책 구매는 yes24 등등에서 할 수 있다.
[chapter 1] 파이(py) 맛보기
1장의 내용은 python에 대해서 맛보는 chapter 이였다.
프로그래밍이랑 올바른 단어와 규칙을 학습 하는것, 다음과 같은 예문을 통해서 알 수 있었다.
다음과 같이 wayback machine을 이용한 옛날 웹 사이트를 탐방 하였다.
웹 api, json, requests를 사용한 것으로 다음에 배울 것이다.
그러면 python은 도대체 어디에 쓰이나?
Webs을 포함한 GUI
서버/클라이언트 웹
대용량 데이터 처리를 지원하는 Backend server
클라우드
모바일 디바이스
임베디드 디바이스
인공지능
.. 등등 다양한 곳에서 활용된다.
2021/8월 기준 2위인 언어이다.
Python은 매우 간결하고 간단하다.
C/C++은 매우 어렵다, low level 언어로 Python을 포함한 대부분의 운영체제는 C/C++ 이다.
하지만 메모리 관리가 너무 어렵다. -> Python은 동적언어로 변수 타입을 사용하기전에는 필요 x
python의 대화식 인터프리터는 다음과 같이 사용이 가능하다.
우선 python을 설치 하자.
그리고 cmd, 혹은 window powershell애 python을 입력하면 다음과 같은 창이 나올 것 이다!
import this 를 입력하면 python 의 철학을 볼 수 있다. IDE는 Pycharm 또는 VSCODE를 추천
[chapter 2] 데이터: 타입, 값, 변수, 이름
python data는 object이다.
객체란 메모리에 할당 된 것으로 프로그램에 사용되는 데이터 또는 식별자에 의해서 참조되는 공간이다.
python은 메모리에 객체로 래핑 한다.
기본 data type은 다음과 같다.
가변성이란?
불변 객체는 객체 생성 이후 값을 변경 할 수 없는 object
가변 객체는 객체 생성 이후 값을 변경 가능한 object
하지만 객체의 타입을 모두 못 바꾼다. 파이썬은 강타입 언어
한가지 예를 보면 다음과 같다.
다음과 같은 성질을 기본적으로 이해 해야한다.
python data 값을 명시하는 두가지 방법이 존재한다.
- 리터럴
- 변수
다양한 데이터 타입에 따라 리터럴 지정 방법에 대해 나온다.
변수는 컴퓨터 언어의 핵심 개념이며, 파이썬 변수의 이름 규칙은 다음과 같다.
-소문자 (a~z)
-대문자 (A~Z)
-숫자(0~9)
-언더바(_)
-대소 문자 구분
-숫자가 아닌 문자나 언더바로 시작
-언더바로 시작하면 특별한 취급(9장)
-파이썬 키워드는 사용블가
키워드가 햇갈리면 다음과 같이 입력하면 keyword list를 볼 수 있다.
python은 = 를 통해 할당하며, == 는 비교이다,
변수는 단지 이름이다. 이것은 컴퓨터 언어 마다 다르다.
특히 리스트 같은 가변 객체를 사용할 때는 필수다.
할당은 값을 복사가 아니라 , 단지 데이터를 포함하는 메모리 공간의 객체에 이름을 붙이는 것 이다.
객체의 타입 확인법은 다음과 같다.
y = 5
x = 12 - y
x
이 과정은 다음과 같다.
값 5인 정수 객체 생성
변수 y가 객체 5를 가르키도록 한다
값이 12인 정수 객체 생성
객체 값 12와 변수 y가 가르키는 값 5를 뺀다
값 7인 객체 생성
x가 7인 객체를 가리킨다
x가 가르키는 새로운 객체의 참조횟수를 증가
x가 가르키는 값 출력..
너무 이론적인 내용이라 좀 지겨울수도 있다.
다음과 같이 한번에 다양한 이름 할당이 가능하다. 메모리 주소는 같다,
이름을 재할당 하면 다음과 같이 변한다.
참조 횟수만 감소. 증가한다.
A = 1, 1 객체 참조 횟수 1
A = 2 1 객체 참조 횟수 0, 2는 1
값을 복사할때는 불변 객체와 가변 객체가 다음과 같이 다르다.
[chapter 3] 불리언
True or False Python 특수 함수 bool()은 모든 파이썬 data type을 불리언으로 변환
0이 아닌 것은 모두 true이다.
분수나 소수점 x 정수 앞에 부호가 가능하다. 10진수 외 다른 진수로 숫자 표현 가능
연산 순서는 C/C++ 과 동일하다.
이외에도 다양한 것들이 있다.
[chapter 4] if
주석은 # 으로 한다.
#은 해시, 샤프, 파운드, 옥토소프 같이 다양한 이름이 존재하며, 문자열 안에 주석이 있으면 문자로 인식한다.
라인 유지하기는 \로 한다(역 슬래쉬) 코드가 길어 지는 것을 방지한다.
비교하기, if , elif , else 를 사용한다.
기존 C/C++ 과 비슷하면서도 조금 다르다.
조건 테스트시 괄호가 필요 없다.
and or not 이 사용된다.
다음은 모두 False이다.
null, 정수 0, 부동소수점 0.0, 빈문자열, 빈 리스트[], 빈 튜플 (), 빈 딕셔너리 {}, 빈 셋 set()
멤버십 연산자 in은 다음과 같이 사용이 가능하다. Set list tuple string dict
[chapter 5] 특수문자열
C/C++과는 다르게 “~~”, “”~~”” 작은 따음표 , 큰 따음표 두개로 문자열 생성이 가능하다.
“””~~”””, “”””””~~“””””” 도 가능하다.
“~~~~””~~“”~~~~” 도 가능하다.
“”~~~~~”~~~”~~~~””도 가능하다.
세개의 작은 따음표는 보통 여러줄의 문자열에 많이 쓰인다.
print는 따음표를 제거 한 뒤에 출력한다.( 인터프리터는 나두며 \n같은 이스케이프 문자도 그대로 출력한다)
문자열 타입으로 변환하는 str
\ 역슬래쉬 \n 을 줄바꿈 백슬래쉬를 입력 하고 싶으면 \\(역슬래쉬 두번)을 쓰면 된다.
결합의 +는 자동으로 띄어쓰기를 하지 않는다.
복제의 *는 + 보다 우선순위가 높다.
오프셋에 따라 다음과 같이 문자 추출 가능하다.
Index 밖으로 할 시에 error 발생한다.
문자열은 불변 이므로 replace로 바꿔야한다.
replace 시 할당 하지 않으면 letter은 바뀌지 않는다.
슬라이스로 부분 문자열 추출
[ : ] 처음부터 끝까지 전체를 추출한다
[start : ] start 오프셋 부터 끝까지 추출한다.
[ : end] 맨 처음부터 end-1 오프셋 까지 추출한다.
[start : end] start 부터 end-1 오프셋 까지 추출한다.
[start : end : step] start 부터 end-1 까지 step 만큼 뛰면서 추출한다.
다음과 같이 역순으로 출력이 가능하다.
이것은 error가 발생하지 않는다, 이유는 slice는 단지 scan이다.
문자열을 조작 하기 위해서 + 와 같은 것을 사용 했지만, 매우 제한적이다.
len()은 길이를 얻는 함수이다. len 은 다른 시퀀스 type에도 사용가능하다.
Split 메서드는 문자열에만 사용이 가능하다.
인수로 “,” 를 전달 한 경우, 두번째는 아무것도 안 준경우 list가 return 된다.
join은 split과 반대이다.
split() 메서드는 string.join(list) 형식이다.
문자열의 일부를 대체 하기 위해서는 replace()메서드를 사용한다.
일치하는 모든 것을 교체한다. 숫자를 줘서 교체하는 개수를 조정 할 수 있다.
strip은 문자열 맨 앞(left), 문자열 맨 뒤쪽(right)의 padding 문자 (여백또는 공백)를 제거 하는 것이다
strip()에 인수가 없으면 “ “, “\t”, “\n” 양쪽 끝을 제거한다.
lstrip()은 왼쪽, rstrip()은 오른쪽이다.
다음과 같이 여러 문자를 인수로 줄 수도 있다.
Python에는 많은 문자열 메서드가 있다.
Startswith은 시작 부분을 체크한다, endswith은 마지막 부분을 체크한다.
Startswith은 시작 부분을 체크한다, endswith은 마지막 부분을 체크한다
Find와 index는 해당 문자열의 시작 오프셋을 리턴한다. 다른 점은 없으면 find는 -1를, index는 error를 발생시킨다. 맨 처음 나온 단어의 오프셋을 리턴한다
rfind와 rindex 메서드는 뒤에서 부터 탐색을 시작한다.
Count는 몇 개가 들어 있는지 세는 것, isalnum은 모두 숫자와 알파벳인지 체크 하는 것이다.
이외에도 다양한 메서드들이 있지만, 외우는 것이 아닌 필요할 때 찾아 쓰는 것이다.
조금 더 알아보면 다음과 같은 것이 있다.
https://www.w3schools.com/python/python_ref_string.asp
Python String Methods
Python String Methods Python has a set of built-in methods that you can use on strings. Note: All string methods returns new values. They do not change the original string. Method Description capitalize()Converts the first character to upper case casefold(
www.w3schools.com
문자열을 지정 한 공간에서 정렬 시킨다. 이때 정렬은 공간을 정렬하는 것 이다.
앞에서 문자열을 + 를 이용하여 연결 하였지만, 너무 제한적이다.
디양한 포매팅을 이용하여 보고서나 특정 양식 등의 출력을 생성 할 수 있다.
문자열 포맷팅은 총 3개가 있다.
Python 2.3 : 옛스타일
Python 2.6 이상 : 새 스타일
Python 3.6 이상 : f-문자열
옛 스타일은 format_string % data 형식이다.
%s : 문자열 , 모든 데이터 타입에 사용 할 수 있으며, 공백 없이 문자열로 지정한다.
%d : 10진수
%x : 16진수
%o : 8진수
%f : 10진수 부동 소수점
%e : 지수로 나타낸 부동 소수점
%g : 10진 부동 소수점 혹은 지수로 나타낸 부동소수잠
%% : 리터럴
너무 복잡하고 제한 적 이므로 사용하는 것을 추천하지 않는다.
옛 스타일 포맷팅은 계속 사용이 가능 하지만, Python3에서는 {}.format() , 3.6이상에서는 f-문자열을 추천한다.
사용법은 다음과 같다.
포메팅 문자열 정의는 다음과 같다.
맨 처음 “:” 이 온다
그 다음 채우기 문자(optio으로 생략 가능, 기본값 “ “)
그 다음 선택적 정렬 문자 , 왼쪽 정렬이 기본값 이며, < 왼쪽, > 오른쪽 ^ 가운데 정렬
숫자에 대한 부호 문자 (옵션) 기본값으로 음수에만 부호(“-”)가 붙는다.
최소너비(옵션) 최소너비 및 최대 문자를 구한다.
최대문자(옵션)
변환타입 등등..
예를 들면 다음과 같다.
제일 최신 스타일이며, python 3.6 이상에서는 무조건 사용하는 것이 좋다.
첫 인용부호 앞에 문자 f 또는 F를 입력한다.
F문자열은 보다 코드가 읽기 쉬워지는 장점이 있다.
다음과 같은 표현식도 가능하다.
다음과 같이 표현식으로도 사용이 가능하다.
= 다음에 : 및 너비, 정렬과 같은 포매팅 인수가 사용 가능하다.
연습문제는 다음과 같이 github에 upload 할 것이다.
https://github.com/kimhyeonwokk/introducing_python_solution
GitHub - kimhyeonwokk/introducing_python_solution: Practice Solution in Introducing Python Books
Practice Solution in Introducing Python Books. Contribute to kimhyeonwokk/introducing_python_solution development by creating an account on GitHub.
github.com
'PYTHON' 카테고리의 다른 글
[처음 시작하는 파이썬] 3주차 스터디 정리 [함수] (0) | 2021.09.17 |
---|---|
[처음 시작하는 파이썬] 2주차 스터디 정리 [반복문: while과 for 문], [튜플과 리스트], [딕셔너리와 셋] (0) | 2021.09.09 |