본문 바로가기

System/Python

Python 내장함수

abs

abs(x)는 숫자값을 입력값으로 받았을 때, 그 숫자의 절대값을 돌려주는 함수이다.
>>> abs(3)
3
>>> abs(-3)
3
>>> abs(1+2j)
2.2360679774997898
>>>


복소수의 절대값은 다음과 같이 구해진다.
abs(a + bj) = sqrt (a^2+b^2)

 


all

all(x)은 반복가능한(iterable) x가 모두 참인경우 True, 거짓이 하나라도 있을 경우 False를 리턴한다. (※ 반복가능한 x는 for문으로 x값을 출력할 수 있는 형태의 자료형을 의미한다.)

다음의 예를 보자.
>>> all([1,2,3])
True


반복가능한 리스트 자료형 [1,2,3]은 모든 항목이 참이므로 True를 리턴한다.
>>> all([1,2,3,0])
False


반복가능한 리스트 자료형 [1,2,3,0] 중에서 0은 거짓이므로 False를 리턴한다.

 

 

any

any(x)는 반복가능한(iterable) x중 어느것이라도 참이 있을 경우 True를 리턴하고 모두 거짓일 경우에만 False를 리턴한다. all(x)의 반대 경우라고 할 수 있다.

다음의 예를 보자.
>>> any([1,2,3,0])
True


반복가능한 리스트 자료형 [1,2,3,0] 중에서 1은 참이므로 True를 리턴한다.
>>> any([0, ""])
False


반복가능한 리스트 자료형 [0, ""] 의 항목 0과 ""은 모두 거짓이므로 False를 리턴한다.

 

 

 

chr

chr(i)는 정수 형태의 아스키코드값을 입력으로 받아서 그에 해당하는 문자를 출력하는 함수이다.
>>> chr(97)
'a'
>>> chr(48)
'0'
>>>

 


dir

dir은 객체가 가지고 있는 변수나 함수를 리스트 형태로 보여준다. 아래의 예는 리스트와 딕셔너리 객체의 관련 함수들(메소드)을 보여주는 예이다. 우리가 앞서서 살펴보았던 관련함수들을 구경할 수 있을 것이다.
>>> dir([1,2,3])
['append', 'count', 'extend', 'index', 'insert', 'pop',...]
>>> dir({'1':'a'})
['clear', 'copy', 'get', 'has_key', 'items', 'keys',...]

 


divmod

divmod(a,b)는 두 개의 숫자를 입력값으로 받았을 때 그 몫과 나머지를 튜플의 형태로 반환하는 함수이다.
>>> divmod(7,3)
(2,1)
>>> divmod(1.3, 0.2)
(6.0, 0.099999999999999978)

 


enumerate

enumerate는 입력값으로 시퀀스자료형(리스트, 튜플, 문자열)을 입력으로 받아 enumerate객체를 리턴한다. enumerate객체는 첫번째로 그 순서값, 두번째로 그 순서값에 해당되는 시퀀스 자료형의 실제값을 갖는 객체이다.

enumerate는 아래의 예와같이 보통 for문과 함께 사용된다.
>>> for i, name in enumerate(['boby', 'foo', 'bar']):
...     print(i, name)
...
0 boby
1 foo
2 bar


반복구간에서 시퀀스 자료형의 값 뿐만 아니라 현재 어떤 위치에 있는지에 대한 인덱스값이 필요한 경우에 enumerate함수는 매우 유용하다.

eval

eval(expression)은 입력값으로 실행가능한 문자열(1+2, 'hi' + 'a' 같은 것)을 입력으로 받아서 문자열을 실행한 결과값을 반환하는 함수이다.
>>> eval('1+2')
3
>>> eval("'hi' + 'a'")
'hia'
>>> eval('divmod(4,3)')
(1, 1)

 


filter

