파이썬 고급 문법
·
Python/Syntax
고급 문법 열거 가능 객체 (iterable) for 문의 순회 대상 객체이다. __iter__() 메서드로 열거 가능 객체를 획득한다. iter(호출가능한객체, 반복을끝낼값) 함수로 __iter__() 메서드를 호출할 수 있다. 반복을 끝낼 값이 나오면 StopIteration 예외가 발생한다. 만약 클래스를 직접 구현하고 멤버 변수에 리스트가 있는 상황에서, 그 리스트를 순회하려면 __iter__() 메서드의 반환 값에 iter(해당리스트) 이런 식으로 iter 함수를 이용해 반환하면 된다. 매 루프마다 __next__() 메서드를 통해 다음 요소를 받는다. 첫 요소도 이걸로 받는다. next(반복가능한객체, 기본값) 함수로 __next__() 메서드를 호출할 수 있다. 마지막 요소에서 __next_..
파이썬 모듈과 패키지
·
Python/Syntax
모듈과 패키지 모듈 비슷한 성격의 변수, 함수들을 파일로 나눠서 정의하는 것이다. 파일명이 모듈명이다. 예제 util.py INCH = 2.54 def calcsum(n): total = 0 for num in range(n + 1): total += num return total main.py import util # from util import * # 비권장 (이름 충돌 우려) print(util.INCH) print(util.calcsum(10)) ''' stdout 2.54 55 ''' 모듈 테스트 __name__ 키워드는 모듈명으로 대체된다. 단독 실행된 경우 : "__main__" 모듈로 사용된 경우 : "모듈명" 이는 모듈 개발 시 테스트하기 편하..
파이썬 파일
·
Python/Syntax
파일 파일 입출력 윈도우에서는 파일 경로를 구분할 때 \\로 작성하는게 맞지만, 파이썬에서는 /를 쓰더라도 처리해주므로 OS에 독립적으로 작성할 수 있다. 파일 열기 open(파일경로, 모드[, encoding="문자셋"]) 모드 모드 설명 r 읽기, 파일이 없는 경우 예외 발생 w 쓰기, 파일이 없으면 새로 생김 a 추가 x 쓰기용으로 여나 기존 파일이 있는 경우 실패 t text 모드로 열기 (기본값) b binary 모드로 열기 파일 쓰기 write(데이터) f = open("live.txt", "wt", encoding="UTF-8") f.write("""삶이 그대를 속일지라도 슬퍼하거나 노하지 말라! 우울한 날들을 견디면 믿으라, 기쁨의 날이 오리니""") f.write("\n추가1") f.wr..
파이썬 예외 처리
·
Python/Syntax
예외 처리 예외 기본적으로 예외가 발생하면 프로세스가 종료된다. 예외 처리 예외 발생을 감지하고 대처할 수 있다. try: 실행할 명령 except 예외 as 변수: 오류 처리문 [else: # 없어도 됨 예외가 발생하지 않을 때의 처리] scores = ["89", "89점"] try: for score in scores: score_int = int(score) print(score_int) except: print("예외가 발생했습니다.") print("작업완료") ''' stdout 89 예외가 발생했습니다. 작업완료 ''' 예외 종류 예외 설명 NameError ValueError 값의 형식이 잘못됐을 때 ZeroDivisionError 0으로 나눴을 ..
파이썬 표준 모듈
·
Python/Syntax
표준 모듈 import 다른 파일에 정의된 변수, 함수, 객체 등을 사용하기 전에 파일을 가져온다. import 모듈 [as alias] from 모듈 import 함수명 전체 파일의 크기를 줄이려면 from 모듈 import 함수명 의 형식으로 작성하는게 좋다. 아래의 출력 결과는 모두 같다. import math print(math.sqrt(2)) from math import sqrt print(sqrt(2)) import math as m print(m.sqrt(2)) from math import sqrt as sq print(sq(2)) 수학 (math) https://docs.python.org/ko/3/library/math.html 상수 상수 설명 pi 원주율 tau 원주율 2배 e 자연..
파이썬 컬렉션 관리
·
Python/Syntax
컬렉션 관리 컬렉션 관리 함수 enumerate 시퀀스의 인덱스와 요소를 튜플로 묶어서 순회한다. enumerate(시퀀스 [, start]) race = ['저그', '테란', '프로토스'] print(list(enumerate(race))) ''' stdout [(0, '저그'), (1, '테란'), (2, '프로토스')] ''' 시작 숫자를 정할 수 있다. score = [88, 95, 70, 100, 99] for no, s in enumerate(score, 1): print(f"{no}번 학생의 성적 : {s}") ''' stdout 1번 학생의..
파이썬 집합(Set)
·
Python/Syntax
집합(Set) 중괄호로 묶는다. 중복을 허용하지 않는다. 순서가 보장되지 않는다. 메서드 연산 기호 메서드 설명 추가 add(값) 집합에 값이 없으면 추가한다. 제거 remove(값) 집합에서 값을 제거한다. 값이 없으면 예외 발생 합집합 union(집합2) 두 집합의 모든 원소 교집합 & intersection(집합2) 두 집합의 공통 원소 차집합 - difference(집합2) 왼쪽 집합의 원소 중 오른쪽 집합의 원소가 아닌 것 배타적 차집합 ^ symmetric_difference(집합2) 한쪽 집합에만 있는 원소 부분 집합 포함집합이면서 여분의 원소가 더 있음
파이썬 사전(Dictionary)
·
Python/Syntax
사전(Dictionary) key와 value의 쌍으로 구성된다. 중괄호로 묶는다. { 키1:값1, 키2:값2, ... } 키를 통해 값을 반환받을 수 있다. dic = { 'boy': '소년', 'school': '학교', 'book':'책' } print(dic['boy']) print(dic['book']) ''' stdout 소년 책 ''' 존재하지 않는 키를 입력하면 예외가 발생한다. dic = { 'boy': '소년', 'school': '학교', 'book':&#39..
파이썬 튜플(Tuple)
·
Python/Syntax
튜플(Tuple) 불변 자료 집합이다. 추가, 수정, 삭제를 할 수 없고 읽기만 가능하다. 리스트보다 속도가 빠르다. 소괄호를 생략해도 된다. Unpack 튜플의 요소 하나하나에 대입하는 방식이다. names = "이순신", "김유신", "강감찬" lee, kim, kang = names # unpack print(lee) print(kim) print(kang) ''' stdout 이순신 김유신 강감찬 ''' d, m = divmod(7, 3) print("몫", d) print("나머지", m) ''' stdout 몫 2 나머지 1 '''
파이썬 리스트(List)
·
Python/Syntax
리스트(List) 리스트는 순서가 있고 변경 가능한 자료의 집합이다. 중복을 허용한다. 대괄호로 묶는다. 문자열처럼 인덱싱과 슬라이싱을 할 수 있다. nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(nums[:]) print(nums[2:5]) print(nums[:4]) print(nums[6:]) print(nums[1:7:2]) print(nums[0]) ''' stdout [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 3, 4] [0, 1, 2, 3] [6, 7, 8, 9] [1, 3, 5] 0 ''' 기존 값을 삭제하면서 동시에 새로운 값을 삽입할 수 있다. nums = [0, 1, 2, 3, 4, 5, 6..
파이썬 함수
·
Python/Syntax
함수 반복되는 코드를 함수로 정의하여 중복을 최소화한다. def 함수명(인수 목록): 명령 블록 pass 파이썬이 번역할 때 아무것도 하지 않고 넘기는 더미 역할의 키워드이다. 코드 블록을 당장 구현하지 않을 경우 pass를 쓰고 넘어가면 에러가 발생하지 않는다. def 함수명(인수 목록): pass 출력 함수 입력 함수 인수 변수 연산자 조건문 반복문
파이썬 반복문
·
Python/Syntax
반복문 while 문 조건이 참인 동안 명령 블록을 실행한다. while (조건): 명령 블록 for 문 컬렉션의 요소를 하나씩 꺼내서 명령 블록을 실행한다. for 제어변수 in 컬렉션: 명령 블록 break 반복문 탈출 continue continue 이후 명령을 실행하지 않고 다음 반복을 시작한다.
파이썬 조건문
·
Python/Syntax
조건문 if 조건이 참이면 명령 블록을 실행 if (조건): 명령 age = int(input("나이를 입력하세요 : ")) if age < 19: print("애들은 가라") 비교 연산자 연산자 설명 == 같다 != 다르다 좌변이 우변보다 크다 = 좌변이 우변보다 크거나 같다 논리 연산자 연산자 설명 and 두 조건이 모두 참이면 참 or 두 조건 중 하나라도 참이면 참 not 조건이 거짓이면 참 거짓 값 False None 0 "" : 비어있는 문자열 [], () : 비어있는 컬렉션 블록 구조 코드 블록은 모두 동일한 들여쓰기를 해야 한다. 전체적인 형태 if 조건1: 명령 블록 elif 조건2: 명령 블록 ... else: 명령 블록
파이썬 연산자
·
Python/Syntax
연산자 대입 및 산술 대입 변수에 값을 저장하는 것이다. 연산의 결과를 값으로 사용할 수 있다. 선언하지 않은 변수를 읽으면 예외가 발생한다. NameError: name &#39;변수명&#39; is not defined 산술 기호 설명 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 ** 거듭제곱 // 몫 % 나머지 복합 대입 연산자 변수의 반복 사용을 줄여주는 축약 표현이다. a += 1 a -= 1 a *= 1 a /= 1 a **= 1 a //= 1 a %= 1 타입 변환 정수와 문자열 문자열끼리만 + 연산자로 연결할 수 있다. 다른 타입을 연결하려면 str() 함수로 변환해야 한다. 변환 함수 함수 설명 str() 문자열로 변환 int() 10진수로 변환 int(정수, 진법) 진법 기반으로 정수를 10진..
파이썬 변수
·
Python/Syntax
변수 변수의 범위 지역 변수 함수 내에서만 사용 가능한 변수이다. 전역 변수 어디에서든 접근 가능한 변수이다. global 키워드를 붙여서 전역 변수로 사용할 수 있다. price = 1000 def sale(): global price price = 500 sale() print(price) &#39;&#39;&#39; stdout 500 &#39;&#39;&#39; docstring 함수의 매뉴얼을 작성하는 방식이다. help(함수명) 함수를 호출할 때 나오는 내용이다. 함수 코드 블록 앞에 문자열로 지정한다. def calcsum(n): """1 ~ n까지의 합계를 구해 리턴한다""" total = 0 for i in range(n+1): total += i return total help(calc..
파이썬 문자열
·
Python/Syntax
문자열 큰 따옴표나 작은 따옴표로 묶으면 문자열이다. 여러 줄을 표현할 때는 끝에 \를 붙이고 줄바꿈을 하거나, 문자열을 삼중 따옴표(&#39;&#39;&#39;, """)로 묶으면 된다. 이스케이프 시퀀스(escape sequence, 확장열) 확장열 설명 \n 개행 \t 탭 \" 큰따옴표 \&#39; 작은따옴표 \ \ 문자 아스키 코드 다음과 같은 함수로 아스키 코드와 문자를 서로 변환할 수 있다. print(ord(&#39;a&#39;)) print(chr(98)) for c in range(ord(&#39;A&#39;), ord(&#39;Z&#39;)+1): print(chr(c), end=&#39;&#39;) &#39;&#39;&#39; stdout 97 b ABCDEFGHIJKLMNOPQRST..
파이썬 인수
·
Python/Syntax
인수 함수로 값을 전달했을 때 이를 저장하는 변수 함수 내부에서 사용한다. 가변 인수 인수의 수가 고정되지 않고 호출 시 원하는 만큼 인수를 지정할 수 있다. 튜플로 받아서 처리한다. 일반 인수보다 뒤에 위치해야 한다. 함수 당 하나만 사용할 수 있다. 예시 인수명 앞에 * 를 붙여서 가변 인수임을 표시한다. def intsum(*ints): total = 0 for num in ints: total += num return total print(intsum(1, 2, 3)) # ints = (1, 2, 3) print(intsum(5, 7, 9, 11, 13)) # ints = (5, 7, 9, 11, 13) print(intsum(8, 9, 6, 2, 9, 7, 5, 8)) &#39;&#39;&#39..