바뀜

둘러보기로 가기 검색하러 가기
2,907 바이트 추가됨 ,  2024년 12월 24일 (화) 09:13
편집 요약 없음
1번째 줄: 1번째 줄:  
함수의 사용에 대한 문서.
 
함수의 사용에 대한 문서.
 +
 +
<youtube>https://www.youtube.com/watch?v=sUQTDqQm1Hg</youtube>
    
==개요==
 
==개요==
42번째 줄: 44번째 줄:  
변수1, 변수2 = 함수()  # 이 형태로 사용하면 반환하는 순서대로 변수에 대입된다.
 
변수1, 변수2 = 함수()  # 이 형태로 사용하면 반환하는 순서대로 변수에 대입된다.
 
|-
 
|-
|인수값을 특정할 수 없을
+
|인수에 기본값을 지정할
가변인수를 사용한다.
   
|<syntaxhighlight lang="python">
 
|<syntaxhighlight lang="python">
def 함수명(인수1, 인수2, ..., *인수):
+
def 함수명(인수1, 인수2=기본값):
 
     명령
 
     명령
     return 반환값1, 반환값2, ...
+
     return 반환값
</syntaxhighlight>#가변인수는 가장 뒤에 두며, 이들은 튜플형태로 저장된다.
+
</syntaxhighlight>
튜플명은 인수명으로.
   
|-
 
|-
|튜플이 아닌 딕셔너리로 가변인수
+
|함수의 타입을 지정할 때
|<syntaxhighlight lang="python">
+
(타입 힌팅)
def 함수명(인수1, 인수2, ..., **인수):
+
 
 +
(입력)
 +
|함수가 받아들이는 타입을 제한할 수 있다.<syntaxhighlight lang="python">
 +
def 함수명(인수1: 타입, 인수2: 타입 = 기본값):
 
     명령
 
     명령
     return 반환값1, 반환값2, ...
+
     return 반환값
</syntaxhighlight>#딕셔너리 인수를 넣을 땐 <code>키=값</code> 형태로 기입한다.
+
</syntaxhighlight>타입을 제한하고 기본값을 넣을 수도 있다.
 
|-
 
|-
|인수에 기본값을 지정할 때
+
|함수의 타입을 지정할 때
|<syntaxhighlight lang="python">
+
(타입 힌팅)
def 함수명(인수1, 인수2=기본값):
+
 
 +
(반환)
 +
|함수가 밷는 타입에 대한 힌트를 줄 수 있다.<syntaxhighlight lang="python">
 +
def 함수명(인수, 인수2) -> 타입:
 
     명령
 
     명령
 
     return 반환값
 
     return 반환값
</syntaxhighlight>
+
</syntaxhighlight>반환 타입을 지정한다. 리스트 따위를 넣을 수 있다.
 
|-
 
|-
 
|함수에 대한 설명을 넣을 때
 
|함수에 대한 설명을 넣을 때
73번째 줄: 79번째 줄:  
|}함수 안에서 함수를 불러오는 등 다양하게 사용할 수 있다.
 
|}함수 안에서 함수를 불러오는 등 다양하게 사용할 수 있다.
    +
=== 가변인수 ===
 +
{| class="wikitable"
 +
!형태
 +
!방법
 +
|-
 +
|인수가 넣어질 때와 안넣어질 때를 구분할 대.
 +
|<syntaxhighlight lang="python">
 +
def 함수명(인수1, 인수2, 인수3=기본값):
 +
    명령
 +
    return 반환값1, 반환값2, ...
 +
</syntaxhighlight>위 형태를 넣으면 인수3을 넣어도 되고 안넣어도 된다.
 +
|-
 +
|인수의 갯수, 값을 특정할 수 없을 때.
 +
가변인수를 사용한다.
 +
 +
주어진 인수의 갯수를 넘어 더 많은 인수를 기입하게 되면 튜플형태로 입력된다.
 +
 +
args 안에 데이터가 담겨, 이를 이용할 수 있다.
 +
|<syntaxhighlight lang="python">
 +
def 함수명(인수1, 인수2, ..., *args):
 +
    for i in args:
 +
        명령
 +
    return 반환값1, 반환값2, ...
 +
</syntaxhighlight>가변인수는 가장 뒤에 두며, 이들은 튜플형태로 저장된다.
 +
튜플명은 인수명으로.
 +
 +
일반적으로 arguments의 약자인 args를 쓴다.
 +
|-
 +
|튜플이 아닌 딕셔너리로 가변인수.
 +
 +
 +
 +
 +
args와 같이 쓰면, 데이터만 들어온 경우 args에 튜플로 담기고,
 +
 +
<code>변수명 = 3</code> 형태로 들어온 경우 kwargs에 사전형으로 담긴다.
 +
|<syntaxhighlight lang="python">
 +
def 함수명(인수1, 인수2, ..., **kwargs):
 +
    for x, y in kwargs.items():
 +
        명령
 +
       
 +
    # 아래처럼 사용할 수도 있다.
 +
    request = kwargs.get('변수명', None)  # None 자리엔 없을 때 넣을 기본 값.
 +
   
 +
    return 반환값1, 반환값2, ...
 +
   
 +
 +
</syntaxhighlight>딕셔너리 인수를 넣을 땐 <code>키=값</code> 형태로 기입한다.
 +
일반적으로 keyword arguments의 약자인 kwargs를 쓴다.
 +
|}
 +
 +
=== 간단하게 사용할 팁 ===
 +
{| class="wikitable"
 +
!상황
 +
!방법
 +
|-
 +
|함수를 반복해 사용하는데, 사용되는 변수가 너무 많을 때.
 +
함수를 쓸 때마다 모든 변수를 기입해 넣는 것은 굉장히 불편한 일이다.
 +
 +
때문에 사전 안에 모든 변수값을 기입해 넣는 방식이 잘 쓰인다.
 +
|<syntaxhighlight lang="python">
 +
def 함수명(인수1, 인수2, 인수3=기본값):
 +
    명령
 +
    return 반환값1, 반환값2, ...
 +
   
 +
사전 = {'인수1':값,
 +
        '인수2':값2,
 +
        '인수3':값3.....}
 +
       
 +
# 다음과 같은 형태로 함수에 사전을 넣으면 인수명에 값이 대응된다.
 +
함수명(**사전)
 +
</syntaxhighlight>
 +
|}
 
===사용===
 
===사용===
 
함수명(인수) 형태로 사용한다.
 
함수명(인수) 형태로 사용한다.
82번째 줄: 161번째 줄:  
===지역변수와 전역변수===
 
===지역변수와 전역변수===
 
기본적으로 함수 내부에서 정해진 변수는 사용이 끝나면 지워진다.
 
기본적으로 함수 내부에서 정해진 변수는 사용이 끝나면 지워진다.
 +
 +
지역변수 : 함수 안에서만 쓰이는 변수.
 +
 +
전역변수 : 함수 안팎으로 쓰이는 글로벌한 변수.
 +
 +
이름이 겹칠 때 전역변수를 사용하고 싶다면 global 변수명을 붙여준다.
    
===전역변수의 사용===
 
===전역변수의 사용===
94번째 줄: 179번째 줄:  
<code>global 변수명</code>을 넣어준다.
 
<code>global 변수명</code>을 넣어준다.
 
|}
 
|}
 +
nonlocal 함수 안에서 함수를 또 정의할 때 상위함수의 변수를 다루고 싶다면 <code>nonlocal 변수명</code>을 넣어준다.(한단계 위의 변수를 찾는다.)
 +
 +
함수 안의 함수는 closure라고 한다.
 +
 
==ps==
 
==ps==
 
[[분류:기초]]
 
[[분류:기초]]
익명 사용자

둘러보기 메뉴