filter(function, iterable)는 함수와 반복가능한 자료형을 입력으로 받아서 반복자료형의 값이 하나씩 함수에 인수로 전달될 때, 참을 반환시키는 값만을 따로 모아서 리턴하는 함수이다. filter의 뜻은 무엇인가를 걸러낸다는 뜻이다. 이 의미가 filter 함수에서도 그대로 사용된다.

다음의 예를 보자.
#positive.py
def positive(l):
    result = []
    for i in l:
        if i > 0:
            result.append(i)
    return result

print(positive([1,-3,2,0,-5,6]))


결과값: [1, 2, 6]

즉, 위의 positive함수는 리스트를 입력값으로 받아서 각각의 요소를 판별해 양수값만 따로 리스트에 모아 그 결과값을 돌려주는 함수이다.

filter함수를 이용하면 아래와 같이 위의 내용을 간단하게 쓸 수 있다.
#filter1.py
def positive(x):
    return x > 0

print(list(filter(positive, [1,-3,2,0,-5,6])))


결과값: [1, 2, 6]

filter 함수는 첫 번째 인수로 함수명을, 두 번째 인수로는 그 함수에 차례로 들어갈 반복 가능한 자료형(예:리스트, 튜플, 문자열)을 받는다. filter 함수는 두 번째 인수인 각 리스트의 요소들이 첫 번째 인수인 함수에 들어갔을 때 리턴 값이 참인 것만을 묶어서 돌려준다. 위의 예에서는 1, 2, 6 만이 양수로 x > 0 이라는 문장이 참이 되므로 [1, 2, 6]이라는 결과 값을 돌려주게 된다.

lambda를 쓰면 더욱 간편하게 쓸 수 있다. (lambda함수는 잠시 후에 설명한다.)
>>> print(list(filter(lambda x: x > 0, [1,-3,2,0,-5,6])))
[1, 2, 6]

 


hex

hex(x)는 입력으로 정수값을 받아서 그 값을 십육진수값(hexadecimal)로 변환하여 돌려주는 함수이다.
>>> hex(234)
'0xea'
>>> hex(3)
'0x3'

 


id

id(object)는 객체를 입력값으로 받아서 객체의 고유값(레퍼런스)을 반환하는 함수이다.
>>> a = 3
>>> id(3)
135072304
>>> id(a)
135072304
>>> b = a
>>> id(b)
135072304


a, b 3이 모두 같은 객체를 가리키고 있음을 보여 준다.

4는 다른 객체이므로 당연히 id(4)는 다른 값을 보여 준다.
>>> id(4)
135072292


 

input

input([prompt])은 사용자 입력을 받는 함수이다.

입력 인수로 문자열을 주면 아래의 세번째 예에서 보듯이 그 문자열은 프롬프트가 된다.
>>> a = input()
hi
>>> a
'hi'
>>> b = input("Enter: ")
Enter: hi


위에서 입력 받은 문자열을 확인해 보면 다음과 같다.
>>> b
'hi'

 

※ 파이썬 2.7 버전의 경우 위 예제의 input 대신 raw_input으로 사용해야 한다. (참고: 파이썬 2.7 vs 파이썬 3)

 

 

int

int(x)는 스트링 형태의 숫자나 소수점 숫자 등을 정수의 형태로 반환시켜 돌려준다. 정수를 입력으로 받으면 그대로 돌려준다.
>>> int('3')
3
>>> int(3.4)
3


int(x, radix)는 x라는 문자열을 radix(진수)형태로 계산한 값을 리턴한다.

'11'이라는 이진수 값에 대응되는 십진수 값은 다음과 같이 구한다.
>>> int('11', 2)
3


'1A'라는 십육진수 값에 대응되는 십진수 값은 다음과 같이 구한다.
>>> int('1A', 16)
26

 


isinstance

isinstance(object, class)는 입력값으로 인스턴스와 클래스 이름을 받아서 입력으로 받은 인스턴스가 그 클래스의 인스턴스인지를 판단하여 참이면 True, 거짓이면 False를 반환한다.
>>> class Person: pass
. . .
>>> a = Person()
>>> b = 3
>>> isinstance(a, Person)
True


