2017 멀티캠퍼스/Python

[Python] #11 파이썬 함수와 모듈

꿈꾸는어린이 2018. 1. 9. 22:10

//

일시 : 2018.01.05 14:00pm ~ 18:00pm

내용 : chap 9 함수와 모듈

//

함수(Function)

  • 함수를 이용하여 중복 코드를 줄임

  • print(), input()등 파이썬에서 제공하는 함수도 있지만, 사용자가 정의해서 사용할 수도 있음

  • def 함수이름(매개변수) : 로 함수 정의

  • 지역변수(local) : 함수 내부에서만 사용 가능

    전역변수(global) : 프로그램 전체에서 사용 가능 (위치는 위, 아래 상관 x)

  • 파이썬에서 함수 구현시 정의만 해놓고 pass 키워드로 비워둘 수도 있음

  • 랜덤함수

    • 랜덤 함수 사용하기 위해 랜덤 모듈 추가 => import random

    • random.randrange(1, 46) => 1~45 중 임의의 숫자 추출



★매개변수를 이용한 함수 정의★

  • 처리해야할 매개변수의 개수가 다를 때는 가장 큰 매개변수로 함수를 정의하고 각 매개변수에 기본값을 설정해두고 사용이 가능하다.

    ex ) def func1(v1, v2, v3 = 0) :

    ##return 값 반환

    func1(10, 20) => 세번째 매개변수가 없으면 v3 = 0으로 계산

    fun1(10, 20, 30)

  • 매개변수의 개수 정해지지 X -> 가변 매개변수(Arbitrary Argument List)방식

    매겨변수 앞에 *를 붙여 사용하면 튜플 형식으로 넘어옴 -> def func1(*para)

    함수를 호출하는 순간 매개변수의 개수가 정해짐

  • **매개변수 : 튜플 아닌 딕셔너리 형식으로 전달, 매개변수를 ''키=값'' 형식으로 사용

def func1(**para)



모듈(Module)

  • 함수의 집합

  • 자주 쓰는 함수들을 파일(모듈)로 만들어 놓고, 다른 프로그램에서 import 하여 사용하면 편리

  • 호출이 일어나는 파일과 모듈 파일은 같은 폴더에 저장

  • import Func

    'Func.함수이름()' 으로 사용 -> Func.func1() (func1() 함수는 모듈 파일에 작성된 함수임)

  • 모듈 이름을 생략하고 함수이름만 사용하려면

    from 모듈명 import 함수1, 함수2, 함수3

    또는 from 모듈명 import *

  • 표준 모듈 : 파이썬에서 제공하는 모듈

    사용자 모듈 : 사용자가 정의한 모듈

    서드 파트 모듈 : 외부 기관에서 제공하는 모듈

  • dir() 함수로 모듈별 제공되는 함수 볼 수 있음 ex)dir(math) - 수학 관련 함수 목록들 볼 수 O




실습

09-03


  guest = int(input("손님의 수 입력 : "))

def coffee_machin(button):
print()
if button == 1:
coffee_kind = "보통"
elif button == 2:
coffee_kind = "설탕"
elif button == 3:
coffee_kind = "블랙"
else :
coffee_kind = "아무"

return coffee_kind


for i in range(1, guest+1):
coffee = int(input("\n어떤 커피 드릴까요? (1:보통, 2:설탕, 3:블랙) "))

print(">>손님 %d에게 %s 커피를 전달" % (i, coffee_machin(coffee)))

09-11

  
import random

def getNumber():
i = 0
while True :
num = random.randrange(1, 46)
if num not in list :
list.append(num)
i += 1

if i > 6:
break

list = []

print("** 로또 추첨을 시작합니다. **")
getNumber()
print(list)



문자열 바꾸기


  
def my_btr_modify(ss, ch1, ch2):
ss_change = ss.replace(ch1, ch2)
if ch1 not in ss :
return None
return ss_change


ss = input("문장을 입력하시오 : ")
find_ch = input("찾을 문자를 입력하시오 : ")
change_ch = input("바꿀 문자를 입력하시오 : ")

print("==========================")


if my_btr_modify(ss, find_ch, change_ch) != None:
print("원 문자열 : %s" % ss)
print("바뀐 문자열 : %s" % my_btr_modify(ss, find_ch, change_ch))
else :
print("찾을 문자가 없습니다.")

  
if ch1 not in ss :
return None
return ss_change


##이 부분 어떻게 되는지?

★★★for 반복문에 문자열을 지정하면 문자를 하나씩 가져옴

  
>>> for i in 'Hello':
...     print(i, end=' ')
...
H e l l o

여기서 in 연산자는 특정 문자가 있는지 확인할 때 사용

  
>>> 'e' in 'Hello'
True

딕셔너리에서도

  for k in singer.keys():
print("%s %s" % (k, singer[k]))

k가 keys()값에 있는 문자를 하나씩 가져오며 반복 출력