[Python] 11.함수(Function)

사전 습득 지식 : 독 스트링(주석 묶기)

함수에는 보통 함수 명세서라 부르는 주석이 있습니다. 이곳에는 함수의 사용방법, 파라미터등을 설명합니다.

의무는 아니지만 팀으로 개발하는 소스라면 누구든지 사용할 있도록 주석을 작성해두어야 합니다.

 

▶︎ 사용방법

아래로 " 3 입력합니다.

 

예제 :

"""
* 독스트링(주석) 시작
주석 내용..
주석 내용..

* 독스트링(주석) 끝
"""

 

함수

함수 사용방법을 알아봅니다.

 

▶︎ 사용방법

def 함수명(파라미터)

 

▶︎ 예제 코드

예제 1 :

코드 :
# 함수 선언
def call_member(member, each_name):
    """
    classroom_roaster, tuple
    who_is_here, tuple
    
    classroom_roaster(출석부)에 있는 모든 사람이
    who_is_here(현재 교실에 있는 사람 목록에 들어 있는지 검사한다.
    학생이 who_is_here에 있는 경우에만 그 이름을 출력한다.
    Returns "출석 부르기 끝"
    """
    
    for name in member:
        if name in each_name:
            print(name)
    return "이름부르기 끝"

# 함수 호출
member = {"민수", "혜영", "진호", "민수"}
call = {"진호", "민수"}
print(call_member(member,call))

결과 :
진호
민수
출석부르기 끝

 

예제 2 :

코드 :
# 함수 선언
def word_length(word1, word2):
    word = word1 + word2
    return len(word)
    # 위의 return이 수행시 아래부터 아무것도 출력되지 않습니다. 즉 의미가 없는 코드가 됩니다.
    print("이 문자열은 출력되지 않습니다.")
    
# 함수 호출
length1 = word_length("Julian","Amber")
length2 = word_length("Robert","Ciser")
length3 = word_length("Albert","John")

# 출력
print("한명의 이름은", length1, "의 길이를 가지고 있습니다.")
print("다른사람 이름은", length2, "의 길이를 가지고 있습니다.")
print("마지막 이름은", length3, "의 길이를 가지고 있습니다.")

결과 :
한명의 이름은 11 의 길이를 가지고 있습니다.
다른사람 이름은 11 의 길이를 가지고 있습니다.
마지막 이름은 10 의 길이를 가지고 있습니다.

 

예제 3 : print 함수 호출 결과 바로 출력

코드 :
def make_sentence(who, what):
    full_movement = who + " " + what
    return full_movement

who = "민수"
what = "집으로 가기"
print(make_sentence(who, what))

결과 :
민수 집으로 가기

 

예제 4 : return문이 없을시 기본적으로 나오는 메세지

코드 :
def non_return_test(value):
    print("----------------")
    print(value)
    print("----------------")
    # 리턴값이 없으면 마지막엔 None이 붙습니다.

print(non_return_test("No 리턴값 테스트"))

결과 :
----------------
No 리턴값 테스트
----------------
None

 

함수의 다중값 리턴 받기

함수의 여러 리턴값을 한번에 받는 방법입니다.

 

▶︎ 사용방법

(a,b)= function(a,b)

 

▶︎ 예제 코드

코드 :
def add_sub(n1, n2):
    add = n1 + n2
    sub = n1 = n2
    return (add, sub)

(a,b) = add_sub(3,4)
print(a,b)

결과 :
7 4

 

 

 

함수안의 함수 사용방법

함수안에 함수를 선언하여 다루는 방법을 알아봅니다.

 

▶︎ 예제 코드

예제 1 :

코드 :
def add_one(a,b):
    x = a+1
    y = b+1

    # 함수안에 함수를 선언합니다.
    # 두번째 실행.
    def mult(a,b):
        return a*b

    # 함수안의 함수를 호출합니다.
    # 먼저 실행.
    return mult(x,y)

a = 1
b = 2
x = 5
y = 6

print(add_one(x,y))
print(add_one(a,b))
print(add_one(x,a))
print(add_one(y,b))


결과 :
42
6
12
21

 

함수를 매개변수로 사용하기

함수를 매개변수로 사용하는 방법을 알아봅니다. 파라미터 없는 함수를 넘길때는 함수뒤에 붙는 () 붙이면 안됩니다.

 

▶︎ 예제 코드

코드 :
def berger(kind_of_sandwich):
    print("------")
    print(kind_of_sandwich())
    print("------")
    # return이 없으므로 반환할게 없습니다. 그래서 결과에 보면 마지막에 None이 출력됩니다..
    
def bigmac():
    my_bigmac = "패티2개\n상추\n소스\n피클"
    return my_bigmac
    
def oldburger():
    my_oldburger = "토마토\n패티\n양파\n특별한소스"
    return my_oldburger

print(berger(bigmac))
print(berger(oldburger))

결과 : 
------
패티2개
상추
소스
피클
------
None

------
토마토
패티
양파
특별한소스
------
None

 

함수안에 함수 호출

