Python / 사용자 정의 함수 만들고 호출하기

함수를 정의하고 호출하는 방법을 알아봅니다.

함수 만들기

def function_name( parameter ) :
    # code
  • function_name : 함수 이름입니다. 변수명을 만드는 규칙과 같은 규칙으로 만듭니다.
  • parameter : 인수입니다. 인수가 여러 개인 경우 쉼표(,)로 구분합니다.

함수 호출하기

function_name( parameter )

예제

Hello를 출력하는 함수를 정의합니다.

def jb_say_hello() :
    print('Hello')

함수를 호출하면 Hello가 출력됩니다.

>>> jb_say_hello()
Hello

함수를 정의하는 위치

함수는 호출하기 전에 정의되어 있어야 합니다. 만약 호출하는 코드 다음에 정의되어 있으면 에러가 납니다.

jb_say_hello()

def jb_say_hello() :
    print('Hello')
Traceback (most recent call last):
  File "C:/Users/JB/Documents/Coding/Python/function.py", line 1, in <module>
    jb_say_hello()
NameError: name 'jb_say_hello' is not defined

인수 사용하기

두 인수의 합을 구하는 함수입니다.

def jb_sum(x,y) :
    print(x+y)

x = int(input('Input x : '))
y = int(input('Input y : '))
jb_sum(x,y)

실행하면 x와 y의 값을 묻고, 값을 입력하면 합이 출력됩니다.

Input x : 1
Input y : 2
3

반환값

return으로 반환값을 정의할 수 있습니다.

def jb_sum(x,y) :
    z = x + y
    return z

x = int(input('Input x : '))
y = int(input('Input y : '))
print(jb_sum(x,y))
Input x : 1
Input y : 2
3

반환값이 여러 개인 경우

반환값이 여러 개인 경우, 첫번째 return문에서 값을 반환하고 함수를 종료합니다.

def jb_sum(x,y) :
    w = x * y
    return w
    z = x + y
    return z

x = int(input('Input x : '))
y = int(input('Input y : '))
print(jb_sum(x,y))
Input x : 1
Input y : 2
2

인수의 기본값

인수의 수와 입력한 값의 개수가 다르면 에러가 납니다.

def jb_sum(x,y) :
    z = x + y
    return z
>>> jb_sum(1)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    jb_sum(1)
TypeError: jb_sum() missing 1 required positional argument: 'y'

인수의 기본값을 정해서 입력한 값이 없는 경우 기본값을 사용할 수 있습니다.

def jb_sum(x,y=1) :
    z = x + y
    return z
>>> jb_sum(1)
2

기본값이 있는 인수의 위치

기본값이 있는 인수는 기본값이 없는 인수 뒤에 와야 합니다.

def jb_sum(x=1,y) :
    z = x + y
    return z

위와 같이 하면 에러가 납니다.

함수 호출할 때 인수 이름 입력하기

인수의 이름을 이용해서 호출할 수 있습니다.

def jb_div(x,y) :
    z = x / y
    return z
>>> jb_div(x=10,y=5)
2.0
>>> jb_div(y=10,x=5)
0.5

인수의 이름을 넣지 않으면 순서대로 배정됩니다. 만약 중복이 생기면 에러가 납니다. 이름이 없는 인수는 이름이 있는 인수 앞에 넣어야 합니다.

def jb_sum(x,y,z) :
    return x + y + z
>>> jb_sum(1,z=2,y=3)
6
>>> jb_sum(1,x=2,y=3)
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    jb_sum(1,x=2,y=3)
TypeError: jb_sum() got multiple values for argument 'x'
>>> jb_sum(z=1,2,y=3)
SyntaxError: positional argument follows keyword argument

가변 인수

인수의 개수를 정하지 않고, 입력하는 값을 모두 인수로 사용할 수 있습니다.

*를 사용하면 튜플로 저장합니다.

def jb_x(*x) :
    print(x)
>>> jb_x('one','two','three','four')
('one', 'two', 'three', 'four')

**를 사용하면 사전으로 저장합니다.

def jb_x(**x) :
    print(x)
>>> jb_x(one=1,two=2,three=3,four=4)
{'one': 1, 'two': 2, 'three': 3, 'four': 4}
같은 카테고리의 다른 글
Python / 객체(Object)와 변수(Variable)

Python / 객체(Object)와 변수(Variable)

객체(Object), 변수(Variable), 변수명(Variable Name) 메모리에 저장된 자료를 객체(object)라고 한다. 객체를 저장한 공간을 변수(Variable), 변수의 이름을 변수명(Variable Name)이라고 한다. 변수에 객체를 넣을 때 등호 '='을 이용한다. 등호 왼쪽에는 변수명, 등호 오른쪽에는 객체를 적는다. 예를 들어 다음은 객체 100을 x라는 이름의 변수에 저장하겠다는 뜻이다. x = 100 변수명은 다음의 규칙을 지켜야 한다. 규칙에 맞지 않으면 에러가 난다. 키워드를 ...

Python / PIP(Python Package Index) 사용법

Python / PIP(Python Package Index) 사용법

