6.3 내장 함수

 

앞의 예제에서 print 또는 del을 사용해 보았는데 이렇게 파이썬 내부에 정의되어 있는 함수를 내장 함수라 부릅니다그리고 내장 함수는 이미 존재하고 있는 함수로 import로 불러오지 않고 바로 호출해서 사용할 수 있는 함수 입니다.

함수는 이름만 잘 만들어도 반은 먹고 들어간다고 했는데 그 말이 사살인지 확인해 볼까요?

 


6.3.1 abs 


음수, 양수 관계없이 단순히 크기만을 나타내기 때문에 음수를 양수로 변환 하는데 사용하기도 합니다.

>>> abs(3)

3

>>> abs(-3)

3

>>> abs(0.0002)

0.0002

>>> abs(-0.0002)

0.0002

 

 

6.3.2 all


자료형을 입력 받아 내부 요소가 모두 참이면 True를 리턴 하고 하나라도 거짓이 있으면 False를 리턴 합니다.

>>> all([1,2,3])

True

>>> all([4,5,1,3])

True

>>> all([4,5,1,0,3])

False

>>> all(('a', 'b', 'c'))

True

>>> all(('a', 'b', 'c', ''))

False

   

python study



6.3.3 any


자료형을 입력 받아 내부 요소가 모두 거짓이면 False를 리턴 하고 하나라도 참이 있으면 True를 리턴 합니다.

>>> any([4,5,1,0,3])

True

>>> any(('', 0))

False


 

6.3.4 chr


아스키(ASCII) 코드값을 입력 받아 문자를 출력 합니다.

# 10 진수

>>> chr(112)

'p'

>>> chr(80)

'P'

# 16 진수

>>> chr(0x50)

'P'

>>> chr(0x70)

'p'

 

 

6.3.5 dir


dir는 입력 받은 객체에 대해 사용할 수 있는 변수와 메소드를 나열해 줍니다.

입력값이 숫자인 경우

>>> dir(1)

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

 

입력값이 문자인 경우

>>> dir('a')

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

 

 

6.3.6 divmod


함수 명에서도 알 수 있듯이 나눗셈의 몫과 나머지를 구하는 함수 입니다숫자가 2개 필요하고 결과를 튜플 형태로 리턴 합니다.

>>> divmod(20, 3)

(6, 2)


 

6.3.7 enumerate


리스트, 튜플, 문자열등을 입력 받아 인텍스와 함꼐 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> for i, n in enumerate(a):

...   print(i, n)

...

0 1

1 2

2 3

3 4

4 5


  

6.3.8 eval


문자열을 명령어로 변환 하고 실행합니다변환된 명령어가 실행할 수 없으면 오류가 발생 합니다.

# 오류 발생

>>> eval('a' + 'b')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "<string>", line 1, in <module>

NameError: name 'ab' is not defined

 

# 정상 작동

>>> ab = 555

>>> eval('a' + 'b')

555


 

6.3.9 filter


filter(function, iterable)형태로 iterable 값들을 function을 통해 필터링 하여 결과 값을 반환 합니다. function에 어떤 조건의 데이터만 추출 하는지 정의가 되어야 합니다.

>>> def is_even(x):

...    if x % 2 == 0:

...       return True

...    else:

...       return False

...

>>> r = filter(is_even, [1,2, 3, 4, 5, 6,7])

>>> 

>>> for i in r:

...    print(i)

...

2

4

6

 

lambda도 함수와 같은 역할을 하고 반복 사용하지 않는다고 했는데 기억하시나요.

>>> r2 = list(filter(lambda x : x % 2 == 0,[1,2, 3, 4, 5, 6,7]))

>>> r2

[2, 4, 6]


 

6.3.10 hex


정수를 입력 받아 16진수를 리턴 합니다.

>>> hex(5)

'0x5'

>>> hex(10)

'0xa'

>>> hex(15)

'0xf'


 

6.3.11 id


입력된 객체의 주소값을 리턴 합니다.

>>> a = 'a'