함수안에 함수를 호출하는 방법입니다.

 

▶︎ 예제 코드

코드 :
def def_1():
    print("Repeat test : ")
    def def_2(n):
        print("No", n, "times...")
        def def_3(m):
            print("...and no", m, "more times")
            for i in range(n+m):
                print("no")
        return def_3
    return def_2

# def_1()(2)(5)에서 맨 왼쪽 ()은 def_1함수를 호출하고 (2)는 def def_2(n) 를 대입합니다.
# (5)는 def def_3(m)를 대입합니다.
# 즉 순서대로 내부적으로 대입됩니다.
def_1()(2)(5)

결과 :
Repeat test : 
No 2 times...
...and no 5 more times
no
no
no
no
no
no
no

 

 

■ print함수 확장 사용 - 1

print함수에는 sep end라는 파라미터가 있습니다. sep 받은 value 사이에 삽입할 문자열을, end에는 마지막 value 뒤에 붙이고 싶은 value 적어주면 반복해서 값이 출력됩니다. 참고로 end 기본값은 newline이어서 파이썬에서는 print()함수만 실행해도 줄바꿈이 됩니다. 예제를 통해 한번 알아보도록 하겠습니다.

 

▶︎ 사용방법

print(문자열,...,sep = '출력 문자마다 붙일 문자', end = '마지막에 붙일 문자')

 

▶︎ 예제코드

코드 :
# apple1, apple2는 마지막마다 사과가 붙고 마지막인 apple3에는 나무가 붙습니다.
print('apple1', 'apple2', 'apple3', sep = ':사과', end = ':나무')

결과 :
apple1:사과apple2:사과apple3:나무

 

■ print 함수 format 출력

출력할 포멧을 작성해 놓고 변수나 명령의 결과에 대해 출력할 부분은 {}으로 작성해 놓습니다. 그리고 뒤에 format 함수를 이용해서 {} 대체될 변수나 명령을 입력합니다. 값은 앞에서부터 순서대로 대입됩니다.

 

▶︎ 예제코드

print('출력문자 {} 출력문자 {} 출력문자 {}'.format(변수 혹은 명령어, 변수 혹은 명령어...))

 

▶︎ 사용방법

코드 : 
name = “bob”
food = “apple”
print('{}은 {}을(를) 좋아합니다.'.format(name, food))

결과 :
bob은 사과을(를) 좋아합니다

 

■ print 파일 출력

print()함수는 기본적으로 objects 텍스트 스트림 file 출력하는 기능을 하는데, file이라는 키워드 인자에 write(string) 메서드가 포함된 파일 객체를 설정해주면 출력하는 뿐만 아니라 파일에 내용을 쓰는 것도 가능해집니다.

 

▶︎ 예제코드

코드 :
# 코드 실행후 test1.txt 파일을 열어보면 "Hello World!"가 정상적으로 입력된 것을 확인할 수 있습니다.
with open('test1.txt', 'w') as f:
    print('Hello World!', file=f)

결과 :
test1.txt 파일 오픈 후 내용 확인.

 

 

■ 파이선 다른 회차

[Python] Intro : Very Quick Python : https://myinfrabox.tistory.com/169

 

[Python] Intro : Very Quick Python

개인적으로 공부하면서 정리해 놓은 파이선 자료를 업로드합니다. 여기의 내용은 문법에 대한 자세한 설명은 생략합니다. 개발 경험이 있는 분들에게 굳이 문법에 대한 자세한 설명은 필요없으

myinfrabox.tistory.com

[Python] 01.Python 준비 : https://myinfrabox.tistory.com/170

 

[Python] 01.Python 준비

파이선을 처음 접할때 콘솔로 프로그래밍하기 보다는 편리한 IDE툴을 이용해서 접해보기를 권합니다. 보통 프로그래밍을 처음 배울때 날(raw)코딩으로 처음 접하기를 권하고 저또한 마찬가지이

myinfrabox.tistory.com

[Python] 02.Python 스크립트 작성 방법 : https://myinfrabox.tistory.com/171

 

[Python] 02.Python 스크립트 작성 방법

리눅스, 유닉스에서 파이선을 실행시 맨위에 스크립트 종류를 선언합니다. 물론 선언하지 않고도 수행은 가능합니다. 그러나 리눅스, 유닉스에서 실행되는 대부분의 스크립트는 맨위에 특정 스

myinfrabox.tistory.com

[Python] 03.변수 선언 할당 : https://myinfrabox.tistory.com/172

 

[Python] 03.변수 선언 및 할당

1. 변수 할당 파이선에서 변수할당은 다른 스크립트 언어(php, shell script)처럼 특정 스트링을 입력 후 값을 할당합니다. 좌측은 변수명, 우측은 값을 입력합니다. 또한 변수명은 숫자로 시작할 수

myinfrabox.tistory.com

[Python] 04.문자열 처리 : https://myinfrabox.tistory.com/173

 

[Python] 04.문자열 처리

