내장 함수

Python SELF KO
레벨 13 , 레슨 1
사용 가능

1.1 인기 있는 내장 함수 목록

이미 많은 내장 함수와 친숙해졌지만, 여러분께 앞으로 유용할 몇 가지 함수에 대해 더 말씀드리고 싶어요:

  • id()
  • hash()
  • dir()

아래에 각 함수에 대해 자세히 설명할게요:

함수 id()

id() 함수는 객체의 고유한 식별자(숫자)를 반환해. 이 식별자는 객체가 존재하는 동안 유일한 정수로 남아 있어. 일반적으로 식별자는 객체의 메모리 주소를 의미하지만, Python 사양에서 이것이 보장되지는 않아.

객체의 고유 식별자를 사용하면 많은 작업을 더 잘 이해할 수 있어, 예를 들어 객체가 어디에서 중복되고 같은 객체에 대한 참조가 어디에 있는지 더 잘 이해할 수 있어. 같은 객체는 다른 식별자를 가지지만 같은 객체에 대한 참조는 동일한 식별자를 보여줄 거야.

프로그램 디버깅 시나 Python이 메모리에서 객체를 어떻게 관리하는지 이해할 때 유용하게 사용할 수 있어.


a = [1, 2, 3]
b = a
print(id(a))  # 'a' 객체의 식별자를 출력
print(id(b))  # 같은 객체를 참조하므로 동일한 식별자를 출력

함수 hash()

hash() 함수는 특정 객체에 대해 해시값(숫자)을 반환해, 객체가 해시 가능할 경우에만. Python에서 해시 가능한 객체는 변경할 수 없어야 하고 그 생명 주기 동안 고정된 해시 값을 가져야 해.

숫자, 문자열, 튜플(모든 요소가 해시 가능해야 함) 같은 객체들이 좋은 예에 해당해. 해시 값은 딕셔너리와 집합에서 빠른 탐색을 위해 사용돼. 빠른 동등성 확인과 고유성 검사가 필요한 곳에서 데이터 검색 및 저장을 최적화하는 데 사용되지.


print(hash("hello"))  # 문자열 "hello"의 해시값 반환
print(hash(42))       # 숫자 42의 해시값 반환
print(hash((1, 2, 3)))  # 튜플 (1, 2, 3)의 해시값 반환

중요! 변경할 수 없는 객체의 해시 값은 생명 주기 동안 일정하게 유지돼. 그러나 리스트와 딕셔너리 같은 변경 가능한 객체는 해시가 불가능하며 딕셔너리의 키나 집합의 요소로 사용할 수 없어.

함수 dir()

dir() 함수는 객체의 속성과 메서드 목록을 반환해. 객체가 지정되지 않은 경우, dir()현재 로컬 범위의 이름 목록을 반환해. 이 함수는 객체의 구조와 속성을 공부하는 데 유용해.

객체의 모든 속성과 메서드 목록을 얻는 데 사용되며, 이는 객체의 구조와 사용할 수 있는 기능을 더 잘 이해하는 데 도움이 돼. 특히 문서가 제한되었거나 사용할 수 없을 때 디버깅 및 객체 연구에 자주 사용돼.


class MyClass:
    def __init__(self):
        self.name = "Alice"
            
    def greet(self):
        print("Hello, " + self.name)
        
obj = MyClass()
print(dir(obj))  # 'obj' 객체의 속성과 메서드 목록을 출력
print(dir())     # 현재 로컬 범위의 이름 목록을 출력

1.2 컬렉션 작업

컬렉션 작업에 유용한 몇 가지 함수가 더 있어. 이전 강의에서 언급되었을 수도 있지만, 지금은 좀 더 자세히 다루고 싶어.

  • zip()
  • min()
  • max()
  • sum()
  • count()

함수 zip()

zip() 함수는 여러 iterable 객체(리스트, 튜플, 문자열 등)를 결합하고 튜플의 iterator를 반환해. 각 튜플은 모든 iterable 객체에서 동일한 인덱스의 위치에서 수집된 요소를 포함해.

여러 iterable 객체의 데이터를 결합하여 동시에 쉽게 반복할 수 있게 하며, 두 개의 리스트에서 하나는 키, 다른 하나는 값을 위한 딕셔너리를 생성하는 데 자주 사용돼.


names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined))  # 출력: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]

함수 max()

max() 함수는 주어진 iterable 객체나 여러 인수에서 가장 큰 요소를 반환해. 비교 기준으로 키 함수를 지정할 수도 있어.


numbers = [1, 2, 3, 4, 5]
print(max(numbers))  # 출력: 5
            
# 키 함수와 함께
words = ["apple", "banana", "cherry"]
print(max(words, key=len))  # 출력: 'banana'

함수 min()

min() 함수는 주어진 iterable 객체나 여러 인수에서 가장 작은 요소를 반환해. 비교 기준으로 키 함수를 지정할 수도 있어.


numbers = [1, 2, 3, 4, 5]
print(min(numbers))  # 출력: 1
        
# 키 함수와 함께
words = ["apple", "banana", "cherry"]
print(min(words, key=len))  # 출력: 'apple'

함수 count()

count() 함수는 리스트나 문자열 같은 iterable 객체에서 특정 요소가 몇 번 등장하는지 개수를 세는 데 사용돼. 리스트, 컬렉션 또는 iterator에서 호출돼.


numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2))  # 출력: 3
    
text = "hello world"
print(text.count("o"))  # 출력: 2

함수 sum()

sum() 함수는 iterable 객체의 모든 요소의 합을 반환해. 선택적으로 합에 더해질 시작 값을 지정할 수 있어.


numbers = [1, 2, 3, 4, 5]
print(sum(numbers))  # 출력: 15
    
# 시작 값과 함께
print(sum(numbers, 10))  # 출력: 25
    

1.3 코드 실행

그리고 초보자로서 유용할 두 가지 함수가 더 있어:

  • eval()
  • exec()

이 함수들은 강력한 기능을 제공하지만, 잠재적인 보안 위험 때문에 주의해서 사용해야 해. 각 함수에 대한 자세한 정보를 제공할게:

함수 eval()

eval(expression) 함수는 문자열을 받아들여 Python 표현식으로 실행해. 이 함수는 이 표현식의 실행 결과를 반환해. 문자열 표현식을 Python 코드로 계산하는 데 사용돼.

예시:


x = 10
result = eval("x + 5")
print(result)  # 출력: 15

함수 exec()

exec() 함수는 문자열을 받아들여 Python 코드로 실행해. eval()은 표현식만 실행하지만, exec()는 함수 정의, 루프, 모듈 가져오기 등 모든 Python 문을 실행할 수 있어. 이 함수는 값을 반환하지 않아.

동적 스크립트 실행과 프로그램 실행 중 새로운 함수나 클래스 정의에 사용돼.


code = """
def greet(name):
    print(f"Hello, {name}!")
        
greet("Alice")
"""
exec(code)
# 출력: Hello, Alice!

중요! eval()처럼, exec()는 신뢰할 수 없는 입력 데이터와 함께 사용하면 위험할 수 있어. 주의해서 사용하고 production에서 코드 실행에 exec() 사용을 피해야 해.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION