Python/문법/함수

덤프버전 : (♥ 0)


파일:나무위키+상위문서.png   상위 문서: Python/문법



1. 개요
2. 내장 함수
3. 일반 함수
4. 람다 함수
4.1. 응용


1. 개요[편집]


Python함수를 정리하는 문서.


2. 내장 함수[편집]


Python의 내장 함수는 다음과 같다. #
  • abs(): \'absolute value'의 약자. 절댓값을 뜻하며, 절댓값을 반환한다.
  • aiter(): \'asynchronous iterator'의 약자. 비동기 반복자를 뜻한다.
  • all()
  • anext(): \'asynchronous next'의 약자. 비동기 이터레이터에서 다음 값을 가져온다.
  • any()
  • ascii(): \'American Standard Code for Information Interchange'의 약자. 아스키 코드를 뜻한다.
  • bin(): \'binary'의 약자. 2진법을 뜻한다.
  • bool(): \'boolean'의 약자. 논리 연산을 뜻한다.
  • breakpoint(): 중단점을 뜻한다.
  • bytearray()
  • bytes()
  • callable()
  • chr(): \'character'의 약자.
  • classmethod()
  • compile()
  • complex()
  • delattr(): \'delete attribute'의 약자.
  • dict(): \'dictonary'의 약자. 사전을 뜻한다.
  • dir(): \'directory'의 약자. 디렉터리를 뜻한다.
  • divmod(): \'division and modulus'의 약자.
  • enumerate()
  • eval(): \'evaluate'의 약자.
  • exec(): \'execute'의 약자.
  • filter()
  • float()
  • format()
  • frozenset()
  • getattr(): \'get attribute'의 약자.
  • globals()
  • hasattr(): \'has attribute'의 약자.
  • hash()
  • help()
  • hex(): \'hexadecimal'의 약자. 16진법을 뜻한다.
  • id(): \'identity'의 약자.
  • input()
  • int(): \'integer'의 약자.
  • isinstance()
  • issubclass()
  • iter(): \'iterator'의 약자. 반복자를 뜻한다.
  • len(): \'length'의 약자. 길이를 뜻한다.
  • list()
  • locals()
  • map()
  • max(): \'maximum'의 약자.
  • memoryview()
  • min(): \'minimum'의 약자.
  • next()
  • object()
  • oct(): \'octal'의 약자. 8진법을 뜻한다.
  • open()
  • ord(): \'ordinal'의 약자.
  • pow(): \'power'의 약자. 거듭제곱을 뜻한다.
  • print()
  • property()
  • range()
  • repr(): \'representation'의 약자.
  • reversed()
  • round()
  • set()
  • setattr(): \'set attribute'의 약자.
  • slice()
  • sorted()
  • staticmethod()
  • str(): \'string'의 약자. 스트링을 뜻한다.
  • sum()
  • super()
  • tuple()
  • type()
  • vars(): \'variables'의 약자.
  • zip()
  • __import__()


3. 일반 함수[편집]


Python의 함수 정의 키워드는 def이다. 예시를 보자.
<예시>
def hello():
    print("Hello?")

hello()

이러면 Hello?라는 문자열이 출력된다.
함수의 이름은 파이썬의 기본 함수[1]로는 지정 할 수 없으며, 한글 이름과 숫자로 시작하는 이름은 입력 할 수 없다. 그리고 _를 제외한 특수 문자가 포함되게 할 수 없다.

그리고 인자라는 매개 변수를 줄 수 있다. 예시를 보자.
def name_hello(name):
    print(f"{name} : hello?")

name_hello("smith")

이러면 smith : hello? 라는 문자열이 출력된다.

return은 말그대로 반환값이다. 처음에는 함수 안에 명령어를 넣으면 되니 필요 없는 거 아닌가?라는 생각이 들 수 있으나, 아래 예시를 보면 생각이 바뀔 것이다.

<예시>
def multiply(a, b):
    return a*b

