본문 바로가기
Python/파이썬 기초

기타 내장함수 - 파이썬 기초(16)

by 콩돌 2018. 12. 21.
반응형

참고 자료

https://docs.python.org/3/library/functions.html



파이썬 버전 3.7 기준



기타 파이썬의 다양한 내장함수


본 포스팅에서 다루는 함수는 다음과 같다.

help(),  hash(), id(), globals(), locals(), memoryview(), next(), breakpoint(), __import__()등.



함수의 설명을 보여주는 내장함수


help(func)

  ○ 사용 함수 func에 대한 도움말을 출력한다. 

  ○ 정확히는 작성된 함수에서 def function()부터 바로 아래 닥스트링까지를 출력해준다.


사용 예)

In[74]: def kk(ss=2):
     ...:    '''
     ...:    This is docstring to explain this function!
     ...:    '''
     ...:    print('input is', ss)
     ...:    
In[75]: help(kk)
Help on function kk in module __main__:
kk(ss=2)
    This is docstring to explain this function!


해시 및 주소와 관련된 내장함수


hash(object)

  ○ 객체의 해시값을 반환한다.

  ○ 해시값은 정수이며, 같다고 여겨지는 경우 같은 해시값을 가진다.

    ▷ 1.0과 1은 다른 자료형이지만 같은 해시값을 가진다.


In[47]: hash(1.0)

Out[47]: 1

In[48]: hash(1)

Out[48]: 1

In[49]: hash(500)

Out[49]: 500

In[50]: hash(500.0)

Out[50]: 500

In[51]: hash('g')

Out[51]: 1298338140

In[52]: hash('ggg')

Out[52]: 652961619


id(object)

  ○ 객체의 아이덴티티를 반환한다.

  ○ 객체가 존재하는 동안(바꿔말하면, 객체의 수명) 바뀌지 않는 것이 보장되는 정수이다.

    ▷ 쉽게 설명하면 객체의 주소라고 이해하면 편하다.

    ▷ 다음 예에서 보면 1.0의 아이덴티티는 계속해서 바뀌나 변수 a로 정의해 줬을 경우 같은 값을 가진다. 즉, 1.0이 생으로 입력될 경우 입력된 1.0의 수명은 id가 입력된 순간정도지만, a라는 변수로 정의될 경우 a가 바뀌기 전까지가 a=1.0의 수명이므로 a가 바뀌기기 전까지는 같은 아이덴티티를 가지는 것을 확인할 수 있다.


※ 정확히는 모르겠으나, C언어에서는 변수를 선언하는 순간 변수에 할당 메모리를 가지기 때문에 변수를 변경해도 주소는 그대로라고 줏어 들은거 같은데, 파이썬은 변수를 바꾸는 순간 아예 새로 정의하므로 주소가 변경되는 것으로 보인다. 이러한 특징으로 파이썬은 속도가 느리지만 같은 변수명으로 다른 자료형을 변경해서 넣는 것이 가능하다고 여겨진다.(뇌피셜..)


사용 예)

In[65]: id(1.0)

Out[65]: 83022832

In[66]: id(1.0)

Out[66]: 83022048

In[67]: id(1.0)

Out[67]: 83022832

In[68]: a=1.0

In[69]: id(a)

Out[69]: 83022048

In[70]: id(a)

Out[70]: 83022048

In[71]: id(a)

Out[71]: 83022048

In[72]:  a=2.0

In[73]:  id(a)

Out[73]: 83023344



변수목록을 보여주는 내장함수


globals()

  ○ 현재 전역 심볼 테이블을 나타내는 딕셔너리를 반환한다.

  ○ 항상 현재 모듈의 딕셔너리임을 명심하자.


locals()

  ○ 현재 지역 심볼 테이블을 나타내는 딕셔너리를 갱신하고 반환한다. 

  ○ 이 함수 블록에서 호출될 때에는 자유 변수를 반환하지만, 클래스 블록에서 호출할 경우에는 그렇지 않다.

※ 이 딕셔너리의 내용은 함부로 수정해서는 안된다. 



기타 내장함수


memoryview(object)

  ○ 입력된 객체의 메뮤리뷰 객체를 반환한다.


next()

  ○ __next__() 메서드를 호출하여 iterator에서 다음 항목을 꺼내서 반환한다.


breakpoint(*arg, **kws)

  ○ 이 함수는 호출 지점에서 디버거로 진입하게 한다.


__import__(name, globals=None, locals=None, fromlist=(), level=0)

  ○ 이 함수는 일상적인 파이선 프로그래밍에서는 크게 필요하지는 않은 고급 함수이다.

  ○ 이 함수를 직접 사용하기 보다 importlib.import_module()을 사용 할 것을 권고한다.

  ○ name은 import할 모듈이름이다. 



반응형

댓글