함수를 정의하는 문법에 대해 알아보겠습니다.
함수는 2가지의 요소(HEADER+BODY)로 이루어져있습니다.
def hello_world(): # 파라메터가 없음
print "HelloWorld!"
hello_world()
Header:
def = define
hello_world = 함수의 이름
( ) = 괄호 안에는 매개변수/파라메터
Body: 실질적으로 그 함수가 행하는 행위에 대한 코드
print "Hello World!"
호출 및 출력:
hello_world()
( ) = 괄호 안에는 파라메터와 연결되는 알고먼트
# -*- coding: utf-8 -*-
def spam():
"""egss를 출력"""
print "eggs!!"
spam()
def tax(bill):
"""Adds 8% tax to a restaurant bill.""" #설명구문
bill *= 1.08 #bill = bill*1.08
print "With tax: %f" % bill #%f로 float 값 호출
return bill
def tip(bill):
"""Adds 15% tip to a restaurant bill."""
bill *= 1.15
print "With tip: %f" % bill
return bill
meal_cost = 100
meal_with_tax = tax(meal_cost) #tax(100)과 같은 의미 ->def tax(bill) 함수로 들어가기
meal_with_tip = tip(meal_with_tax)
키워드로 호출
키워드를 사용하면, 순서바꿔서 함수는 키워드 해당 값에 맞춰 출력된다.
def profile(name,age,main_lang):
print(name,age,main_lang)
profile(main_lang="파이썬",age=23,name="조선영")
#조선영 23 파이썬
가변인자, *args
서로 다른 개수의 값을 넣고 싶을 때 사용
def biggest_number(*args): #*args 는 매개변수가 몇가지 들어갈지 모를 때 사용
print max(args)
return max(args) #RETURN 지우고 실행해보기
def smallest_number(*args):
print min(args)
return min(args)
def distance_from_zero(arg):
print abs(arg)
return abs(arg)
a=biggest_number(-10, -5, 5, 10) #10
print a #10 #RETURN 값이 없으면 NONE 나옴
smallest_number(-10, -5, 5, 10) #-10
distance_from_zero(-10) #10 절댓값 반환
def profile(name,age,*language):
print("이름:{0}\t나이:{1}\t".format(name,age),end=" ")
#end=""는 줄바꿈 없이 한 줄에 쓰이도록 함
for lang in language:
print (lang,end=" ")
print() #줄바꿈용
profile("조선영",23,"Python", "Java","C","C++","C#")
profile("유재석",20,"Kotlin","Swith")
#이름:조선영 나이:23 Python Java C C++ C#
#이름:유재석 나이:20 Kotlin Swith
Call and Response
def square(n):
"""Returns the square of a number."""
squared = n ** 2
print "%d squared is %d." % (n, squared)
return squared
square(10)
#10 squared is 100.
다음과 같은 함수를 살펴봅시다
이 함수에는 n이라는 파라메터가 들어갈 수 있게 되어있습니다.
return은 반환하는 값을 의미합니다
square(10)이라고 치면 이 값은 100을 반환하지요
Parameters and Arguments
파라메터는 매개변수이며 Argument는 인수라는 의미를 갖고 잇습니다
아까의 경우 파라메터는 n이 되며 우리는 10이라는 argument 인수를 파라메터에 넣어준 것이 됩니다.
우리가 한 번 pow라는 함수를 만들어봅시다. 이는 제곱 수를 말해서
3^5 처럼 base(3) exponent(5)를 지정해주면 그 값을 출력해줄 수 있는 함수를 만들어볼겁니다
def power(base, exponent): # Add your parameters here!
result = base ** exponent
print "%d to the power of %d is %d." % (base, exponent, result)
power(37, 4) # Add your arguments here!
Functions Calling Functions
함수는 다른 함수를 연달아서 불러올 수 있습니다.
# -*- coding: utf-8 -*-
def fun_one(n):
return n * 5
def fun_two(m):
return fun_one(m) + 7
# return 5*m+7과 같은 뜻(함수와 함수를 연합시킨 효과)
print fun_one(10) #50
print fun_two(10) #57
problem) 한 함수가 매개변수에 1을 더하고 다른 함수는 매개변수에 2를 더한다고 해봅시다
f(x) = x+1
g(x) = x+2
g(f(x)) = f(x) + 2 의 형식을 이용할 수 있도록 함수 정의를 한 번 해봅시다
sol)
def f(x):
return x+1
def g(x):
return x+2
def combination(x):
return g(f(x))
print f(5) #6
print g(6) #8
print combination(5) #8
다른 모듈을 빌려오는 방식
print sqrt(25)
#에러를 띄웁니다
import math #math 모듈을 불러오겠습니다
print math.sqrt(25) #math 모듈의 sqrt(제곱근) 함수를 이용하겠다
from math import sqrt #math 모듈에서 sqrt함수를 불러와 붙여넣겠다
print sqrt(25)
from math import * #math 모듈에 있는 모든 함수를 불러오겠다.
모든 함수를 보는 방법은?
import math # math 모듈에서
everything = dir(math) # math에 있는 모든 함수들을 everything 에다가 넣어주겠다
print everything # 그걸 모두 출력하겠다.
*args
def biggest_number(*args): #*args 는 매개변수가 몇가지 들어갈지 모를 때 사용
print max(args)
return max(args) #RETURN 지우고 실행해보기
def smallest_number(*args):
print min(args)
return min(args)
def distance_from_zero(arg):
print abs(arg)
return abs(arg)
a=biggest_number(-10, -5, 5, 10) #10
print a #10 #RETURN 값이 없으면 NONE 나옴
smallest_number(-10, -5, 5, 10) #-10
distance_from_zero(-10) #10 절댓값 반환
print 와 return을 같이 쓰는 이유?
print만 쓰면 함수가 종료되었을 때, 함수값을 다른 곳에 이용할 수 없음
return 값을 가지고 있으면 print a에서 10이라는 값이 출력 가능
return 값이 없으면 None이 나옴
+ max() / min() / abs() / type()
max() 함수
maximum = max(4, 8, 15)
print maximum
min() 함수
minimum = min(4, 8, 15)
print minimum
abs() 함수
absolute = abs(-42)
print absolute
type()함수
print type(42)
print type(4.2)
print type('spam')
problem)
distance_from_zero라는 함수를 만들것이며 한개의 매개변수를 가집니다 그 매개변수가 int 나 float 타입일 경우에는 에는 절대값을 출력하고 아닐 경우에는 “Nope”를 출력하도록 해봅시다
# -*- coding: utf-8 -*-
"""distance_from_zero라는 함수를 만들것이며 한개의 매개변수를 가집니다
그 매개변수가 int 나 float 타입일 경우에는 에는 절대값을 출력하고
아닐 경우에는 “Nope”를 출력하도록 해봅시다 """
def distance_from_zero(a):
if type(a)==(int or float):
#if type(a)==int or float:는 오류남!
#if type(a)==int or type(a)== float으로는 가능
print abs(a)
else:
print "Nope"
distance_from_zero("안")
Lambda syntax
my_list = range(16)
print filter(lambda x: x % 3 == 0, my_list)
#[0, 3, 6, 9, 12, 15]
여기서 lambda x: x % 3 == 0 는
def by_three(x):
return x % 3 == 0 와 같은 의미이다.
languages = ["HTML", "JavaScript", "Python", "Ruby"]
# Add arguments to the filter()
print filter(lambda x: x == "Python", languages)
#['Python']
cubes = [x ** 3 for x in range(1, 11)]
print cubes #[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
print filter(lambda x: x % 3 == 0, cubes) #[27, 216, 729]
squares = [x ** 2 for x in range(1, 11)]
print filter(lambda x: x >= 30 and x <= 70, squares)
#[36, 49, 64]
https://www.youtube.com/watch?v=kWiCuklohdY
지역변수와 전역변수
# -*- encoding:utf-8-*-
gun=10
def checkpoint(soldiers): #경계근무
gun=20
gun=gun-soldiers
print("[함수 내] 남은 총:{0}".format(gun))
print("전체 총:{0}".format(gun))
checkpoint(2) #2명이 경계 근무 나감
print("남은 총:{0}".format(gun))
#전체 총:10
#[함수 내] 남은 총:18
#남은 총:10
왜 여전히 남은 총이 8개가 아닌 10개인가?
def 안의 gun은 지역변수이기 때문이다.
이 때는 전역변수를 사용해야함. global 사용
gun=10
def checkpoint(soldiers): #경계근무
global gun #전역 공간에 있는 gun을 사용하겠다.
gun=gun-soldiers
print("[함수 내] 남은 총:{0}".format(gun))
print("전체 총:{0}".format(gun))
checkpoint(2) #2명이 경계 근무 나감
print("남은 총:{0}".format(gun))
#전체 총:10
#[함수 내] 남은 총:8
#남은 총:8
하지만 일반적으로는 전역변수를 많이 쓰면 코드 관리가 어려워서 권장하지 않음 ->def checkpoint(soldiers)
파라미터를 사용하고 반환값을 받아서 사용하길 권장 ->def checkpoint_ret(gun,soldiers)
(밑의 코드 참고)
gun=10
1.권장하지 않음
def checkpoint(soldiers): #경계근무
global gun #전역 공간에 있는 gun을 사용하겠다.
gun=gun-soldiers
print("[함수 내] 남은 총:{0}".format(gun))
2.권장
def checkpoint_ret(gun,soldiers):
gun=gun-soldiers
print("[함수 내] 남은 총:{0}".format(gun))
return gun
print("전체 총:{0}".format(gun))
gun=checkpoint_ret(gun,2)
print("남은 총:{0}".format(gun))
#전체 총:10
#[함수 내] 남은 총:8
#남은 총:8
QUIZ) 표준 체중을 구하는 프로그램
(성별에 따른 공식)
남자: 키(m)*키(m)*22
여자: 키(m)*키(m)*21
조건1: 표준 체중은 별도의 함수 내에서 계산
*함수명: std_weight
*전달값: 키(height), 성별(gender)
조건2: 표준 체중은 소수점 둘째자리까지 표시
(출력 예제)
키 175cm 남자의 표준 체중은 67.38kg 입니다.
sol)
'컴퓨터 언어 > python' 카테고리의 다른 글
파이썬 기초1 (0) | 2020.07.15 |
---|---|
Python 5: List + Dictinaray + for루프 (0) | 2020.07.14 |
Python 3. Conditionals ana Control Flow (0) | 2020.07.14 |
Python 2. String & Console out (0) | 2020.07.14 |
Python 1. Python Syntax (0) | 2020.07.14 |