학원

2023/08/24 파이썬(함수)

맹진호 2023. 8. 24. 15:35






파이썬 함수

 

 

Hello라는 함수를 지정해주고 함수에서 파라미터의 갯수와 함수 호출의 갯수가 일치해야 실행이 가능함



 


가변매개변수

가변매개변수는 값이 여러개일 수 있다. 여러개의 인수를 정해져있지 않은 값을 넘길 수 있다.
가변매개변수는 *을 달아주면서 지정해주면 된다.

 

 

앞에 숫자를 빼곤 뒤에 몇개가 전달되던 상관이 없음 안녕, hi, hello가 values에 저장되었다. 그 값들 중에 요소 하나하나가 for문으로 3번 수행한 것


 



기본 매개변수


 

 

매개변수를 딱히 지정하지 않았을 때 기본으로 지정된다.
함수를 정의하는 부분에서 값을 써버리게 되면 함수를 호출 할 때 값이 정해져 있지 않다면 정의한 값으로 출력하게 된다. 그렇다고 n에 값을 넣으면 안되는 것은 아님 원하는 숫자를 넣는다면 그렇게 출력이 될 것


 



키워드 매개변수
키워드를 매개변수에 지정하기


 

 

기본매개변수와 가변매개변수는 같이 사용이 가능하다. 
만약이런식으로 지정되어 있을 때 안되는 이유는 abc를 넘길 때 가변매개변수를 실행하게 끔 넣었고 기본매개변수가 2로 처리되었으니까 되는거 아닌가 하는건데 이렇게 되면 'a'가 n으로 가게된다. 그렇기 때문에 range(a)으로 가기 때문에 TypeError가 뜨게된다.


 

 

그럼 순서를 바꿔서 출력하게 되면 어쩌게 되냐 나는건데 이렇게 하게되면 abc3이 2번 반복된다.
이런 이유가 되는 이유는 values 입장에선 어디까지가 values인지 모르기 때문에 그냥 숫자 3까지 values라고 하고 디폴트 값이 설정한대로 출력하게 되는 것


 

 

이럴 때 사용하는게 키워드 매개변수이다.

n은 3이다 라는걸 주면서 n의값은 3이라는것을 확인하고 우리가 원하는대로 실행되게 된다.


 



재귀(Recursive)함수


 

함수 안에 자기 함수를 넣게 되면 이런식으로 무한히 뜨게되다가 오류가 나버린다.


 

 

그래서 재귀함수에선 적절하게 탈출할 수 있게 조건을 줘야한다. 
return에는 값의 반환과 함수 종료의 두가지 의미가 있다. 3부터 시작해서 3,2,1,0으로 순서대로 가게되고 -1로 가게되면 True가 되어버리기 때문에 return으로 종료가 되어버린다.




예외처리


- 오류(error) : 내가 잘못 써서 실행조차 안되는 것
- 예외(execption): 프로그램 실행에는 문제는 없는데 실행하다가 생길 수 있는 문제


 

위 사진처럼 실행조차 안되는것이 오류이고 아래사진처럼 실행은 되지만 범위를 넘어서 안되는 것이 예외이다.


 

 

이 프로그램이 숫자를 입력하면 아무 일 없지만 숫자가 아닌 문자를 입력하면 예외처리가 되는 것


 

 

이것을 예외처리 하기 위해서 구문을 다시 주게된다.


 

 

if문이 예외처리로만 사용하긴 어렵기 때문에 try ~ except를 사용해서 예외처리를 할 수 있는 구문을 만들게 된다.
if를 사용하는 것 보다 간단하게 만들 수 있음


 

 

try는 예외가 발생했을 때 예외를 처리할 수 있는 구문을 하는 것
else를 사용할 수 있다. else를 사용한다고 해도 결과는 똑같이 나오게 된다.
finally라고 작성하면 항상 출력이 되는 것도 할 수 있다.


 



파일 입출력

 

 

test에 txt파일을 하나 만들어두었고 그것을 여기서 읽을 수 있게 할 수 있다.
open을 사용해 파일을 넣어주고 r을 사용해서 읽는다.
open을 했으면 꼭 close()를 넣어준다.

 

 

 

f.write를 작성하면 그 파일을 들어갔을 때 내용이 바뀐걸 확인할 수 있음
하지만 덮어쓰기라서 조심해야한다.
만약 파일이 없는 파일이라면 새로 생성해서 만들게 된다.

만약 r이 아니라 a로 바꿔주게 되면 그냥 내용이 추가되는 것

 

 

 

close를 알아서 하게 해주는 명령어는 이런식으로 사용하면 된다. 그러면 close를 사용하지 않아도 가능하다.


 

 

이런식으로 하면 한문장씩 읽을 수 있다.
지금이야 그냥 read로 읽으면 되지만 나중에 문서내용이 굉장히 많아지게 되면 필요한 부분이 올 것


 

 

이런식으로 반복문을 사용해서 읽는 방법도 있다.

 



이미지파일로 입출력을 해볼 것

 

 

 

이미지 파일을 읽을 땐 b를 추가해서 해야한다. 텍스트 파일을 읽을 땐 t를 넣어야하지만 디폴트가 t라서 생략한 것
print로 읽게되면 이런식으로 읽게된다. 괄호 안에 숫자를 넣게되면 넣은 숫자의 만큼 읽게된다 단위는 바이트이다. 이것은 16진수로 표현이 된다.

 



 

이렇게 하게되면 원하는 사진의 1바이트만 복사해서 가져온 것

 

 

 

이것을 반복문을 통해서 할 수 있다. 이렇게 되면 100바이트씩 반복문을 돌려서 카피본이 오리지널과 똑같이 만들어질 것 이런식으로 명령어를 만들면 리눅스의 cp명령어를 만든 것이다.



여기까지 강사님 파이썬 강의

본격적인 프로젝트 진행