-
Python SummarySummary/[Python] Summary 2024. 1. 23. 14:15
파이썬의 장점 : 범용성
* 파이썬 동작 과정
1. 소스코드 작성
2. 인터프리터가 소스코드를 한 줄씩 읽고 해석하여 Bytecode로 변환
3. Byte 코드를 Python Virtual Machin (PVM)이 기계어로 변환한다.
ByteCode : 특정 플랫폼에서 실행되는 중간 언어로, 기계어보다는 사람이 이해하기 쉽도록 만들어진 언어.
Compile : 소스코드로 작성한 프로그래밍 언어를 기계어로 바꾸어주는 기능
파이썬은 소스파일을 인터프리터가 번역하여 기계어로 변환한다.
-> C언어는 목적파일을 만드는 절차가 더 있지만 파이썬은 없다.
인터프리터 언어 : 실행 전 컴파일 하지 않고 바로 결과 확인이 가능한 언어 = 대화형 언어
Program : 명령어들의 집합. 명령어들은 순서를 갖고 논리적으로 작성되어있다.
IDLE : Intergrated Development Environment = 통합 개발 환경
-> 프로그램 개발에 필요한 도구들을 모아놓은 편집기(에디터)
* 변수
변수는 값을 저장하는 공간으로 먼저 이해하면 좋다. 구체적으로 보면 객체를 가리키는 것. 따라서 값을 변경하거나 복사하기 쉽다.
*변수 선언 규칙
1) 숫자로 시작되지 않는다.
2) 소문자와 대문자는 구별된다.
3) 영문자와 밑줄(_), 숫자로 구성된다.
4) 이름 사이에 공백이 들어가지 않는다.
5) 상수는 대문자로만 구성 ( 필수 X , 관습 )
* 연산
나눗셈은 실수로 계산된다.(/) , 정수로 계산하고 싶은 경우 (//) 사용
같은 값인지 확인 : a == b
같은 객체인지 확인 : a is b
* 문자열
1) fstring : print(f"이름 : {name:-^30} ")
2) print("{:^-30}".format(name))
3) "{0:<10}".format("hi") : 왼쪽 정렬
4) "{0:^10}".format("hi") : 가운데 정렬
5) "{0:-^10"}.forat() : 공백 '-'로 채우기
6) f{"hi":<10} : 왼쪽 정렬
print("가격 : %s" %price)
print("이름 : %s 나이 : %d " %(name, age))
print(r"C:\bin\name") : r은 특수문자를 취급하지 않고 문자열로 출력해준다.
print(f"{name} {age}")
print("{0} {1}".format(name,age))
* 문자열 관련 메소드
count : a.count('b') = b의 개수
find : a.find('b') : b의 인덱스 = 없으면 -1 리턴
index : a.index('b'): b의 인덱스 = 없으면 오류 발생
join : ' '.join(a) : a를 ' '로 합침
upper/lower : 대/소문자로 변환
lstrip/rstrip/strip : 공백 제거
replace : a.replace('a','c') = a를 c로 변환
split : a.split('-') a를 -로 나누어 저장
* 리스트 관련 함수
append : a.append(1) = 리스트에 1 추가
sort : a.sort()
reverse : a.revers()
index : a.index(3) = 3의 위치
insert : a.insert(0,4) = 0번째 인덱스에 4 삽입
remove a.remove() = 첫번째 요소 삭제
pop : a.pop() = 마지막 요소 삭제
* 리스트 축 (List Comprehension)
[표현식 for 항목 in 반복 가능 객체 if 조건]
[표현식 if 조건 else 표현식 for 항목 in 반복가능객체]
new_list = [[0 for col in range(10)] for row in range(10)] : 0으로 초기화 된 10*10 리스트
* 튜플
요소가 1개인 경우 t1= (t1,) 처럼 콤마 필요
* 사전(딕셔너리) 관련 함수
사전의 인덱싱은 대괄호[] 로 access
keys : a.keys() = key 값
values : a.values = value 값
clear : a.clear() = 초기화
get : a.get('name') = name 에 해당하는 value 출력 , 없을 경우 None
a.get('name', '호동') : default값을 호동으로 출력
items : key, value 쌍 리턴
del : del a[1] : 1을 키값으로 갖는 원소 삭제
* 집합
중괄호 {} 사
add : a.aedd(4) = 4추가 , 추가하는 원소가 1개일 경우 add 사용
update : a.update([5,6]) , 여러 개 추가할 경우 사용
remove : a.remove(2) = 2삭제
union : set.union(a,b)
intersection : set.intersection(a,b)
difference : set.difference(a,b)
* 기타 함수
map : map(len,L) = L의 요소의 길이를 리스트로 반환
zip : list(zip(L1,L2)) = L1[i]와 L2[i]를 짝 지어 리스트로 반환
enumerate : for i, n in enumerate(L) : L의 인덱스 번호와 value를 각각 i,n에 대입
* 함수(메소드)
함수란 특정 작업을 수행하는 명령어들에게 이름을 붙인 것이다.
구성 요소로는 헤더와 몸체 반환값이 있다.
* 인수(인자)와 매개변수
함수 func(parameter) / func(100)
이 때 함수를 호출할 때 적어주는 값이 인자 , 함수로 전달되서 함수 안에서 실행되는 변수가 매개변수.
* 람다 함수 (무명함수)
이름 없는 함수로 간편하게 사용할 때 쓰인다.
sum = lambda x,y:x+y => x,y를 매개변수로 하고 x+y를 표현하는 함수
* 모듈
함수나 변수들을 모아놓은 파일
import를 통해 외부 모듈 호출해서 사용가능
* 패키지
모듈을 모아놓은 것
파일 중에 __init__ 파일이 존재하여야 패키지로 인식
* 클래스
객체를 찍어내는 도구
구조체와 비슷하나 클래스 안에 구조체가 포함되는 개념. 클래스는 내부에 함수를 선언하고 사용할 수 있음.
* 상속
상위 클래스의 속성들을 물려받아 사용하는 것
* 메소드 오버라이딩
하위 클래스에서 상위 클래스의 메소드를 재정의하여 사용하는 것
* 연산자 오버라이딩
연산자를 메소드로 정의하는 것
* 다형성
하나의 코드로 다양한 작업을 처리할 수 있는 것.
* 예외 처리
try:
except [ 발생 오류 이름 as 오류 메시지 변수]:
except 2:
finally:
*파일 읽고 쓰기
f = open("text.txt","r")
r : 읽기
w : 쓰기
a : 추가하기
readline() : 첫 줄 , readlines(): 모든 줄을 요소로 갖는 리스트
read() : 모든 내용을 문자열로
with문
with open("text.txt","w") as f:
-따로 close문을 통해 파일을 닫아주지 않아도 알아서 인터프리터가 닫는다.
*내장함수/ 외장함수
* 정규 표현식
*Tkinter