-
[python]파이썬 특정 기능 수행 정의 함수/내장 함수/지역변수/전역변수/람다 함수/가변인자/딕셔너리인자/라이브러리/함수 map()/...Languages/python 2021. 4. 14. 12:41반응형
함수 개요
특정한 기능을 수행하는 프로그램 단위인 함수
여러 입력을 받아 특정한 기능을 수행하고 결괏값을 반환하는 코드
사용자가 직접 정의해 사용
파이썬에 설치된 다양한 함수를 활용
사용자 정의 함수의 함수 정의와 함수 호출
사용자 정의 함수와 내장 함수로 구분
print() input(),str(),int()... 등과 같은 내장 함수 사용
파이썬 함수 정의 구문 : 함수 이름과 인자,반환값
함수 머리는 키워드 def
함수 이름과 괄호,괄호사이의 인자들
함수 정의의 몸체인 블록을 예고하는 콜론(:)이 필요
함수 몸체는 들여쓰기로 시작
기능을 수행하는 문장들
마지막으로 키워드 return에 의해 반환 값을 돌려 주는 구문이 필요
인자(arguments)와 return 문장은 선택적(optional)
함수 호출은 함수 정의 이후
ex)
def hello():
print('Hello Python!')
>>>hello()
>>>'Hello Python!'
return문으로 함수 기능을 수행핱 후 반환 값을 전달
def hello(name): print('안녕, {}!'.format(name)) return '{}에게 인사'.format(name) print(hello('희정')) >>> 안녕, 희정! 희정에게 인사 >>>
반환 값에는 변수,표현식,시퀀스 등이 모두 가능하며 여기서는 문자열이다.
반환 값이 print()에 의해 출력된 값
위의 안녕 희정!은 함수 실행 중에 출력된 값이다.
예제)
인자인 두 수의 합을 반환하는 함수 mysum(x,y)
def mysum(x,y = 0): return x+y hap = mysum(5) print(hap) hap = mysum(5,10) print(hap) >>> 5 15 >>>
인자와 같이 반환 값도 여러 개가 가능하다.
def getprime(): return 2,3,5,7 a,b,c,d = getprime() print(a,b,c,d) >>> 2 3 5 7
지역 변수와 전역 변수
파이썬에서는 변수가 메모리에 생성되고 유지되는 범위
지역변수
함수 내부에서 대입돼 생성된 변수
지역변수는 함수외부에서 절대 사용할 수 없다!!!
ex>
def addone(): i = 30 // 지역변수 생성 i+= 1 //지역 변수 수정 print('\t 지역 변수 i:' , i)
전역변수
함수 외부에서 대입돼 생성된 변수
ex>
i = 20 print('i:' ,i) addone() print('i' ,i) >>>20 20
함수에서 값을 대입하지 않고 지역 변수를 참조하면 오류
생성되지 않은 변수 참조는 오류 발생
함수에서 golbal 문장으로 변수를 전역 변수를 지정
def addone(): global i // global 함수 지정 시 어디든 사용 가능 print('\t 전역 변수 i 읽기, i+1:',i+1) i+=1 i = 20 print('i = ',i) addone() print('i = ',i) >>> i = 20 전역 변수 i 읽기, i+1: 21 i = 21 >>>
위치 인자와 키워드 인자
위치인자
함수 호출 시 인자를 전달하는 일반적인 방법을 위치인자 방식
고정적,호출의 순서에 따라 인자를 구별하는 방식
위치인자 사용
def mysubstract(pre,post): return pre-post print(mysubstract(10,5))
키워드 인자
함수를 호출할 때 값을 전달한 인자를 직접 대입으로 지정하는 방식
키워드 인자 사용
print(mysubstract(post = 5,pre = 10))
키워드 인자는 모든 위치 인자 이후에 사용
print(mysubstract(10,post=5)) print(mysubstract(post =5,10)) >>>error print(mysubstract(10,pre=5)) >>>error
가변 인자 *args
인자 *args, 가변 인자로 전달하고 처리
*리스트
별표는 리스트나 튜플을 풀어 가변 인자 형태로 변환한다는 의미
def hello(*names): for each in names: print('안녕, {}!'.format(each)) hello('smith') hello('kim','lee','park') hello(*['bts','blackpink']) >>> 안녕, smith! 안녕, kim! 안녕, lee! 안녕, park! 안녕, bts! 안녕, blackpink! >>>
딕셔너리 인자 **kwargs
키워드 인자 형태의 가변 인자로 전달하고 처리
위치인자/가변인자와 같이도 사용가능 하다
def mykey(**kwargs): for key in kwargs: print('{}:{}'.format(key,kwargs[key]),end=' ') print() mykey(여자친구 = 6, 마마무 = 4) mykey(엑소 = 9,트와이스 = 9,블랙핑크 = 4,방탄소년단 = 7) >>> 여자친구:6 마마무:4 엑소:9 트와이스:9 블랙핑크:4 방탄소년단:7 >>>
람다함수
작고 이름이 없는 익명 함수
키워드 lambda 이후에 콤마로 구분된 인자 목록
람다 함수는 여러개의 인자를 취할 수 있지만 표현식은 하나만 가능
키워드 return없이 하나의 표현식 결괏값이 반환
lambda 인자1,인자2,... : 표현식
lambda x: x+1
lambda x,y : x+y
lambda x,y :pow(x,y)
print((lambda x : x ** 3)(3)) print((lambda a,b:a%b)(10,3)) div = lambda a,b :a/b print(div(10,2)) >>> 27 1 5.0 >>>
표준라이브러리와 내장함수
라이브러리
필요한 기능을 담당하는 함수나 클래스를 모아두는 모듈의 집합
표준 라이브러리
파이썬과 함께 설치돼 다른 부가적인 작업 없이 사용할 수 있는 라이브러리
내장함수
써드 파티 라이브러리
파이썬 패키지 색인 사이트에서 제공
파이썬 프로그래밍 언어의 방대한 소프트웨어 저장소
교육부문, 과학 및 수치 컴퓨팅, 빅데이터및 머신 러닝,웹 및 인터넷 개발, 그래픽,gui,게임등 매우 다양하다
산술 연산 관련 내장 함수
절댓값 함수 abs()
진수로 변환된 문자열을 반환하는 함수 bin(),oct(),hex()
내장 함수 format()
pow(), round(), divmod()
min(),max(), sum()
함수 sorted()에서 정렬의 비교 키로 사용하는 키워드 인자 key
words = "the core of extensible programming is defining functions".split() print(sorted(words, key = str.lower)) print(sorted(words, key = lambda word : word[1])) groupnumber = [('잔나비',5),('트와이스',9),('블랙핑크',4),('방탄',7)] print(sorted(groupnumber)) print(sorted(groupnumber, key = lambda singer:singer[1])) =========== ['core', 'defining', 'extensible', 'functions', 'is', 'of', 'programming', 'the'] ['defining', 'of', 'the', 'core', 'programming', 'is', 'functions', 'extensible'] [('방탄', 7), ('블랙핑크', 4), ('잔나비', 5), ('트와이스', 9)] [('블랙핑크', 4), ('잔나비', 5), ('방탄', 7), ('트와이스', 9)] >>>
항목의 논리를 검사하는 함수 all(),any()
함수 all (시퀀스)
시퀀스의 모든 항목이 참이거나 항목이 비어 있으면 true를 반환
b = all([3 > 4,'p' in 'py']) print(b) >>>False print(all('python')) >>>True print(all('')) >>>True print(all({})) >>>True
함수 any(시퀀스)
시퀀스에서 하나의 항목이라도 참이거나 항목이 비어 있지 않으면 true를 반환
b = any([3 > 4,'p' in 'py']) print(b) >>>True print(any('')) >>>False print(any({})) >>>False
함수 map()
-이터러블의 모든 항목에 function을 적용한 후 그 결과를 돌려주는 이터레이터를 반환
-이터러블(iterable)
항목을 하나씩 차례로 반환할 수 있는 객체
-시퀀스인 문자열,리스트와 튜플 모두 대표적인 이터러블
이터레이터는 시퀀스인 튜플이나 리스트로 변환해 항목을 활용
def addone(n): return n+1 lst = list(map(addone,[10,30,50,20])) print(lst) >>>[11,31,51,21]
함수 dir()
인자 없는 함수 dir()
현재 정의된 변수와 함수 이름의 리스트를 반환
파이썬 쉘을 처음 실행해 dir()을 입력
파이썬 쉘에서 사용 되는 시스템 변수 리스트
시스템에서 사용하는 모듈이나 변수는 앞뒤에 밑줄이 2개 붙어 _builtins_처럼 정의
>>>
dir()
['_EFsrgsr_','_DFSgs-','_Aefsg_', ...]
이후 우리가 정의한 함수나 변수도 dir()로 확인 가능
도움말 요청 함수 help() >>> 알아만 두기!!!
반응형'Languages > python' 카테고리의 다른 글