본문 바로가기
TIL

[TIL] 2025.01.08(수) - python 학습

by 요호유후 2025. 1. 13.
반응형

 

금일 학습사항

 1. 함수
 2. 지역변수와 전역변수
 3. 상수
 4. 2중 함수
 5. 연산자 우선순위
 6. 클래스
 7. self
 8. 매직메서드
 9. 클래스의 상속
 10. 메서드 오버라이딩과 오버로딩
 11. 예외처리
 12. 파일 입출력

 

 

각 학습별 상세내용

1. 함수

함수의 특징

▶ def 로 선언한다.

▶ 반복코드를 하나로 묶은 것이다. (재사용을 위해)

 

2. 지역변수와 전역변수

함수내에서 전역변수 사용

▶ 함수 내에서 전역변수를 바로 사용할 수 없다.

▶ 사용을 위해 변수명 앞에 "global"을 붙여줘야 한다.

num = 1000 # 전역변수

def function():
    global num  # "global 변수명" : 함수내에서 전역변수를 사용하는 방법
    num = num + 2000
    return num

 

dict(딕셔너리)의 전역변수 사용

▶ 그 이유는?? ♨

won = {"A등급" : 1000, "B등급" : 500, "C등급" : 100}

def cal(a, b, c):
    sum_cal = won['A등급']* a + won['B등급'] *b + won['C등급']*c   # dict의 경우 global 없이 전역변수 사용 가능
    return sum_cal

 

3. 상수

상수란?

변하지 않는 수

▶ 전역변수를 인자로 들고와서 함수 파라미터로 넣는 방법이 좋다.

PI = 3.14

def circle(r, inputpi):
    z = r * r * inputpi
    return z

result = circle(10, PI)
print(result)

 

4. 2중 함수
def print_text():
    text = "콩콩팥팥 수확의 기쁨"
    def txt():
        print(text)
    txt()

print_text()

 

5. 연산자 우선순위
우선순위 연산자 설명
1 (값,...), [값,...], {키:값,...}, {값,...} 튜플, 리스트, 딕셔너리, 세트 생성
2 x[인덱스], x[인덱스:인덱스], x(인수,...), x 속성 리스트(튜플) 첨자, 슬라이싱, 함수호출, 속성참조
3 await x awit 표현식
4 ** 거듭제곱
5 +x, -x, ~x 단항 덧셈(+), 단항 뺄셈(-), 비트 N 
6 *, @, /, //, % 곱셈, 행렬 곱셈, 나눗셈, 버림 나눗셈, 나머지
7 +, - 덧셈, 뺄셈
8 <<, >> 비트 시프트
9 & 비트 AND
10 ^ 비트 OR
11 | 비트 XOR
12 in, not in, is, is not
<, <=, >, >=, ==, !=
포함 연산자, 객체 비교 연산자, 비교 연산자
13 not x 논리 NOT
14 and 논리 AND
15 or 논리 OR
16 if else 조건부 표현식

 

6. 클래스

정의 구분하기!

▶ 클래스

▶ 인스턴스

▶ 객체화

 

인스턴스와 객체 비교

▶ 인스턴스와 객체는 같다.

▶ 클래스를 언급할 땐 "인스턴스" 라는 단어를 사용한다.

▶ 객체 자체를 언급할 땐 그냥 "객체" 라는 단어를 사용한다.

▶ 언급하는 상황에 따라 단어가 다를뿐이지 의미하는 바는 같다!

 

7. self

self란?

인스턴스 자기자신을 의미함

 

8. 매직메서드

메직메서드란?

▶ __init__ 과 같이 2개의 언더바로 이루어진 메서드

 

9. 클래스의 상속

클래스의 상속이란?

▶ 상속을 받으면 부모클래스의 기능을 자식클래스에서 사용할 수 있다.

class Parents:
    def play(self):
        print("놀자")


class Children(Parents):    # 부모클래스 Parents를 상속받음
    def eat(self):
        print("먹자")

c = Children()
c.play()   # "놀자" 가 출력 됨      

 