print(multiply(4, 4)

이 함수는 4와 4를 곱한 값인 16을 출력한다. print에 함수로 구해진 값인 16을 건네줘서 출력하는 거다.

하지만 굳이 인자를 가져오지 않아도 global 이라는 명령어를 사용하여 함수 안에서도 전역변수 사용을 명시할 수 있다. [2]다만 전역 변수는 모두 공통으로 사용하는 변수라, 상황에 따라 필요 할 때만 쓰는 것이 좋다.
a = 3
b = 5
def multiply():
    global a, b
    return a*b

print(multiply())

이 예시의 결과는 15이다. 만약 여기서 global을 뺐다면 오류가 났을 것이다.

정리하자면 Python에서의 함수의 종류는 총 4가지가 있다. 하나는 인자와 반환값이 없는 함수, 인자만 있는 함수, 반환값만 있는 함수, 인자와 반환값 둘 다 있는 함수이다.
함수의 인자로 입력된 변수는 함수 내에서만 사용 가능하다. 이걸 해결하기 위해 위의 global이 있는 것이다.

Asterisk를 2개 붙인 것은 키워드 변수를 의미한다. 이때, (키워드 - 값)의 딕셔너리 형태가 된다. 이때, 키워드는 str이다.
def function(**kwargs):
    print(kwargs)

function(a = 1, b = 2) # {'a': 1, 'b': 2}를 출력한다.


일반 변수, 키워드 변수, asterisk를 붙인 변수, double asterisk를 붙인 변수가 모두 있다면, 키워드 > 일반 > ** 변수 > * 변수 순서로 인식된다.
def function(a, b = 0, *args, **kwargs):
    print("a =", a)
    print("b =", b)
    print("args = ", args)
    print("kwargs =", kwargs)

function(1, 2, 3, b = 4, i = 5)

결과:
a = 1
b = 4
args = (2, 3)
kwargs = {'i': 5}



4. 람다 함수[편집]


람다 함수도 사용 가능하다. 람다 함수는 익명 함수를 뜻하며, 선언한 즉시 함수 그 자체가 되어 실행 가능하다.

square = lambda n: n**2
square(5) #25

함수도 일종의 객체로 취급하기 때문에 변수에 담거나 인자로 넘길 수 있다.

변수가 여럿이면 ,로 구분하면 된다.
add = lambda m, n: m+n


아예 변수가 없어도 된다. 이 경우 :의 왼쪽을 비우면 된다.
one = lambda: 1


타 언어와 달리 파이썬의 람다 함수는 한 줄밖에 쓸 수 없으니 참고해야 한다.


4.1. 응용[편집]


Python에서 람다 함수의 사용은 가독성을 헤치므로 추천되지 않는다. (PEP 8)
다만, 람다 함수의 적절한 사용은 편의성을 높여주므로 가독성을 헤치지 않는 정도로 적절히 사용하는 것이 좋다.

예를 들어, map 함수[3]나 functools 모듈의 reduce 함수와 lambda 함수의 궁합이 좋다.
map은 iterable한 자료형으로, 함수와 다른 iterable한 객체으로 만든다.
arr = map(func, iter)
arr[i] == func(iter[i]) #True


reduce는 이변수함수와 iterable한 객체를 인자로 받는 함수이다. reduce의 작용은 대략적으로 다음과 같다.
def reduce(func, iter)
    x = iter[0]
    for i in iter[1:]:
        x = func(x, i)
    return


이를 lambda 함수와 함께 사용하면 다음과 같이 사용할 수 있다.
arr = list(map(lambda x: x**3, range(7)))

print(arr) # [0, 1, 8, 27, 64, 125, 216]

import functools
total = functools.reduce(lambda x, y: x+y, [1, 3, 4])

print(total) # 1 + 3 + 4 = 8

[1] print, def, input, if, on, in 등[2] 명시한다고 표현한 이유는 함수가 정의될 때 스코프에 전역변수를 포함하기 때문이다. 하지만 함수 내에서 값을 수정하면 실제 전역변수는 수정되지 않아 global 키워드로 수정할 수 있다.[3] 사실은 클래스이지만

파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 Python/문법 문서의 r180에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
Python/문법 문서의 r180 (이전 역사)
문서의 r (이전 역사)
문서의 r (이전 역사)
문서의 r (이전 역사)
문서의 r (이전 역사)
문서의 r (이전 역사)
문서의 r (이전 역사)
문서의 r (이전 역사)
문서의 r (이전 역사)



파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 2024-06-02 04:03:04에 나무위키 Python/문법/함수 문서에서 가져왔습니다.