위의 예는 a가 Person 클래스에 의해서 생성된 인스턴스임을 확인시켜 준다.
>>> isinstance(b, Person)
False


b는 Person 클래스에 의해 생성된 인스턴스가 아니므로 isinstance의 결과가 False로 리턴된다.

 

 

lambda

lambda는 함수를 생성할 때 사용되는 예약어로 def와 동일하나 보통 한줄로 간결하게 만들어 사용할 때 사용한다. lambda는 “람다”라고 읽으며 보통 def를 쓸 정도로 복잡하지 않거나 def를 쓸 수 없는 곳에 쓰인다. lambda는 다음과 같이 정의된다.
lambda 인수1, 인수2, ...  : 인수를 이용한 표현식


한 번 만들어 보자.
>>> sum = lambda a, b: a+b
>>> sum(3,4)
7


lambda를 이용한 sum함수는 인수로 a, b를 받고 a와 b를 합한 값을 돌려준다. 위의 lambda를 이용한 sum함수는 다음의 def를 이용한 함수와 하는 일이 완전히 동일하다.
>>> def sum(a, b):
. . .     return a+b
. . .
>>>


그렇다면 def가 있는데 왜 lambda라는 것이 나오게 되었을까? 이유는 간단하다. lambda는 def 대신 간결하게 사용할 수 있고 def로 쓸 수 없는 곳에 lambda는 쓰일 수 있기 때문이다. 리스트 내에 lambda가 들어간 경우를 살펴보자.
>>> l = [lambda a,b:a+b, lambda a,b:a*b]
>>> l
[at 0x811eb2c>, at 0x811eb64>]


즉 리스트 각각의 요소에 lambda 함수를 만들어 쓸 수 있다. 첫 번째 요소 l[0]은 두개의 입력값을 받아서 합을 돌려주는 lambda 함수이다.
>>> l[0]
at 0x811eb2c>
>>> l[0](3,4)
7


두 번째 요소 l[1]은 두개의 입력값을 받아서 곱을 돌려주는 lambda 함수이다.
>>> l[1](3,4)
12


여러분은 파이썬에 익숙해질수록 lambda 함수를 더욱 더 사랑하게 될 것이다.

 

 

len

len(s)은 인수로 반복가능한(iterable) 자료형(문자열, 리스트, 튜플, 딕셔너리, 집합등)을 입력으로 받아 그 길이(요소의 개수)를 돌려주는 함수이다.
>>> len("python")
6
>>> len([1,2,3])
3
>>> len((1, 'a'))
2

 


list

list(s)는 인수로 반복가능한(iterable) 자료형을 입력받아 그 요소를 똑같은 순서의 리스트로 만들어 돌려주는 함수이다. 리스트를 입력으로 주면 똑같은 리스트를 복사하여 돌려준다.
>>> list("python")
['p', 'y', 't', 'h', 'o', 'n']
>>> list((1,2,3))
[1, 2, 3]
>>> a = [1,2,3]
>>> b = list(a)
>>> b
[1, 2, 3]
>>> id(a)
9164780
>>> id(b)
9220284


list(a)는 리스트를 복사해서 다른 리스트를 돌려주는 것을 위의 예에서 확인할 수 있다. 즉 a와 b의 id값이 서로 다르다.

 

 

map

map(f, iterable)은 함수(f)와 반복가능한 자료형(iterable)을 입력으로 받아 입력 자료형의 각각의 요소가 함수 f에 의해 수행된 결과를 묶어서 리턴하는 함수이다.

다음의 함수를 보자.
def two_times(l):
    result = []
    for i in l:
        result.append(i*2)
    return result


이 함수는 리스트를 입력받아서 각각의 요소에 2를 곱한 결과값을 돌려주는 함수이다.

다음과 같이 쓰일 것이다.
# two_times.py
def two_times(l):
    result = []
    for i in l:
        result.append(i*2)
    return result

result = two_times([1,2,3,4])
print(result)