Python Package Index Python Package Index는 파이썬 패키지들이 모여 있는 저장소입니다. The Python Package Index (PyPI) is a repository of software for the Python programming language. pip 명령어로 패키지를 로컬 머신에 설치하고 삭제하고 업데이트할 수 있습니다. PIP pip는 파이썬으로 작성된 패키지 소프트웨어를 관리하는 패키지 관리 시스템입니다. 파이썬 2.7.9 이후 버전과 파이썬 3.4 이후 버전은 pip를 ...

Python / input() / 사용자가 입력한 값을 변수에 저장하는 함수

Python / input() / 사용자가 입력한 값을 변수에 저장하는 함수

input() 함수로 사용자가 어떤 값을 입력하게 하고, 그 값을 변수에 저장할 수 있습니다. 문법 예를 들어 다음을 입력하고 엔터를 누르면 사용자가 값을 입력하기를 기다립니다. >>> x = input() 값을 입력하고 엔터를 누르면 그 값이 변수 x에 저장됩니다. >>> x = input() hello >>> x 'hello' 입력할 값에 대한 안내를 출력하고 싶다면 다음과 같이 합니다. >>> x = input('some text') 작은 따옴표 ...

Python / str() / 자료형을 문자열로 변환하는 함수

Python / str() / 자료형을 문자열로 변환하는 함수

str()은 데이터 타입을 문자열로 변환하는 함수이다. >>> a = 1 >>> type( a ) <class 'int'> >>> print( a ) 1 >>> b = str( a ) >>> type( b ) <class 'str'> >>> print( b ) 1 >>> a = 1.23 >>> type( a ) <class 'float'> >>> print( a ) 1.23 >>> b = str( a ) >>> type( b ) <class 'str'> >>> print( b ) 1.23 Python ...

Python / Database / 연결하는 방법

Python / Database / 연결하는 방법

Python으로 Database에 연결하고 데이터를 조회해 봅니다. Microsoft SQL Server 패키지 설치하기 pymssql를 설치합니다. pip install pymssql 연결하고 데이터 조회하기 pymssql를 import합니다. import pymssql 연결 설정을 합니다. conn = pymssql.connect( server = 'server-ip', port = port-number, user = 'user-name', password = 'pasword', database = 'database-name' ) cursor를 ...

Python / 반복문 / while

Python / 반복문 / while

while while은 주어진 조건이 참일 동안 작업을 반복하게 하는 구문입니다. 문법 while condition: statement condition : 작업을 하기 위한 조건입니다. 참일 동안 반복 작업을 합니다. statement : 반복할 작업입니다. 예제 i가 10보다 작으면 i을 출력합니다. 작업할 때마다 i는 1씩 커지고, i가 10이 되면 while문을 빠져나옵니다. i = 1 while i < 10: print(i, ...

Python / 자료형 / 사전(dict)

Python / 자료형 / 사전(dict)

사전(dict) 사전은 집합의 일종으로, 키와 값이 하나의 데이터를 만듭니다. 순서가 없고 중복된 데이터를 갖지 않아서, 중복 데이터를 만드는 +, *를 사용할 수 없지만, 키를 이용하여 인덱스기호()를 사용할 수 있습니다. 사전 만들기 사전은 집합과 마찬가지로 중괄호로 만듭니다. 키를 앞에, 값을 뒤에 쓰고, 구분은 콜론(:)으로 합니다. 데이터의 구분은 쉼표(,)로 합니다. >>> jb = {1:"one", 2:"two", 3:"three"} >>> jb {1: 'one', ...

Python / 조건문 / if

Python / 조건문 / if

if if 구문을 이용하면, 특정 조건을 만족할 때 특정 작업이 수행되도록 할 수 있습니다. 조건을 만족하는 동안 반복 작업을 하고 싶다면 while을 사용하세요. 문법 1 조건이 참이라면 코드를 실행합니다. if condition: statement 1은 0보다 크므로 HM을 출력합니다. if 1 > 0: print("HM") 조건이 거짓이므로 HM을 출력하지 않습니다. 즉, 아무런 작업을 하지 ...

Python / 자료형 / 집합(set)

Python / 자료형 / 집합(set)

집합(set) 집합은 여러 개의 자료를 하나의 변수로 관리할 때 사용하는 자료형 중의 하나입니다. 집합 자료형은 수학의 집합과 같은 성질을 가집니다. 즉, 집합은 중복된 데이터를 가질 수 없고, 순서가 없습니다. 따라서 순서와 관련된 인덱스기호()를 사용할 수 없고, 중복 데이터를 만드는 +, *를 사용할 수 없습니다. 하지만, in, not in, len()은 사용할 수 있습니다. 집합 만들기 집합은 중괄호로 만듭니다. >>> ...

Python / 자료형 / 튜플(tuple)

Python / 자료형 / 튜플(tuple)

튜플(tuple) 여러 개의 자료를 하나의 변수로 관리할 때 사용합니다. 리스트(list)와 거의 같지만, 데이터를 변경할 수 없다는 차이가 있습니다. 따라서 .append() 등 값을 변경하는 메소드는 사용할 수 없고, 조회를 하는 .count(), .index() 메소드만 사용할 수 있습니다. 튜플 만들기 튜플은 괄호로 만듭니다. >>> jb = (1,2,3,4,5) >>> type(jb) <class 'tuple'> 빈 튜플은 jb = () 또는 jb = tuple() 으로 만듭니다. 튜플 출력하기 print() 함수로 ...