[프로그래밍 언어]/python

두근두근 파이썬(개정판)_ch7 함수,def, 인수, 매개변수, 지역변수, 키워드 인수, 디폴트 인수

우당탕탕 개발 일지 2024. 1. 25. 16:20

 

안녕하세요. 우당탕탕 개발 일지입니다.

파이썬 에디터 IDLE 3.12.1을 사용합니다.

책과 수업 내용을 바탕으로 요약한 내용과 교재 뒤 연습문제입니다.

ch7 전문제는 푼 링크 첨부 합니다. 

2024.01.25 - [[프로그래밍 언어]/python] - 두근두근 파이썬(개정판)_ch7 함수 연습문제 1~10번

 

두근두근 파이썬(개정판)_ch7 함수 연습문제 1~10번

안녕하세요. 우당탕탕 개발 일지입니다. 파이썬 에디터 IDLE 3.12.1을 사용합니다. 교재 연습문제 1번-10번까지 코드와 풀면서 느낀 점만 올립니다. 해당 개념만 다룬 블로그 링크 첨부 합니다. 2024.0

hansol2124.tistory.com

 

※ 오늘 다루는 내용은 매우!!!!! 중요함으로 뒷부분을 학습하기 전 많이 연습해 두는 게 좋습니다. 

연습문제를 많이 푼 상태에서 다음장으로 넘어가 주시길 바랍니다.

 

  • 함수(function) 
  • def 키워드
  • 매개변수/ 인수
  • 디폴트 인수 (default argument)
  • 키워드 인수 
  • 지역 변수/ 전역변수

 

 

 

1. 함수(Function)

순차문, 반복문, 조건문을 모두 배웠다면 점점 더 많은 기능을 가진 프로그램을 짤 수 있게 될 것이다.

기능이 많으면 프로그램은 길고 복잡해진다. 그런 프로그램을 조직화하는 3가지 방법이 있다.

오늘은 그중 하나인 함수에 대해서 다룰 것이다.

함수를 한 번만 정의하면 언제든지 불러서 일을 시킬 수 있다.

두근두근 파이썬(개정판)

 

  우리는 이미 함수라는 단어에 꽤 익숙해져 있을 것이다.

중, 고등학교를 거치면서 우리는 2,3,4차 함수나 지수, 로그함수등을 배웠기 때문이다.  

지금까지 함수는 '입력을 받아 출력을 보내는 박스'로 생각할 수 있다. 
프로그래밍에서 함수는 '특정한 작업을 수행하는 코드의 덩어리'같은 느낌이다. 

2. def 키워드

 

파이썬에서는 함수를 정의할 때 def키워드를 사용한다.

함수 이름 앞에 def를 붙여주면 된다.

>>>def print_address():                 #함수이름():
>>>	 print("우리집 주소 ")          #함수의 내용 

>>>print_address()                      #함수 호출
우리집 주소

※ 함수도  함수의 내용인 문장은 들여 쓰기를 해주어야 한다. 

함수 안에 for문을 쓰면 for문의 문장은

for문의 조건이 들여 쓰기된 상태에서 한번 더 들여쓰기 해야 한다. 

 

 

ch7-lab 로또 번호

⚠️주의: return을 반복문이랑 안에 라인에 두면은 한번만 돌고 return하고 끝나버림.

import random

def lotto():
    number = []
    while len(number) < 6:
        n = random.randint(1, 45)
        if n not in number:
            number.append(n)
    return number

r = lotto()
print("생성된 로또 번호",r)

 

 

 


3. 매개변수( parameter )와 인수 (argument)

 

매개변수:(=전달받는 변수) 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수.
인수:(=전달되는 값) 함수가 호출될 때 함수로 값을 전달해 주는 변수.

 

두 가지를 차이를 이해하면 함수를 직접 작성할 때 편한 것 같다.

두근두근 파이썬(개정판)

#인수 전달 
def print_address(name):    #매개변수:name
		print("우리집 주소 ") 
		print(name)

print_address("홍길동")     #인수:홍길동

 

#값 반환
def calculate_area (radius):            #매개변수:radius
		area = 3.14 * radius**2
		return area               #반환 return

c_area = calculate_area(5.0)           #인수:5.0

 

 

여러 개의 입력을 전달할 수도 있다.

>>>def get_sum(start,end): 
>>>	    sum=0
>>>		for i in range(start,end+1):
					sum +=i
>>>		return sum
    
>>>print(get_sum(1,10))

4. 디폴트 인수

:매개변수가 기본값을 가지는 것

=> 여러 개의 입력을 받을 때  편하다. 

>>>def greet(name,msg="what's up?"): #디폴트 인수:msg
		print(msg+','+name)

>>>greet("peter")
what's up?,peter

 


5. 키워드 인수 (keyword argument)

:인수의 이름을 명시적으로 지정한다.

 

함수 호출은 인수들의 위치에 의하여 구분된다. 
예로 들면 power(2,10)과 power(10,2)와는 다른 것처럼  말이다. 
하지만 키워드 인수를 쓰면 인수의 위치가 달라져도 인수들이 순서대로 전달된다. 
>>>def calc(x, y, z):
    return x+y+z

>>> calc(y=20, x=10, z=30)
60

 


6. 지역변수와 전역 변수 

- 지역 변수: 함수 안에서 선언되는 변수 → gobal 해주면 지역 변수를 전역 변수처럼 쓸 수 있다. (안 하면 함수 내부에서만 쓸 수 있음.)

 

- 전역 변수: 함수 외부에서 선언되는 변수

 

 

 

함수를 호출했는데 연산이 제대로 이루어지지 않고 초기값만 계속 출력되는 경우가 있을 것이다. 

이럴 때는 변수가 지역변수인데 global을 안 해준 것이 아닌지 확인해 보자.

 


 

예제) 마우스를 클릭하면 색칠된 네모가 그려지는 프로그램을 작성해 보자 

callback function: 이벤트가 발생했을 때, 이벤트를 처리하는 함수.
onscreenclick(함수이름) : 사용자가 화면에서 마우스를 클릭하면 처리하는 함수를 등록한다.

import turtle 
t=turtle.Turtle()
def square(length):
	for i in range(4):
			t.forward(length)
			t.left(90)
def drawit(x, y):
		t.penup()
		t.goto(x, y)
		t.pendown()
		t.begin_fill()
		t.color("green")
		square(50)
		t.end_fill()

s = turtle.Screen() # 그림이 그려지는 화면을 얻는다.
s.onscreenclick(drawit) #call_back함수

 

728x90