결과값: [2, 4, 6, 8]

이것을 다음과 같이 해보자.
>>> def two_times(x): return x*2
. . .
>>> list(map(two_times, [1,2,3,4]))
[2, 4, 6, 8]


즉 map이란 함수는 입력값으로 함수명과 그 함수에 들어갈 인수로 리스트 등의 시퀀스 자료형을 받는다. 이것은 다음과 같이 해석된다. 리스트의 첫 번째 요소인 1이 two_times 함수의 입력값으로 들어가서 1 * 2의 과정을 거쳐 2의 값이 결과값 리스트 []에 추가된다. 이 때 결과값은 [2]가 되고, 다음에 리스트의 두 번째 요소인 2가 two_times 함수의 입력값으로 들어가서 4가 된 다음 이 값이 또 결과값인 [2]에 추가되어 결과값은 [2, 4]가 된다. 총 4개의 요소값이 반복되면 결과값은 [2, 4, 6, 8]이 될 것이고 더 이상의 입력값이 없으면 최종 결과값인 [2, 4, 6, 8]을 돌려준다. 이것이 map 함수가 하는 일이다.

위의 예는 lambda를 쓰면 다음처럼 간략화된다.
>>> list(map(lambda a: a*2, [1,2,3,4]))
[2, 4, 6, 8]


[map을 이용해서 리스트의 값을 1씩 추가하는 예]
# map_test.py
def plus_one(x):
    return x+1
print(list(map(plus_one, [1,2,3,4,5])))


결과값: [2,3,4,5,6]


※ 위 예에서 map의 결과를 리스트로 보여주기 위하여 list함수를 이용하여 출력하였다. (파이썬 2.7은 map의 결과가 리스트이므로 위 예에서 list함수를 이용하여 리스트로 변환하지 않아도 된다.)

max

max(iterable)는 인수로 반복가능한 자료형을 입력 받아 그 최대값을 돌려주는 함수이다.
>>> max([1,2,3])
3
>>> max("python")
'y'

 


min

min(iterable)은 max와는 반대로 반복가능한 자료형을 입력 받아 그 최소값을 돌려주는 함수이다.
>>> min([1,2,3])
1
>>> min("python")
'h'


oct

oct(x)는 정수 형태의 숫자를 8진수 문자열로 바꾸어 돌려주는 함수이다.
>>> oct(34)
'0o42'
>>> oct(12345)
'0o30071'

 


open

open(filename, [mode])은 파일 이름과 읽기 방법을 입력받아 파일 객체를 돌려주는 함수이다. 읽기 방법(mode)이 생략되면 기본적으로 읽기 전용 모드('r')로 파일객체를 만들어 리턴한다.


mode

설명


w 쓰기 모드로 파일 열기
r 읽기 모드로 파일 열기
a 추가 모드로 파일 열기
b 바이너리 모드로 파일 열기

※ w+, r+, a+ 는 파일을 업데이트할 용도로 사용된다.

b는 w, r, a와 함께 사용된다.
>>> f = open("binary_file", "rb")


위 예의 “rb”는 바이너리 읽기모드임을 의미한다.

아래 예의 fread와 fread2는 동일한 값을 나타낸다.
>>> fread = open("read_mode.txt", 'r')
>>> fread2 = open("read_mode.txt")


즉, 읽기모드 부분이 생략되면 기본값으로 'r'을 갖게 된다.

다음은 추가 모드로 파일을 여는 예이다.
>>> fappend = open("append_mode.txt", 'a')

 


ord

ord(c)는 문자의 아스키 값을 돌려주는 함수이다. (chr 함수의 반대 케이스이다.)
>>> ord('a')
97
>>> ord('0')
48

 


pow

pow(x, y)는 x의 y승을 한 결과값을 돌려주는 함수이다.
>>> pow(2, 4)
16
>>> pow(3, 3)
27

 


range

range([start,] stop [,step])는 for문과 잘 사용되는 것으로 인수로 정수값을 주어 그 숫자에 해당되는 범위의 값을 iteratable의 형태로 돌려주는 함수이다.

