5/9 Today I Learned

boks·2024년 5월 9일
post-thumbnail

📖 학습한 내용

  • 함수 - return
  • 튜플
  • lambda
  • 파일 여닫기
  • 예외 처리

📖 핵심내용

📌함수 - return

  • 함수를 실행하고 난 뒤 생기는 결과물

리턴 키워드와 아무것도 리턴하지 않기

  • 함수 호출한 것을 변수에 담고 출력해보기 예시
def say_hi(n):
  print('hi\n'*n )

de_hi = say_hi(3)
print(de_hi)


-> return으로 반환되는 값이 없으므로 값 출력시 None이 나온다

def re_say_hi(n):
  return n*5

a = re_say_hi(3)
print(a)


-> 반환된 값이 있으므로 None이 나오지 않음

📌튜플

  • 튜플 : 리스트와 유사한 자료형, 한번 결정된 요소를 바꿀수 없음

  • 리스트와 차이 : 리스트는 인덱스를 이용하여 요소를 추가하거나 변경할 수 있지만, 튜플은 바꿀 수 없다.

  • 예외 요소 서로 스위칭

x, y = 10 ,20
print(x,y)
tmp_x = x
x = y
y = tmp_x
print(x, y)


-> 중간에 변수를 하나 만들어(tmp_x) 서로 스위칭해서 결국 요소가 바뀐 것을 알 수 있다.

사용자 함수와 튜플

  • retrur 옆에 수를 두면 그것은 값은 튜플이다.
def test():
  return 10, 20, 30

test()

def test1():
  return 10,

test1()

여러 튜플형태 반환

enumerate()

  • 인덱스와 해당 값을 튜플형식으로 반환
sample_list = [11,22,33,44,55,66]
for something in enumerate(sample_list):
  print(something, type(something))

딕셔너리의 키와 벨류

  • 키와 벨류는 함께 튜플로 묶여서 존재한다.
sample_dict = {'이미':'튜플', '알고':'있었어'}

for something in sample_dict.items():
  print(something, type(something))
  print(something[0], something[1])

📌람다

  • 간단한 함수를 쉼게 선언하는 방법이다.
  • 형태
lambda 매개변수 : 리턴값

-> 이때 매개변수나 리턴 값이 없을 수도 있다.

함수와 리스트를 매개변수로 사용하는 함수

map()

  • 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성해주는 함수
  • 받은 리스트의 요소들을 하나씩 받은 함수에 넣고, 대응되는 새로운 리스트를 구성한다.
  • 출력 값이 바로 리스트형은 아니고, list(map())를 사용해야 리스트가 나온다.
  • 형태
map(함수, 리스트)
sample_list = [1,2,3,4,5]
list(map(lambda x: x**2,sample_list))


-> 람다 함수가 아니라 다른 사용자 함수여도 된다. 요소들이 람다식에 대응된 요소가 된 것을 알 수 있다.

filter()

  • 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것으로, 새로운 리스트를 구성해주는 함수
  • 받은 함수의 조건에 맞는 받은 리스트의 요소들로만 리스트를 구성한다.
  • 출력 값이 바로 리스트형은 아니고, list(map())를 사용해야 리스트가 나온다.
  • 형태
filter(함수, 리스트)
sample_list = [1,2,3,4,5]
list(filter( lambda x : x < 3, sample_list))


-> 리스트의 요소 중 3보다 작다는 조건에 맞는 1,2만 출력되었다.

📌파일

파일 새로만들기 / 이어서 쓰기 / 읽기 - open()

  • 형태

파일객체 = open(파일경로/이름, 모드)

  • 모드
    w : write 모드 - 신규파일 새로쓰기 (같은 경로에 동일한 이름 있으면 덮어쓰기)
    a : append 모드 - 기존파일 이어서 쓰기
    r : read 모드 - 기존파일 읽기모드

열은 파일에 텍스트 쓰기 - write()

file.write('문자')

파일 닫기 - close()

  • 형식
    파일객체.close
  • 열은 파일은 작업 마치면 반드시 닫아주자

📌예외처리

  • 기본 예외 처리 - 조건문을 사용하는 방법
  • try 구문을 사용하는 방법

에러의 종류

  1. 구문 오류 (SyntaxError)
  • 괄호의 개수, 들여쓰기 문제 등으로 프로그램이 실행되기도 전에 발생하는 오류
  • 코드가 실행이 안되므로 고쳐야한다
  1. 예외 (Exception)
  • 프로그램이 일단 실행된 다음, 실행 중에 발생하는 오류 (첫번째 줄은 일단 출력이 됨)

기본 예외 처리

  • 에러가 발생할 조건을 예상해서, if 조건문으로 선제적으로 처리

try except 구문

  • 모든 조건을 잡기 어려우므로 사용
  • 예외가 발생할 가능성이 있는 코드를 try안에 넣고, 예외가 발생한다면 except의 문장을 실행
  • pass를 사용하면 예외 발생하여도 부드럽게 넘어가지만, 문제야기할 확률이 크다
  • 형태
try:
  예외가 발생할 가능성이 있는 코드
except:
  예외가 발생했을 때 실행할 코드

try except else 구문

  • try except 구문 뒤에 else 구문을 붙여서 사용하면 '예외가 발생하지 않았을 때 실행할 코드'를 지정할 수 있음
  • try except 구문에서 들여쓰기하지 않고 쓰면, 사실 else가 필요없다. 하지만 알아두긴하자.
  • 형태
try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
else:
    예외가 발생하지 않았을 때 실행할 코드

finally 구문

  • 예외 처리 구문에서 가장 마지막에 사용할 수 있는 구문
  • 예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드
try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을 때 실행할 코드
else:
    예외가 발생하지 않았을 때 실행할 코드
finally:
    무조건 실행할 코드
profile
설계엔지니어의 변신

0개의 댓글