본문 바로가기

코딩과 교육/파이썬

04강 함수, 터틀그래픽


◆ 함수 

함수는 재사용 가능한 프로그램의 조각을 말합니다. 이것은 특정 명령어들을 묶어서 이름을 짓고, 그 이름을 프로그램 어디에서건 사용함으로써 그 명령어들을 몇번이고 다시 실행할 수 있게 하는 것입니다. 이를 보고 함수를 호출한다고 합니다. 


def say_hello():

    # block belonging to the function

    print('hello world')

    # End of function


say_hello() # call the function

say_hello() # call the function again



◆ 함수와 매개변수


함수를 정의할 때 매개 변수를 지정할 수 있습니다. 매개 변수란 함수로 넘겨지는 값들의 이름입니다. 매개 변수는 변수와 거의 같이 취급되지만, 매개 변수의 값들은 함수가 호출되어질 때 넘겨받은 값들로 채워지며 함수가 실행되는 시점에서는 이미 할당이 완료되어 있다는 점이 다릅니다.


매개 변수는 함수를 정의할 때 괄호 안에서 쉼표로 구분합니다. 함수를 호출할 때에는, 동일한 방법으로 함수에 값을 넘겨줍니다. 함수를 정의할 때 주어진 이름을 매개 변수라 부르고, 함수에 넘겨준 값들을 인자라 합니다.


def print_max(a, b):

    if a > b:

        print(a, 'is maximum')

    elif a == b:

        print(a, 'is equal to', b)

    else:

        print(b, 'is maximum')

# directly pass literal values

print_max(3, 4)

x = 5

y = 7

# pass variables as arguments

print_max(x, y)



◆ 지역변수

함수 안에서 변수를 선언하고 사용할 경우, 함수 밖에 있는 같은 이름의 변수들과 함수 안에 있는 변수들과는 서로 연관이 없습니다. 이러한 변수들을 함수의 지역(local) 변수라고 하며, 그 범위를 변수의 스코프(scope) 라고 부릅니다. 모든 변수들은 변수가 정의되는 시점에서의 블록을 스코프로 가지게 됩니다.



x = 50

def func(x):

    print('x is', x)

    x = 2

    print('Changed local x to', x)


func(x)

print('x is still', x)



◆ 전역변수


함수나 클래스 내부에서 상위 블록에서 선언된 변수의 값을 변경하고 싶을 경우, 파이썬에게 이 변수를 앞으로 지역 변수가 아닌 전역(global) 변수로 사용할 것임을 알려 줍니다. 이때 global을 이용합니다. global 문을 사용하지 않으면, 함수 외부에서 선언된 변수의 값을 함수 내부에서 변경할 수 없습니다.


x = 50


def func():

    global x

    print('x is', x)

    x = 2

    print('Changed global x to', x)


func()

print('Value of x is', x)


# 함수 내부에서 global 로 변수가 전역변수임을 알린다.

# 4번째 줄이 없으면 에러 발생



◆ 기본 인수값

함수를 호출할 때 인수를 선택적으로 넘겨주게 하여 사용자가 값을 넘겨주지 않으면 자동으로 기본값을 사용하도록 하는 것이 편할 때가 있습니다. 이런 경우, 기본 인수값을 지정하면 됩니다. 함수를 선언할 때 원하는 매개 변수 뒤에 대입 연산자 (=)와 기본값을 입력하여 기본 인수값을 지정합니다.


이 때, 기본 인수값은 반드시 상수이어야 합니다. 좀 더 정확히 말하자면, 불변값이어야 합니다. 


def say(message='HI ', times=1):

    print(message * times)


say('Hello')

say('World', 5)

say()

# say( , 10)



◆ 키워드 인수

여러 개의 매개 변수를 가지고 있는 함수를 호출할 때, 그 중 몇 개만 인수를 넘겨주고 싶을 때가 있습니다. 이때 매개 변수의 이름을 지정하여 직접 값을 넘겨줄 수 있는데 이것을 키워드 인수 라 부릅니다. 함수 선언시 지정된 매개 변수의 순서대로 값을 넘겨주는 것 대신, 매개 변수의 이름 (키워드) 를 사용하여 각각의 매개 변수에 인수를 넘겨 주도록 지정해 줍니다.


키워드 인수를 사용하는 데 두가지 장점이 있습니다. 첫째로, 인수의 순서를 신경쓰지 않고도 함수를 쉽게 호출할 수 있는 점입니다. 둘째로는, 특정한 매개 변수에만 값을 넘기도록 하여 나머지는 자동으로 기본 인수값으로 채워지게 할 수 있습니다.


def func(a, b=5, c=10):

    print('a is', a, 'and b is', b, 'and c is', c)


func(3, 7)

func(25, c=24)

func(c=50, a=100)


func(1,2,3)

func(a=1,b=2,c=3)

func(c=3,a=1,b=2)




◆ VarArgs 매개변수

함수에 임의의 개수의 매개 변수를 지정해주어야 할 때가 있습니다. 이때 VarArgs 매개 변수를 사용합니다. 아래 예제와 같이 별 기호를 사용하여 임의의(Variable) 개수의 인수(Arguments) 를 표현합니다.


def total(initial=5, *numbers, **keywords):

    count = initial   

    for number in numbers:

        count += number

    for key in keywords:   

        count += keywords[key]

    return count


print(total(10, 1, 2, 3, vegetables=50, fruits=100))




◆ return 문

return 문은 함수로부터 되돌아(return) 나올 때, 즉 함수를 빠져 나올 때 사용됩니다. 이 때 return 값 처럼 값을 지정해 주면, 함수가 종료될 때 그 값을 반환하도록 할 수 있습니다.


def maximum(x, y):

    if x > y:

       return x

    elif x == y:

       return 'The numbers are equal'

    else:

       return y


print(maximum(2, 3))



◆ DocString : 설명문자열

파이썬은 설명(Documentation) 문자열(String) 이라고 불리우는, 짧게 줄여서 DocStrings라 불리우는 편리한 기능을 가지고 있습니다. DocString은 여러분이 만든 프로그램을 알아보기 쉽게 해 주고, 또 후에 프로그램에 대한 설명서를 작성할 때 유용하게 사용될 수 있는 중요한 도구입니다. 아래 예제와 같이, DocString은 프로그램이 실행중일 때도 읽어올 수 있습니다.


def print_max(x, y):

    '''Prints the maximum of two numbers.

    

    The two values must be integers.'''

    x = int(x)

    y = int(y)

    if x > y:

        print(x, 'is maximum')

    else:

        print(y, 'is maximum')


print_max(3, 5)

print(print_max.__doc__)



◆ 파이썬 turtle 모듈 사용하기

1. 사용하려는 모듈 가져오기 (import)

import turtle

2. 캔버스생성

t = turtle.Pen()

3. 거북이 움직이기

t.forward(거리)

t.backward(거리)

t.left(각도)

t.right(각도)

t.reset()

t.clear()

t.up()

t.down()


4. 사각형을 그려보자


import turtle


t = turtle.Pen()


t.forward(100)

t.left(90)

t.forward(100)

t.left(90)

t.forward(100)

t.left(90)

t.forward(100)


5. 다음 코드를 실행해보자



import turtle


t = turtle.Pen()


for i in range(0,36):

    t.forward(100)

    t.left(50)



터틀그래픽 기본 자료 https://docs.python.org/3.6/library/turtle.html