본문 바로가기
Programming Language/Python

[파이썬] DAY3 함수

by 9루트 2022. 1. 18.

1. 딕셔너리의 여러가지 기능

 

1) update()

딕셔너리 안에 데이터를 넣거나 기존 데이터를 수정한다.

여러 개의 아이템을 넣을 수 있다.

이차원 리스트 형태로 딕셔너리에 업데이트 가능하다.

 

2) fromkeys 존재하는 값으로 키를 만듦

 

 

 

⊙ item 출력

 

⊙ 값만 출력

값만 추출해서 계산할 때 쓴다.

 

 

⊙ 키값만 출력

 


2.  함수

변수 부터 함수까지 문제 풀어볼 것임

함수 : 수식의 결과를 내놓는다. 물음표 상자. 즉 코딩에서는 특별한 기능울 수행하는 것이다.

클래스 안에서는 함수가 아닌 메소드 라고 부른다.

 

*함수를 쓰는 이유

반복적으로 실행할 부분을 한번에 정리하여 쓰므로 코드 간략화

코드해석에 시간 단축: 디버깅과 편집이 수월하다, 프로그램 기능과 구조를 한눈에 알아볼 수 있다.

 

사용법

def 키워들르 사용하여 정의

main영역 이외의 새로운 영역(메소드 영역)을 만든다. → return으로 값을 꺼낸다.

매개변수나 return은 생략 가능

 

return의 두 가지 기능
1. 종료한다를 표시
2. 값을 반환한다.

return은 같은 block 내에 하나만 존재해야한다.

함수를 명명한다고 함수가 만들어지는 것은 아니다.

함수를 '호출'해야지만 그 함수가 존재하게 된다.

 

 

함수를 호출할 때 같은 함수일 조건

C언어

함수의 원형 4가지
1. 리턴 자료형
2. 매개변수의 자료형
3. 매개변수의 갯수
4. 이름
파이썬

1. 리턴자료형 안써도 된다. (덕타이핑이기 때문)
2. 자료형도 안 써도 된다.
3. 매개변수 갯수
4. 이름 -> 함수 구별

즉, 함수를 호출할 때는

이름가 매개변수의 갯수를 써야한다.

매개변수를 부여하지 않을 때

 

매개변수를 입력할 때

파이썬에는 메소드 오버로딩이 없다. f(x =10)이라는 디폴트 매개변수 때문에 (매개변수의 기본값)

 

 

 

함수의 갱신(함수도 객체이므로) : 같은 지역 내에 같은 이름의 함수 두 개이상 존재 불가능

함수가 실행될 때 main영역에서 함수 영역으로 잠깐 다녀온다. 

파이썬은 인터프리터 언어이므로 함수는 반드시 코드의 상단에 있어야 한다.

 

main영역과 메소드 영역을 구별해서 값을 쓰는 방법

▶ CALL BY VALUE : int 함수 호출

int형은 연산을 하면 주소가 바뀐다.

call by reference : list 함수 호출

int는 직접 접근으로 값만 바뀐다. 리스트는 순차 접근으로 주소에 있는 해당 값이 바뀐다

리스트는 연산을 한다고 주소가 바뀌지 않는다.

 

 

return하나에 하나의 데이터만 나온다. (튜플)

리턴은 블럭 하나당 하나면 된다. 

밑에 코드처럼 조건문을 이용하여 리턴 쓸 수 있음


3. 전역변수 vs 지역변수

전역 변수는 지역변수에 영향을 미치지 못한다.

지역변수는 지역에만 영향을 끼치므로 전역변수보다 우선순위가 높다.

 

첫번째 print를 보자

위 처럼 파이썬은 지역 안에서 전역 변수를 쓸 수 없다.

global x 추가

같은 지역 내에 x 라는 변수가 두 개 생길 수 없다.

따라서 x = 10은 x를 새로 선언한 것이 아니라 x=0이었던 전역 변수에 10을 대입한 것이다.

 

x를 나타내는 연산자를 쓰는 순간 전역변수를 쓰게 되므로 동작하지 않는다.

 

 

 

call by reference(mutable 데이터)

같은 주소의 변수가 변경

immutable -> int mutable -> list
x 주소값을 새로 만든다.

전역변수를 지역에 쓰려면 global x를 쓰면 값을 넣는 것이 된다.
x 주소값을 그대로 쓴다.

전역변수를 지역에 쓰려면 global x를 쓰지 않아도 된다.

 

 

C 파이썬
call by value
call by reference


변수는 값을 저장
mutable, immutable
주소값만 전달

변수는 값의 주소를 저장

4. 가변 인자

여러 개가 가능, 반드시 가변인자는 가자 뒷단에 있어야 한다.

1) 튜플화 인자

def func(arg, *args)

2) 딕셔너리화 인자

 

 

 

리스트 요소로 함수 사용: 리스트에 함수를 넣어줄 수 있다.

↓ 활용

리스트의 숫자값만 바꿈으로써 함수의 기능 사용


5. 재귀호출

반복문으로 무한 호출을 조심해야 한다. -> return을 걸어준다.

종료 조건 부터 만들고 재귀호출문을 만들자.

재귀 형태는 반복문 보다 느리다. 따라서 왠만하면 재귀 호출보다 반복문을 쓰자!