[ZB] 파이썬 중급 1

SeriesWorld·2023년 10월 20일

ZB20

목록 보기
5/9
post-thumbnail

함수

  • 수학에서의 함수와 동일하게 input을 넣으면 연산(function)을 거쳐 output을 낸다.
  • 함수는 내장함수(파이썬에서 기본으로 제공하는 함수)와 사용자 함수(사용자가 직접 선언)가 있다.
  • 함수의 괄호()안에 들어가는 부분을 '매개변수'라고 한다.
  • 함수를 통해 특정 함수를 작동하게 할 수도 있고, 특정 값을 반환할 수도 있다.
  • 함수를 정의하고 사용하면 특정 기능을 반복해서 사용할 때 효율적으로 코드를 작성할 수 있다.

함수 선언

def 함수명(매개변수):
    내용
  • 함수명의 첫 글자는 소문자로 한다(관례)
  • 변수 선언과 마찬가지로 '어떤 기능인지' 알기 쉽도록 함수명을 정의하고, 주로 동사를 쓴다.
  • 매개변수는 없을 수 있지만, 괄호는 반드시 써야 한다.
    (함수를 호출할 때 괄호 안에 넣는 것은 인수라고 한다.)
  • 선언한 함수는 호출해야 작동한다.
  • 실행문이 없는 경우 오류가 발생한다. (pass를 사용하면 오류를 피할 수 있다)

함수 호출

함수명(인수)

  • 함수 내에서 또 다른 함수를 호출할 수 있다.
  • 함수 호출 시 괄호 안에 인수를 입력하면, 해당 인수는 함수에서 정의된 매개변수에 저장되어 함수가 작동된다.
  • 함수 선언 시 인수를 몇 개 받을지 갯수에 맞춰 매개변수를 입력해야 한다.
  • 함수 호출 시에는 선언된 매개변수 갯수체 맞춰 입력해야 한다
  • 받을 인수(매개변수)의 개수가 정해지지 않은 경우 를 이용해서 처리할 수 있다.
    (
    처리된 매개변수는 호출 시 입력하지 않아도 작동하는 데 문제없다.)
def printNum(*numbers):
    for number in numbers:
        print(number, ', ', end="")
    print()


# 출력결과

printNum(1)   # 1,
printNum(1,3)   # 1,3,
printNum(1,3,5)   # 1,3,5,
printNum(1,3,5,7)   # 1,3,5,7,

여러 개의 매개변수를 받을 떄, 함수에서는 받은 매개변수들을 tuple형태로 사용한다.

def testFunc(*args):
	print(args)
    print(type(args))

testfunc(1,2,3)  # (1,2,3) (<class tuple>)
testfunc('abc')  # ('abc',) (<class tuple>)

데이터 반환

def 함수명(매개변수):
	내용
    return [반환데이터]
  • 함수 결과를 반환한다.

전역변수/지역변수

전역변수

  • 함수 밖에서 선언된 변수로, 함수 안에서 사용은 가능하지만 수정할 수는 없다.(값을 바꿔도 함수 안에서만 바뀐다)
num = 10
def printNum():
num = 20
print(num)

# 출력결과
printNum()  # 20
print(num)  # 10
  • global 키워드를 사용하면 전역변수를 함수 안에서 수정 가능하다.
numOut = 10
def printNum():
	global numOut
	numOut = 20
	print(num)

# 출력결과
printNum()  # 20
print(numOut)  # 20

지역변수

  • 함수 안에서 선언된 변수로, 함수 안에서만 사용 가능하다.
def printNums():
numIn = 10
print(numIn)

printNums()   # 10
print(numIn)   # 에러(not defined)

중첩함수

  • 함수 안에 다시 함수를 선언할 수 있다. (안에서 선언된 함수는 해당 함수 안에서만 사용 가능)
def calculator(n1, n2, operator):

	def divCal():
        if n2 == 0:
            print('0으로는 나눌 수 없습니다.')
        else:
            print('나눗셈 연산: {}'.format(n1 / n2))
    
    if operator == 4:
        divCal()

위와 같은 경우, divCal() 함수는 호출할 수 없다.

lambda 함수

  • lambda 매개변수: 반환값
    위 형식으로 간단한 사용자함수를 정의할 수 있다. (사용법은 def로 만드는 것과 동일)
getTriangleArea = lambda n1, n2: n1 * n2 / 2

width = 3
height = 4
triangle = getTriangleArea(width,height)

print(triangle)  # 6.0

0개의 댓글