>>> b = a

>>> id(a)

2998919036464

>>> id('a')

2998919036464

>>> id(b)

2998919036464

# a 값 변경

>>> a = 'b'

>>> id(a)

2998919034784

>>> id(b)

2998919036464

a, b, ‘a’는 모두 같은 주소를 바라보고 있습니다. a 값을 변경하면 a만 다른 주소를 바라보게 됩니다.


 

6.3.12 input


사용자로부터 입력값을 받아야 하는 경우 사용하며 input([prompt])를 이용하여 콘솔 창에 프롬프트가 나타나도록 할 수 있습니다.

>>> x = input()

Y

>>> x = input("계속 진행 하시겠습니까?(Y/N) :")

계속 진행 하시겠습니까?(Y/N) :Y

>>> x

'Y'


 

6.3.13 int


정수 형태의 문자나 정수, 실수 등을 입력 받아 정수를 반환 합니다반올림은 하지 않고 실수 형태의 문자는 오류가 발생 합니다.

>>> int('30')

30

>>> int('-45')

-45

>>> int(3.5444)

3

>>> int(-4.99999)

-4

>>> int('8.9999')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: invalid literal for int() with base 10: '8.9999'

 

다른 진수의 값을 10진수로 반환 합니다.

# 2진수 -> 10진수

>>> int('011', 2)

3

# 16진수 -> 10진수

>>> int('0xA', 16)

10

 


6.3.14 isinstance


isinstance(object, type) 형태로 사용하며 objecttype의 인스턴스 인가 확인하여 참이면 True, 거짓이면 False를 반환 합니다. type에는 복수의 데이터 형, 클래스 등이 포함될 수 있습니다.

# 정수가 정수냐?

>>> isinstance(3, int)

True

# 실수가 정수냐?

>>> isinstance(3.0, int)

False

# 실수가 정수 또는 실수냐?

>>> isinstance(3.0, (int, float))

True

# 클래스가 클래스냐?

>>> class OneClass:

...    a = 'aaa'

...

>>> b = OneClass()

>>> c = isinstance(b, OneClass)

>>> c

True

 


6.3.15 len


문자열의 길이 또는 요소의 개수를 리턴 합니다숫자의 개수는 구하지 못합니다.

>>> len('abcdefg')

7

>>> len([1, 2, 3, 4])

4

>>> len(['a', 'b', 'cc'])

3

>>> len((1, 2, 3, 4, 5))

5

>>> len(123)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: object of type 'int' has no len()

 


6.3.16 list


데이터를 입력 받아 list로 반환 합니다.

>>> list('abcdefg')

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> list([1,2,3,4,5])

[1, 2, 3, 4, 5]

>>> list((1,2,3,4,5))

[1, 2, 3, 4, 5]


  

6.3.17 map


map(function, iterator)형태로 iterator의 요소들을 하나씩 function에 적용하여 값을 리턴 받아 옵니다.

>>> 

>>> def addFunc(n):

...    return n + n

...

>>> nums = (1, 2, 3, 4, 5)

>>> res = map(addFunc, nums)

>>> print(list(res))

[2, 4, 6, 8, 10]

 

lambda를 이용하여 function을 대체할 수 있습니다.

>>> nums = (1, 2, 3, 4, 5)

>>> result = map(lambda x: x + x, nums)

>>> print(list(result))

[2, 4, 6, 8, 10]

 


6.3.18 max


입력된 값 중 최대 값을 반환 합니다문자와 숫자는 비교할 수 없습니다.

>>> max("PYTHON python")

'y'

>>> max([1, 2, 3, 4.5])

4.5

  


6.3.19 min


입력된 값 중 최소 값을 반환 합니다. 문자와 숫자는 비교할 수 없고 문자 보다 blank가 작은 값입니다.


 

>>> min("PYTHON python")

' '

>>> min([1, 2, 3, 4.5])

1



6.3.20 oct


정수를 입력 받아 8진수로 변환 하여 리턴 합니다.

