Script/Python

[Python 강의] 8. 파이썬의 함수 (함수 호출, 반환, 변수의 종류)

Bloger A 2023. 12. 28. 17:27
반응형

[목차]
1. 파이썬의 리스트, 튜플, 사전, 집합 자료형의 특징
2. 파이썬의 리스트, 튜플, 사전 자료형의 활용
3. 파이썬의 수치형 자료형과 문자열 자료형의 특징
4. 파이썬의 문자열 자료형의 메소드와 포맷팅
5. 파이썬의 조건문
6. 파이썬의 반복문
7. 파이썬의 파일 입출력
8. 파이썬의 함수
9. 파이썬 함수의 활용과 람다 함수
10. 파이썬의 모듈
11. 파이썬의 클래스
12. 파이썬 클래스의 활용
13. 파이썬의 예외 처리


8. 파이썬의 함수

PYTHON

 

1. 함수의 정의

 함수의 이름 식별자 규칙 준수 : 특수문자, 공백, 소문자 구분
●  제어문과 마찬가지로 콜론, 들여쓰기 준수
아무 행동도 하지 않는 함수는 pass 키워드 코딩 필수(skip)
※ 내장 함수 help()를 사용해 함수의 설명을 확인 (또는 shift + tab)
 
 

2. 함수의 호출과 반환

●  인자를 전달하거나 값을 계산해 반환
●  전달되는 인자의 자료형은 동적으로 결정되고, 호출되는 시점에 전달받은 인자에 따라 달라짐
●  함수 선언시 제어문과 마찬가지로 들여 쓰기와 콜론 주의
●  return : 함수 실행 종료 후 지정한 값을 함수가 호출된 지점으로 반환

[함수(def) 사용법]
def 함수명(매개변수):
    수행코드
    
[반환(return) 사용법]
def 함수명:
    코드
    return 반환값

#######################################

예제 1) 함수의 호출
def hellopython()
	print("hello!")

hellopython()	# 호출
---------------------
출력 : hello!


예제 2) 함수의 반환(return 사용)
def multiplication(a, b):
    return a * b	# 반환

a = multiplication(5, 10)
print(a)
---------------------
출력 : 50


예제 3) 함수의 호출(return 미사용)
def multiplication(a, b):
    print(a * b)

a = multiplication(5, 10)
print(a)
---------------------
출력 : 
50	# print(a * b) 의 결과 출력
None	# 함수 multiplication이 실행된 후 변수 a로 함수 수행 결과를
		# 반환(return)하지 않기 때문에 None 출력


예제 4) pass 이용하여 함수 종료
def multiplication(a, b):
    c = a * b
    pass	# 함수 종료

a = multiplication(5, 10)
print(a)
---------------------
출력 : None (pass를 이용해서 종료시킴)

 
 

3. 함수의 반환(튜플)

●  두 개 이상의 값을 반환하면 결과 값은 튜플로 반환
●  매개변수의 자료형은 동적으로 결정되고, 호출되는 순간 해당 인자에 전달되는 객체에 따라 자료형 결정

def 튜플1(a, b):
    return a, b

x = 튜플1("문자", ["리스트", 1])
print(x)
print(type(x))
---------------------
출력 :
('문자', ['리스트', 1])
<class 'tuple'>

 

 
4. 지역변수와 전역변수

●  지역변수
  ○  함수 내에서 선언된 변수
  ○  함수 호출 시 생성되고, 종료 시 소멸

예제 1) 지역변수와 전역변수 실행
def 함수1():
    a = 100    # 지역변수
    print(a)

a = 50    # 전역변수
함수1()    # 함수 실행
print(a)    # 전역변수 a 값 출력
---------------------
출력 :
100    # def 함수1() 의 지역변수인 a 가 출력됨
50     # 전역변수 a가 출력됨


예제 2) 지역변수와 전역변수 실행(에러발생)
def 함수2():
    b = 200
    print(b)
    
함수2()    # 함수 실행
print(b)    # 전역변수 b 출력
---------------------
출력 :
200    # 함수2() 의 b 출력
NameError    Traceback .....    # 전역변수 b가 선언되지 않았기 때문에 에러가 난다.
..
NameError : name 'b' is not defined
# 함수가 종료되면 지역변수는 사라지기 때문에 b를 출력하면 에러가 발생한다.

 
 
●  전역변수
  ○  함수 밖에서 선언된 변수
  ○  함수 내에서 참조 가능 (global 키워드 사용)
  ○  함수 내에서 값을 변경하려면 global 키워드 사용

예제 1)  global 사용하여 전역변수 실행
a = 50    # 전역변수
print(a)    # 첫번째 출력 (50)

