상세 컨텐츠

본문 제목

[Python] 함수

Python

by 래모 2021. 2. 10. 00:52

본문

함수란? 자판기 같은 것!

len()이라는 자판기에 

"안녕하세요"를 넣으니 5가 나왔음

 

len()이라는 자판기는 문자열의 길이(글자 수)를

'뽑아주는' 자판기임

 

그래서 그 결과로 5가 나온 것

 

def 함수이름(매개변수):
    변수 = 초기값
    함수에서 실행할 내용
    return 변수

 

함수를 쓰는 주된 이유는 반복성

print("조주희님 안녕하세요!")
print("홍길동님 안녕하세요!")
print("김땡땡님 안녕하세요!")

위처럼 쓰는 것보다 아래처럼 쓰는 것이 코드를 간결하게 만들어줌

def hi(name):
    print("{0}님 안녕하세요!".format(name))
    
hi(조주희)
hi(홍길동)
hi(김땡땡)

 

전달값과 반환값

 

매개변수 자리에 들어가는게 전달값이고 return을 통해 반환되는 것을 반환값이라 부름

 

def deposit(balance, money):
    print("입금이 완료되었습니다. 잔액은 {0} 원입니다." .format(balance + money))
    return balance + money

balance = 0 // 잔액 없음
balance = deposit(balance, 1000)
print(balance) // 1000출력

 

 

기본값

def profile(name, age, main_language):
    print("이름: {0}/t나이: {1}/t주 사용언어: {2}".format(name, age, mainlanguage))
    
profile(조주희, 20, 파이썬)
profile(홍길동, 20, 파이썬)

기본값이란 위와 같이 나이가 같을 시 그냥 age 자체를 20으로 설정해주는 것을 말함

 

def profile(name, age=20, main_language=파이썬):
    print("이름: {0}/t나이: {1}/t주 사용 언어: {2}".format(name, age, mainlanguage))
    
profile(조주희)
profile(홍길동)

 

 

지역변수(로컬 변수) vs 전역변수(글로벌 변수)

 

지역변수(로컬 변수) : 함수 안에 사용하는 변수로 범위가 존재하며, 함수가 종료되면 메모리에서 사라진다.

  • 코드블럭 내에서만 의미가 있으며 해당 데이터는 스택에 저장되어 있다가 사라진다.
  • 이름이 같은 경우, 전역변수에 비해 지역변수의 우선순위가 더 높다.

 

전역변수(글로벌 변수): 프로그램 전체에서 사용하는 변수로 일반적으로 함수 밖의 변수를 말한다.

  • 지역변수를 전역변수로 사용하기 위해서는 앞에 'global'이라는 키워드를 붙여준다.
  • 데이터가 노트북의 메모리에 남으며 jupyter의 경우, 다른 셀에서 실행하더라도 기존에 저장했던 값을 가져온다.

 

 

자주 쓰이는 내장함수들

 

abs(-1) // 절대값 출력
> 1


chr(97) // 아스키 코드 값을 입력받으면 해당하는 문자 출력
>'a'


ord('a') // 문자를 아스키 코드값으로 돌려줌
> 97


a = input() // 사용자 입력을 받는 함수


int('1') // 정수로 변환
> 1

str(333) // 문자열로 변환
> '333'


len('abc') // 길이 반환(요소의 전체 길이)
> 3


list('abc') // 반복 가능한 자료형을 리스트로 반환
> ['a', 'b', 'c']


list(range(3)) // 범위 값을 반복 가능한 객체로 돌려줌
> [0,1,2]
list(range(1,3))
> [1,2]
list(range(1,10,2) // 세번째 인수는 숫자 사이의 거리
> [1,3,5,7,9]

round(1.5) // 반올림 함수
> 2
round(4.456,2) 두번째 인수는 소수점 자리수
> 4.47

type('a') // 자료형 확인
> <class 'str'>


-----------------------------------------------------------------------------------------------
f = lambda x,y : x*y // ':'를 기준으로 그 전엔 변수들을 뒤에는 반환값 작성
print(f(3,4))
>12


num = [1,2,3,4,5]
a = list(filter(lambda x: x < 4, num))
print(a)
>1,2,3
// 첫번째는 함수를 두번째는 리스트를 받아 조건에 맞지 않는 객체는 제외함


num = [1,2,3,4,5]
a = list(map(lambda x: x*2, num))
print(a)
> 2,4,6,8,10
// 첫 번째는 함수를 두번째는 리스트를 받아 새로운 리스트로 반환


from functools import reduce 
num = [1,2,3,4,5]
print(reduce(lambda x,y: x+y, num))
> 15
// 첫 번째는 함수를 두번째는 리스트를 받아 리스트의가장 첫번째 요소와 두 번째 요소에 대해 함수를 적용하여 새로운 결과를 도출하고 이 결과값과 다음 요소에 대해 함수를 적용하여 최종적으론 결과값 1개만 출력해주는 함수

 

www.acmicpc.net/problem/15781