10. 메서드 오버라이딩과 오버로딩

오버라이딩 (Overriding)

▶ 상속 관계에서 사용되는 개념이다.

▶ 부모 클래스의 메서드를 자식 클래스에서 다시 정의하여 사용 하는 것이다. (재정의)

▶ 오버라이드 된 메서드는 부모 클래스의 메서드 시그니처와 동일해야 한다.

▶ 자식 클래스의 객체에서 호출될 때 오버라이드된 메서드가 실행된다.

▶ super() 를 통해 부모클래스의 메서드 + 추가 기능을 구현할 수 있다. (기능추가)

 

오버로딩 (Overloading)

▶ 하나의 클래스 내에서 동일한 이름을 가진 메서드를 여러 개 정의하는 것이다.

▶ 이때, 매개변수 타입, 개수, 순서 등 서로 달라야 한다.

▶ 동일한 기능을 수행하지만 다양한 매개변수를 받아 처리할 수 있다.

 

11. 예외처리

기본 구조

filename = "test.txt"

try:
    f = open(filename, 'r')
    for txt in f.readlines():
        print(txt, end="")
        print("\n") f.close() # 파일 열면 항상 닫아주기!!!!!
except FileNotFoundError as e:
    print("파일을 찾을 수 없습니다. 에러 정보 : ", e)
else:    # 에러가 없으면 try, else문이 동작되고 에러가 있으면 except문이 동작된다.
    print("정상작동되었습니다.")
finally:    # 에러 유무와 상관없이 항상 마지막에 출력된다.
    print("프로그램을 종료합니다.")

 

raise

▶ 에러를 강제로 발생시킨다.

class NegativeNumberError(Exception):
    def __str__(self):
        return "[Errno 2] No Negative Number!!!!!!"

try:
    num = int(input("숫자를 입력해주세요!"))
    print(f'입력한 숫자 : {num}')
    if num < 0:
        raise NegativeNumberError
except NegativeNumberError as e:
    print("잘못된 값을 입력하였습니다. 양수를 입력해주세요!", e)

 

에러 종류

에러 종류 설명
KeyError 주로 dict 자료형에서 발생하며, key 값이 없는 경우 발생함
ValueError 1. 부적절한 값을 가진 인자를 받았을 때 발생하는 에러
2. index로 접근한 값이 없을 때
SyntaxError 문법오류
  예) : 을 빼먹는다든지...
NameError 변수를 찾을 수 없을 때 발생
ZeroDivisionError 0으로 나눌 경우 발생
FileNotFoundError 존재하지 않는 파일이나 디렉토리에 접근하려 할 때 발생
TypeError 서로 다른 타입으로 연산하려고 할 때 발생
AttributeError 잘못된 메서드나 속성을 호출하거나 대입했을 때 발생
ConnectionError 서버 연결 오류로 발생

 

12. 파일 입출력

파일 입출력 관련 함수

open() : 파일 열기

옵션 : open('text.txt', 'w')

'r' : 읽기
'w' : 덮어쓰기
'a' : 추가쓰기 (저장된 내용 아래에 추가됨)

 

write() : 파일 쓰기

read() : 파일 읽기

readline() : 파일의 내용 한 줄씩 읽어오기

readlines() : 파일 내용 전체 읽어오기

close() : 파일 닫기 (메모리 종료)

* 파일을 열면 꼭 닫아줘야한다!! 

* 아래는 close() 없이 구현하는 방법
with open('test.txt', 'a') as f:
    f.write("힘내자!!")

 

반응형

'TIL' 카테고리의 다른 글

[TIL] 2025.01.10(금) - python 학습  (0) 2025.01.15
[TIL] 2025.01.09(목) - python 학습  (0) 2025.01.15
[TIL] 2025.01.07(화) - python 학습  (0) 2025.01.13
[TIL] 2025.01.06(월) - python 학습  (0) 2025.01.12
[TIL] 2025.01.03(금) - python 학습  (0) 2025.01.05

댓글