>>> oct(8)

'0o10'

>>> oct(10)

'0o12'

 


6.3.21 open


open(filename, [mode])의 형태로 filename의 파일을 오픈 합니다오픈 하는 조건은 mode에 따라 달라집니다모드가 생략 되면 읽기 모드로 오픈 합니다.

f = open(“test_file”, “r”)

 

 

6.3.22 ord


문자를 입력 받아 ASCII 코드의 10진수 번호로 리턴 합니다. chr()와 반대 개념입니다.

>>> ord('a')

97

>>> ord('A')

65


 

6.3.23 pow


pow(x, y)x의 값을 y만큼 제곱한 결과를 리턴 합니다.

>>> pow(2, 3)

8

>>> pow(3, 3)

27

 


6.3.24 range


range([start,] stop [,step])의 형태로 일련 번호를 리턴 하며 인수가 하나, , 셋 모두 선택적으로 사용 가능 합니다.


- 인수가 하나인 경우

0 부터 stop 보다 작으며 1씩 증가 하는 값. (0 <= list < stop) 

>>> range(10)

range(0, 10)

>>> list(range(10))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

- 인수가 둘 경우

start 부터 stop 보다 작으며 1씩 증가 하는 값. (start <= list < stop)

>>> range(5, 10)

range(5, 10)

>>> list(range(5, 10))

[5, 6, 7, 8, 9]

 

- 인수가 셋 경우

start 부터 stop 보다 작으며 step씩 증가 하는 값. (start <= list < stop)

. >>> range(5, 10, 2)

range(5, 10, 2)

>>> list(range(5, 10, 2))

[5, 7, 9]

 

 

6.3.25 round


round(number[, ndigits])의 형태로 자릿수가 생략 되면 반올림 한 값을 리턴하고 자릿수가 입력 되면 정해진 자릿수 까지 반올림 된 값으로 표현 합니다.

>>> round(3.5)

4

>>> round(4)

4

>>> round(4.55555, 3)

4.556

 

6.3.26 sorted


입력값을 정렬하여 리턴 하는 함수 입니다.

>>> sorted("python")

['h', 'n', 'o', 'p', 't', 'y']

>>> sorted(['a', 'd', 'b', 'k', 'c'])

['a', 'b', 'c', 'd', 'k']

>>> sorted([5,7,2,4,6,8])

[2, 4, 5, 6, 7, 8]

>>> sorted([5,7,2,4,6,8,2])

[2, 2, 4, 5, 6, 7, 8]

>>> sorted((5,7,2,4,6,8,2))

[2, 2, 4, 5, 6, 7, 8]

 

 

6.3.27 str


입력 받은 값을 문자열 형태로 반환 합니다숫자를 문자와 결합 할 수 있습니다.

>>> str(123)

'123'

>>> str(345) + "abc"

'345abc'

>>> str("python".upper())

'PYTHON'

 

6.3.28 sum


입력된 값을 모두 더한 합을 리턴 합니다.

>>> sum((1, 2, 3))

6

>>> sum([1, 2, 3])

6

 

6.3.29 tuple


입력된 값을 튜플로 형변환 하여 반환 합니다.

>>> tuple("python")

('p', 'y', 't', 'h', 'o', 'n')

>>> tuple([1, 2, 3])

(1, 2, 3)

>>> tuple(('a', 'b', 'c'))

('a', 'b', 'c')

 

6.3.30 type


입력 값의 자료형을 리턴 합니다.

>>> type('a')

<class 'str'>

>>> type(1)

<class 'int'>

>>> type([])

<class 'list'>

 

 

6.3.31 zip


반복형 데이트를 튜플 형태의 쌍으로 묶어 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd', 'e']

>>> for i in zip(a, b):

...    print(i)

...

(1, 'a')

(2, 'b')

(3, 'c')

(4, 'd')

(5, 'e')

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]

 

서로 쌍의 개수가 맞지 않으면 작은 요소의 수에 맞줍니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd']

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]


- copy coding -


+ Recent posts