04강 함수, 터틀그래픽
코딩과 교육/파이썬 2017. 5. 30. 23:08◆ 함수
함수는 재사용 가능한 프로그램의 조각을 말합니다. 이것은 특정 명령어들을 묶어서 이름을 짓고, 그 이름을 프로그램 어디에서건 사용함으로써 그 명령어들을 몇번이고 다시 실행할 수 있게 하는 것입니다. 이를 보고 함수를 호출한다고 합니다.
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