인수가 하나일 경우
>>> list(range(5))
[0, 1, 2, 3, 4]


인수가 두 개일 경우 (입력으로 주어지는 두 개의 숫자는 시작과 끝을 나타낸다. 끝번호가 포함이 안된다는 것에 주의 하자. )
>>> list(range(5, 10))
[5, 6, 7, 8, 9]


인수가 세 개일 경우 - 세 번째 인수는 시작번호부터 끝번호까지 가는데 숫자 사이의 거리를 말한다.
>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

 


repr

repr(object)은 객체를 출력할 수 있는 문자열 형태로 변환하여 돌려주는 함수이다. 이 변환된 값은 주로 eval 함수의 입력으로 쓰인다. str 함수와의 차이점이라면 str으로 변환된 값은 eval의 입력값이 될 수 없는 경우가 있다는 것이다.
>>> repr("hi".upper())
"'HI'"
>>> eval(repr("hi".upper()))
'HI'
>>> eval(str("hi".upper()))
Traceback (innermost last):
File "", line 1, in ? eval(str("hi".upper()))
File "", line 0, in ?
NameError: There is no variable named 'HI'


위의 경우처럼 str을 쓸 경우 eval 함수의 입력값이 될 수 없는 경우가 있다.

 

 

sorted

sorted(iterable) 함수는 입력으로 받은 반복가능한 자료형을 소트한 후 그 결과를 리스트로 리턴하는 함수이다.
>>> sorted([3,1,2])
[1, 2, 3]
>>> sorted(['a','c','b'])
['a', 'b', 'c']
>>> sorted("zero")
['e', 'o', 'r', 'z']
>>> sorted((3,2,1))
[1, 2, 3]


리스트 자료형에도 sort라는 함수가 있다. 하지만 리스트 자료형의 sort함수는 리스트 객체 그 자체를 소트할 뿐이지 소트된 결과를 리턴하지는 않는다.

다음의 예제로 sorted와 리스트 자료형의 sort함수와의 차이점을 확인해 보자.
>>> a = [3,1,2]
>>> result = a.sort()
>>> print(result)
None
>>> a
[1, 2, 3]

 


str

str(object)은 객체를 출력할 수 있는 문자열 형태로 변환하여 돌려주는 함수이다. 단 문자열 그 자체로만 돌려주는 함수이다. 위의 repr함수와의 차이점을 살펴보자.
>>> str(3)
'3'
>>> str('hi')
'hi'
>>> str('hi'.upper())
'HI'

 


tuple

tuple(iterable)은 인수로 반복가능한 자료형을 입력 받아 튜플 형태의 자료로 바꾸어 돌려준다. 튜플형이 입력으로 들어오면 그대로 돌려준다.
>>> tuple("abc")
('a', 'b', 'c')
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple((1,2,3))
(1, 2, 3)

 


type

type(object)은 인수로 객체를 입력받아 그 객체의 자료형이 무엇인지 알려주는 함수이다.
>>> type("abc")
<class 'str'>
>>> type([])
<class 'list'>
>>> type(open("test", 'w'))
<class '_io.TextIOWrapper'>

 


zip

zip(iterable) 함수는 동일한 개수의 요소 값을 갖는 반복가능한 자료형을 묶어주는 역할을 한다. 예제로 확인해 보자.
>>> list(zip([1,2,3], [4,5,6]))
[(1, 4), (2, 5), (3, 6)]
>>> list(zip([1,2,3], [4,5,6], [7,8,9]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list(zip("abc", "def"))
[('a', 'd'), ('b', 'e'), ('c', 'f')]

 

 

출처 : https://wikidocs.net/32

'System > Python' 카테고리의 다른 글

python으로 바이너리 파일 업로드  (0) 2015.11.25
python 2.7.10 버전 설치 파일  (0) 2015.11.25
python 문자열 램덤  (0) 2015.11.17