def 함수3():
    global a
    a = 100    # 전역변수 a를 활용
    print(a)    # 두번째 출력 (100)

함수3()    # 함수 실행
print(a)     # 세번째 출력 (100)
---------------------
출력 :
50     # 첫번째 출력, 초기에 선언한 a 전역변수 값 출력
100    # 두번째 출력, 함수3() 에서 전역변수 a의 값을 100으로 변경, 
100    # 세번째 출력, 함수3() 에서 변경한 전역변수 a의 값 출력
	# (계속 전역변수를 사용하고 있기 때문에 값이 변하지 않았음.)

 
 
●   함수에서의 값의 전달 (상이한 매개변수)
  ○   함수의 매개변수로 전달 받은 값을 함수 내에서 변경할 때 인자로 사용된 호출함수 내에서의 변수의 값은 변경되지 않음
  ○   자료에 따라 다르지만 변경 불가능한 객체인 경우 값을 복사하여 전달
  ○   함수의 인자는 레퍼런스 값을 전달하기 때문에 변경 불가능한 객체는 함수 내에서 변경할 수 없음
  ○   변경 가능한 객체는 함수 내에서도 수정 가능

예제 1) global 사용하지 않고 전역변수 실행
a = 50    # 전역변수
print(a)    # 첫번째 출력 (50)

def 함수4(b):
    b = 100    # 전역변수 a를 활용
    print(b)    # 두번째 출력 (100)

함수4(a)    # 함수 실행, a를 호출하지만 a와 b 매개변수가 다르기 때문에 a는 호출하지 않고 b를 호출한다.
print(a)     # 세번째 출력 (50)

---------------------
출력 :
50    # 첫번째 출력, 초기에 선언한 a 전역변수 값 출력
100    # 두번째 출력, 함수4() 에서 선언한 전역변수 b의 값 출력 
50    # 세번째 출력, 함수4()의 b와 a 매개변수가 다르기 때문에 a의 값은 
	#변경되지 않고 초기 선언한 전역변수 a의 값이 출력된다.

 
 
●   함수에서의 값의 전달
  ○   전달받은 객체 자체의 변경이 아닌 객체의 요소를 변경하는 것은 가능

예제 1) 상이한 매개변수 변경 불가(객체 값 변경 불가)
def 객체1(b):
    b = [1, 2, 3]     # 지역변수

a = [4, 5, 6]    # 전역변수

객체1(a)
print(a)
---------------------
출력 :
[4, 5, 6]    # 원래의 객체, a 출력, 객체 자체의 변경은 불가능


예제 2) 상이한 매개변수 내 객체 값 변경
def 객체2(b):
    b[1] = 10      # 지역변수

a = [4, 5, 6]     # 전역변수
객체2(a)
print(a)
---------------------
출력 :
[4, 10, 6]    # a[0, 1, 2] 순서 중 b[1] => 1번 위치의 값이 10으로 변경되었다.
	# 객체 자체의 변경은 불가능하지만 객체의 요소는 변경이 가능하다.

 
 

5. 기본 매개변수

●   함수 생성 및 호출 시 기본 값이 있는 매개변수가 일반 매개변수보다 앞에 올 수 없음

예제 1) 값이 있는 매개변수는 첫 번째로 사용 불가(a=10)
def 함수1(a=10, b):    # 본 값이 있는 매개변수가 일반 매개변수보다 앞에 올 수 없음
    print(a+b)

함수1(10, 20)
---------------------
출력 :
SyntaxError : non-default argument follows default argument
# 구문 에러가 난다.

 

6. 키워드 매개변수

●   함수를 호출할 때 인자는 순서대로 전달된다.

예제 1) 키워드 매개변수
def 함수1(a, b, c, d, e):
    print(a+b-c-d+e)

함수1(2,4,6,8,10)
함수1(10,8,6,4,3)
---------------------
출력 :
2    #  print(a+b-c-d+e)
10    #  print(a+b-c-d+e)

 
 

6. 가변 매개변수

●  일반 매개변수 다음에 * 매개변수로 가변인자를 전달
  ○   일반 매개변수에 할당되는 인자를 제외한 나머지 인자를 튜플로 할당
※ 가변인자 : 개수가 정해지지 않은 파라미터

예제 1) 가변 매개변수
def 가변1(a, *arg):
    print(a, arg)


가변1(1)
가변1(1, 2)
가변1(1, 2, 3)
가변1(1, 2, 3, 4, 5, 6)
---------------------
출력 :
1 ()
1 (2,)
1 (2, 3)
1 (1, 2, 3, 4, 5, 6)

 
 
※ 출처
직업교육 : [온캠] 인공지능 구현을 위한 파이썬 프로그래밍
김선용 교수님

반응형