logo
Search검색어를 포함하는 게시물들이 최신순으로 표시됩니다.
    Table of Contents
    [Python] 변수

    이미지 보기

    [Python] 변수

    • 21.12.31 작성

    • 읽는 데 11

    TOC

    참고 강의

    SWEA 파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법 #4


    변수

    어떠한 값을 저장하는 그릇(식별자)

    변수 자료형 식별 : type()

    
    >>> num = 10
    >>> str = "홍길동"
    >>> lst = [1, 2, 3]
    
    >>> print(type(num))
    <class 'int'> # 정수형 변수
    
    >>> print(type(str))
    <class 'str'> # 문자열 변수
    
    >>> print(type(lst))
    <class 'lst'> # 리스트 변수
    
    • 파이썬의 동적 타이핑 언어 특징, 저장된 값의 자료형에 의해 변수 자료형 결정
    • 변경이 가능한 변수에 의도치 않은 값이 전달되면, 변수의 자료형이 변경될 수 있어 주의
    • TypeError와 같은 오류 발생 가능 -> 변수는 하나의 자료형만을 사용할 것을 권장

    변수명

    • 숫자로 시작하는 변수는 만들 수 없다.
    • 문자의 대소문자는 꼭 구분한다.
    • 파이썬3부터는 한글로 된 변수명을 만들 수 있다.
    • 파이썬의 예약어는 사용할 수 없다. (ex. False, None, True, and, assert, break ...)

    변수와 객체

    변수는 객체에 대한 식별자 역할을 수행한다.

    >>> var1 = 10
    # Step 1. 메모리 공간에 정수 10의 값을 가진 객체 생성
    # Step 2. Step 1. 에서 생성된 객체를 var1이 참조
    
    >>> var2 = 10
    # Step 3. Step 2. 에서 생성된 객체를 var2이 참조
    
    >>> print(var1 is var2)
    True
    # Step 4. 두 변수가 동일 객체 참조
    
    >>> var3 = 20
    # Step 5. 메모리 공간에 정수 20의 값을 가진 객체 생성
    # Step 6. Step 5. 에서 생성된 객체를 var3이 참조
    
    >>> print(var1 is var3)
    False
    # Step 7. 두 객체가 서로 다른 변수를 참조하고 있음을 확인
    

    자료형

    Bool형

    • 참 거짓을 판단하는 표현식에 사용하는 자료형
    • 관계 연산자, 논리 연산자를 사용하는 표현식이 Bool 값 반환

    Bool 값을 반환하는 관계 연산

    >>> x, y = 10, 20
    
    >>> print(x)
    10
    
    >>> print(y)
    20
    
    >>> print(x < y) # x(10) < y(20)
    True
    

    Bool 값을 반환하는 논리 연산

    >>> under18 = False
    >>> male = True
    
    >>> print(under18 and male)
    False
    # False와 True에 대한 논리 연산자 and의 연산 결과 : False
    

    조건문에 사용되는 Bool 값

    >>> under18 = False
    >>> male = True
    
    >>> if under 18:
          print("미성년자입니다.")
        else:
          print("성인입니다.")
    
    성인입니다.
    

    Tuple

    • () 안에 서로 다른 자료형의 값을 콤마(,)로 구분해 하나 이상 저장할 수 있는 컬렉션 자료형
    • 0부터 시작하는 인덱스를 이용해 접근 가능
    • 한 번 저장된 항목은 변경할 수 없음
    >>> student = ("홍길동", 20)
    >>> student = "홍길동", 20  # 위의 코드와 동일
    
    >>> print(student)
    ('홍길동', 20)
    
    # index 활용
    >>> print(student[0])
    '홍길동'
    
    >>> print(student[1])
    20
    
    
    # Error 확인
    >>> print(student[2])
    Traceback...
    IndexError: tuple index out of range
    # student tuple은 2개의 원소를 가지므로
    # 유효하지 않은 인덱스 범위를 넣으면 IndexError 발생
    
    
    

    IndexError

    student tuple은 2개의 원소를 가지므로 유효하지 않은 인덱스 범위를 넣으면 IndexError 발생

    >>> student = ("홍길동", 20)
    
    >>> print(student[2])
    
    Traceback...
    IndexError: tuple index out of range
    

    TypeError

    tuple은 한 번 저장된 항목의 값을 변경할 수 없기 때문에 이미 유효한 인덱스에 새 데이터를 넣으려 하면 TypeError 발생

    >>> student = ('홍길동', 20)
    
    >>> student[1] = 21
    
    Traceback...
    TypeError: 'tuple' object does not support item assignment
    
    
    >>> student = ('임꺽정', 30)
    >>> print(student)
    ('임꺽정', 30)
    
    # student는 변수이므로 새로운 tuple 객체를 참조하는 것은 문제가 되지 않음.
    

    List

    • [] 안에 서로 다른 자료형의 값을 콤마(,)로 구분해 하나 이상 저장할 수 있는 컬렉션 자료형
    • 0부터 시작하는 인덱스를 이용해 접근
    • 한 번 저장된 항목이라도 변경할 수 있음
    >>> student = ["홍길동", 20]
    >>> print(student)
    ['홍길동', 20]
    
    >>> print(student[0])
    '홍길동'
    # index를 이용해 개별 항목에 접근 가능
    
    
    >>> print(student[2])
    IndexError 발생
    
    
    >>> student[1] = 21
    >>> print(student)
    ['홍길동', 21]  # tuple과 달리 list는 항목을 수정할 수 있음.
    
    
    >>> student = ["임꺽정", 30]
    >>> print(student)
    ['임꺽정', 30]  # student 변수가 새로운 list 객체 참조 가능
    

    Set

    • {} 안에 서로 다른 자료형의 값을 콤마(,)로 구분해 하나 이상 저장할 수 있는 컬렉션 자료형
    • 순서의 개념이 존재하지 않아 인덱스를 사용할 수 없음
    • 데이터 항목의 중복 허용 X
    >>> student = {"홍길동", "이순신", "강감찬", "홍길동"}
    
    >>> print(student)
    {"홍길동", "이순신", "강감찬"}  # 중복된 홍길동 제거
    
    >>> print(len(student))
    3 # student set 내의 항목의 개수
    
    
    >>> student[0]
    Traceback...
    TypeError: 'set' object does not support indexing
    # set은 index를 사용할 수 없다는 TypeError 발생
    
    • 항목 추가
    >>> student = {"홍길동", "이순신", "강감찬", "홍길동"}
    >>> student |= {"을지문덕", "이순신"}
    # 집합의 개념을 가지고 있는 자료구조
    # 합집합 연산자 제공
    
    >>> print(student)
    {'을지문덕', '홍길동', '이순신', '강감찬'}
    
    
    • 새로운 set 정의
    >>> student = {'을지문덕', '홍길동', '이순신', '강감찬'}
    >>> student = {"임꺽정", 30}  # student 변수 재정의
    
    >>> student
    {'임꺽정', 30}
    

    Dictionary

    • {} 안에 키:값 형식의 항목을 콤마(,)로 구분해 하나 이상 저장할 수 있는 컬렉션 자료형 {키:값}
    • 키를 이용해 값을 읽어올 수 있음
    • 항목을 추가할 때
      • 동일키가 없으면 : 새로운 항목 추가
      • 동일키가 있으면 : 저장된 항목 변경
    • 키는 일반적으로 문자열이나 정수형을 사용
    >>> dogs = {1: "골든리트리버", 2: "진돗개", 3:"보더콜리"}
    
    >>> dogs
    {1: '골든리트리버', 2: '진돗개', 3:'보더콜리'}
    
    
    # 키를 이용하여 값 출력
    >>> dogs[1]
    골든리트리버
    
    >>> dogs[2]
    진돗개
    
    
    # KeyError
    >>> dogs[4]
    Traceback...
    KeyError: 4 # 존재하지 않는 Key 4에 의해 문제 발생
    
    • 특정 Key의 값 변경
    >>> dogs = {1: "골든리트리버", 2: "진돗개", 3:"보더콜리"}
    >>> dogs[2] = "레브라도리트리버"
    
    >>> dogs
    {1: '골든리트리버', 2: '레브라도리트리버', 3:'보더콜리'}
    
    • 새로운 Key와 Value 추가
    >>> dogs = {1: "골든리트리버", 2: "진돗개", 3:"보더콜리"}
    >>> dogs["4"] = "알레스카말라뮤트"
    
    >>> dogs
    {1: '골든리트리버', 2: '레브라도리트리버', 3:'보더콜리', '4': '알레스카말라뮤트'}
    
    # 새로운 "4"번 Key에 '알레스카말라뮤트' 값 추가
    # 정수 4와 문자열 "4"는 자료형이 다르다.
    
    >>> dogs[4]
    Traceback...
    KeyError: 4  # 숫자형 4 Key가 없어 KeyError 발생
    
    >>> dogs["4"]
    알레스카말라뮤트
    

    None 객체

    • Null 상태를 표현하는 객체
    • Null : 객체가 존재하지 않는 상태

    주의🙄 Python에서는 최초 변수를 선언할 때 초기화하지 않으면 에러 발생

    초기화 값을 저장하지 않을 때에는 None 객체를 저장하자

    >>> obj
    Traceback...
    NameError: name 'obj' is not defined
    # 메모리 공간에서 obj라는 변수를 찾지 못해 발생하는 Error
    
    # obj에 어떠한 값도 저장하고 싶지 않을 경우 None 객체 저장
    >>> obj = None
    
    >>> print(obj is None)  # 어떤 것에 여부를 검사(권장)
    True
    
    >>> print(obj == None)  # 좌우변이 동일한 값인지를 검사
    True
    
    • if문인 경우 : False로 평가된다.
    >>> obj = None
    
    >>> if obj:
          print("obj는 None이 아닙니다.")
        else:
          print("obj는 None입니다.")
    
    obj는 None입니다.
    

    변수의 생성 및 제거

    • 변수는 기본적으로 한 번에 하나씩 생성
    • 그 이상의 변수를 한꺼번에 생성하기도 함
    >>> x = y = 10
    
    >>> print(x)
    10
    
    >>> print(y)
    10
    
    >>> x, y = (10, 20)
    >>> print(x, y)
    10 20
    
    >>> print((x, y))
    (10, 20)
    
    
    >>> x, y = 10, 20
    >>> print(x, y)
    10 20
    
    >>> print((x, y))
    (10, 20)
    
    • 변수의 값끼리 쉽게 교체 가능
    >>> x, y = 10, 20
    >>> x, y = y, x  # 두 변수끼리 값 교체
    
    >>> x
    20
    
    >>> y
    10
    

    변수의 제거

    • GC(Garbage Collector)에 의해 객체가 사용한 메모리 공간 자동관리
    • 개발자가 메모리 관리를 직접할 필요가 없다.
    • 사용하지 않는 변수를 직접 제거할 경우 del() 함수 사용
    >>> x = 10
    >>> y = 20
    
    >>> del(x)
    >>> del(y)
    
    >>> print(x)
    Traceback...
    NameError: name 'x' is not defined
    # 변수 x가 제거되어 NameError 발생
    
    profile

    FE Developer 박승훈

    노력하는 자는 즐기는 자를 이길 수 없다