■ 문자열 인덱스 스트링으로 값을 받을때는 자동으로 인덱스 처리가 됩니다. 스트링 인덱스는 0부터 시작되며 끝에서 읽어올 시 -1부터 시작합니다. ▶︎ 사용방법 변수명[1] : 특정 인덱스에 값

myinfrabox.tistory.com

[Python] 05.조건문 : https://myinfrabox.tistory.com/174

 

[Python] 05.조건문

■ 조건문이 참 혹은 거짓일경우. 조건문의 True, False에 따라 그에 맞는 분기를 실행합니다. ▶︎ 사용방법 if 조건문: ▶︎ 예제 코드 코드 : num_a = 2 if num_a > 0: print("num_a가 0보다 큽니다") else: pr..

myinfrabox.tistory.com

[Python] 06.반복문 : https://myinfrabox.tistory.com/175

 

[Python] 06.반복문

■ for문 시퀀스의 모든 요소가 처음부터 마지막 수행될때까지 계속 반복힙ㄴ;디/ ▶︎ 사용방법 for <루프변수> in <튜플, 리스트등의 시퀀스>: ▶︎ 예제 코드 • 예제 1 : 시퀀스의 부분을 순서대

myinfrabox.tistory.com

[Python] 07.튜플(Tuple) : https://myinfrabox.tistory.com/176

 

[Python] 07.튜플(Tuple)

■ 튜플 뒤에서 배울 리스트와 비슷합니다. 데이터를 열거하는 식으로 만듭니다. ()안에 데이터를 열거합니다. 튜플의 특징은 tuple = (1,)처럼 단지 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를

myinfrabox.tistory.com

[Python] 08.리스트(List) : https://myinfrabox.tistory.com/177

 

[Python] 08.리스트(List)

■ 리스트 선언 리스트를 선언하는 방법입니다. ▶︎ 사용방법 기본적으로 []를 사용해서 선언합니다. ["리스트요소","리스트요소","리스트요소","리스트요소"] ▶︎ 예제 코드 strlist = ["TV","냉장

myinfrabox.tistory.com

[Python] 09.사전(Dictionary) : https://myinfrabox.tistory.com/178

 

[Python] 09.사전(Dictionary)

■ 사전 선언 방법 - 1 컬렉션중 사전을 만드는 방법입니다. 사전은 키:값 방식의 선언 방법입니다. {}(중괄호)문으로 시작합니다. 그리고 key:value방식으로 항목을 만듭니다. ▶︎ 사용방법 사전명

myinfrabox.tistory.com

[Pytho] 10.set : https://myinfrabox.tistory.com/179

 

[Pytho] 10.set

□ set이란? 키만 활용하는 데이터 구조로 이해합니다. 수학에서 집합과 동일한 개념입니다. ■ set 선언 방법 set을 선언하는 방법입니다. ▶︎ 사용방법 set변수 = {항목1, 항목2, ....} ▶︎ 예제 코

myinfrabox.tistory.com

[Python] 12.클래스(Class) : https://myinfrabox.tistory.com/181

 

[Python] 12.클래스(Class)

□ 클래스 파이선을 이용하여 클래스를 만들 수 있습니다. 다른 객체지향 언어와 거의 비슷합니다. 클래스를 만들고 객체로 선언하여 사용합니다. 그리고 객체의 메소드를 호출해서 사용합니다

myinfrabox.tistory.com

[Python] 13.외부 클래스 사용하기 : https://myinfrabox.tistory.com/182

 

[Python] 13.외부 클래스 사용하기

□ 외부 클래스 사용하기 파이선에도 여러가지 유용한 클래스를 제공합니다. 수학, 스트링, 랜덤수, 시간등등 여러가지 외부에서 임포트해서 유용하게 사용할 수 있는 여러 클래스를 제공합니

myinfrabox.tistory.com

[Python] 14.파일처리 : https://myinfrabox.tistory.com/183

 

[Python] 14.파일처리

□ 파일처리 파일을 생성, 수정, 읽기를 하는 방법을 알아봅니다. ■ 파일 생성. 신규 파일을 생성합니다. 만약 기존 파일이 있을시 덮어씁니다. 파일을 생성하고 그 파일안에 내용을 작성할 수

myinfrabox.tistory.com

[Python] 15.MySQL Database : https://myinfrabox.tistory.com/184

 

[Python] 15.MySQL Database

□ MySQL데이터베이스 사용방법 MySQL 데이터베이스에 대해 사용방법을 알아봅니다. DB생성, 테이블 생성-삭제, DML문법을 알아봅니다. ■ 데이터 베이스 사용을 위한 환경설정. 파이선에서 MySQL데이

myinfrabox.tistory.com

 

'Develop > Python' 카테고리의 다른 글

[Python] 13.외부 클래스 사용하기  (0) 2020.12.30
[Python] 12.클래스(Class)  (0) 2020.12.30
[Pytho] 10.set  (0) 2020.12.30
[Python] 09.사전(Dictionary)  (0) 2020.12.30
[Python] 08.리스트(List)  (0) 2020.12.30

Designed by JB FACTORY