728x90

스택과 큐(stack & Queue with list)

스택(stack)

나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조 - Last In First Out(LIFO)

data의 입력을 Push, 출력은 pop이라고 함.

ex) 4,10,15를 순서대로 입력 후 15, 10 순으로 출력

‘부스트코스 - AI 기본 다지기’의 강의 자료 중

list를 사용하여 스택구조 구현 가능 - 입력은 append(), 출력은 pop()을 사용

list = [1,2,3,4]
a.append(10) # 10 입력
a.append(11) # 11 입력
a.pop() # 11 출력
a.pop() # 10 출력

 

큐(Queue)

먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리구조 - First In First Out(FIFO)

Stack과는 반대되는 개념

ex) 기존 5,8,9,7에서 먼저 들어간 7을 출력, 3과 0을 입력, 다시 9와 8을 출력, 7을 입력

https://stackoverflow.com/questions/63113107/queue-enqueue-vs-dequeue-fill-out-table-shift-needed

list를 사용하여 Queue구조 재현가능 - 입력은 append(), 출력은 pop(0)을 사용

list = [1,2,3,4]
a.append(10) # 10 입력
a.append(11) # 11 입력
a.pop(0) # 1 출력
a.pop(0) # 2 출력

 

튜플과 집합(tuple & set)

튜플(tuple)

값의 변경이 불가능한 리스트(list) - 선언 시 [ ]가 아니라 ( )를 사용한다.

리스트의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용가능

 💡 왜 list가 아닌 tuple을 사용할까?
      프로그램을 작동하는 동안 변경되지 않은 데이터의 저장을 위해서. 변경이 되면 안되는 고유번호(학번, 주민번호, 이름) 등
      함수의 반환 값등 사용자의 실수에 의한 에러를 사전에 방지
      Tips

>>> t = (1) # 일반 정수로 인식
1
>>> t = (1, ) # 튜플로 인식
(1,) # 값이 하나인 Tuple은 반드시 ","를 사용해야함.

 

 

집합(Set)

수학의 집합의 개념과 유사함.

값을 순서없이 저장 - 중복을 허용하지 않는 자료형, set() 객체 선언을 이용하여 객체 생성

ex) set 사용의 예시

>>> s = set([1,2,5,5,2,5,3,3,4]) # s = {1,2,5,5,2,5,3,3,4}도 사용가능
>>> s
{1,2,3,4,5}
>>> s.add(1) # 1을 추가해도 중복으로 추가x
>>> s
{1,2,3,4,5}
>>> s.remove(1) # 1 삭제
{2,3,4,5}
>>> s.update([1,7,8,9]) # 1,7,8,9 추가
>>> s
{1,2,3,4,5,7,8,9}
>>> s.discard(3) # 3 삭제
>>> s
{1,2,4,5,7,8,9}
>>> s.clear() # 모든 원소 지우기
>>> s
set()

참고) 수학에서 사용하는 집합연산 가능 ‘Set’관련 method는 수학 관계 함수 의 Set부분 참고

 

사전(Dictionary)

사전(dict)

데이터를 저장 할 때 구분할 수 있는 값(key 또는 Identifier라고 함)을 함께 저장

key 값을 활용하여, 데이터 값(Value)를 관리함

key와 value를 매칭하여 key로 value를 검색 (타언어에서는 Hash Table이라는 용어를 사용)

{key1:value1, key2:value2, key3:value3, … }

ex) 헤드라인을 key로 하고 value를 관리한다고 했을 때,

data = {"학번" : 20150230, "이름" : "홍길동", "생년월일" : "1995-04-03",\\
 "주소" : "서울시 동대문구"}

>>> data["학번"] # "학번" 값 호출
20150230
>>> data["학번"] = 20150909 # "학번"의 값 새로 입력
>>> data["학번"] # "학번" 값 호출
20150909

Tips. items()를 활용하면 key와 value가 언패킹을 할 수 있음.

korea_city_num = {"서울" : "02", "경기" : "031", "인천" : "032"}
for a, b in korea_city_num.items():
    print(a, b)

참고) 사전 관련 함수는 자료형 관련 함수 의 Dictionary 부분 참조

Collection 모듈

list, Tuple, Dict에 대한 python Built-in 확장 자료 구조(모듈)

편의성, 실행 효율 등을 사용자에게 제공

 

deque

stack과 queue를 지원하는 모듈 - list에 비해 효율적인 자료 저장방식을 지원함

from collections import deque

deque_list = deque()
for i in range(5):
    deque_list.append(i)
print(deque_list) # deque([0, 1, 2, 3, 4])
deque_list.appendleft(10)
print(deque_list) # deque([10, 0, 1, 2, 3, 4])

rotate, reverse 등 Linked List의 특성을 지원. (여기서부터는 아직 제대로 사용해 보지 못해 이해가 어려움)

기존 list의 함수를 모두 지원함

deque는 기존 list 보다 효율적인 자료구조를 제공

효율적 메모리 구조로 처리속도 향상

 

Counter

Sequence type의 data element들의 갯수를 dict형태로 반환

ex) red, blue, green의 갯수를 세고 저장

cnt = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue']) # "ans" 문자열도 됨
cnt # Counter({'blue': 3, 'red': 2, 'green': 1})

set의 연산을 지원함. (합집합 ⇒ 각 element의 합, 교집합 ⇒ 공통되는 갯수 반환, 차집합 ⇒ 빼기 등)

 

OrderedDict

dict와 달리, 데이터를 입력한 순서대로 dict를 반환함. (but! python 3.6부터는 일반 dict도 입력한 순서를 보장)

dict type의 값을 value 또는 key 값으로 정렬할 때 사용가능

d = {"x":100,"y":200,"z":300,"l":500}
for k, v in OrderedDict(sorted(d.items(), key= lambda t: t[0])).items():
	print(k, v)
# l : 500, x : 100, y : 200, z : 300
for k, v in OrderedDict(sorted(d.items(), key= lambda t: t[1])).items():
	print(k, v)
# x : 100, y : 200, z : 300, l : 500

 

defaultdict

dict type의 값에 기본값을 지정, 신규값 생성시 사용하는 방법

ex) 초기값을 빈 list로 하는 defaultdict 생성하여 key, value값을 입력하는 기본 예시

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)

sorted(d.items())
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

 

namedtuple

Tuple 형태로 Data 구조체를 저장하는 방법

저장되는 data의 variable을 사전에 지정해서 저장함.

# Basic example
Point = namedtuple('Point', ['x', 'y'])
p = Point(11, y=22)     # 위치 또는 키워드를 이용하여 값 입력
p[0] + p[1]             # 일반적인 튜플 (11, 22)과 같이 인덱싱 할 수 있음.
33
x, y = p                # 언팩킹이 가능함
x, y
(11, 22)
p.x + p.y               # 필드이름으로 호출 가능
33
p                       # name=value 형태로 읽기 가능
Point(x=11, y=22)
728x90

'개발자 공부' 카테고리의 다른 글

Python Object Oriented Programming  (1) 2023.05.17
python 스타일 코드  (0) 2023.05.16
Function 2  (0) 2023.05.11
String(문자열)  (0) 2023.05.10
Console 및 입출력  (0) 2023.05.09
728x90

Call by Object Reference

python의 함수 호출 방식은 객체의 주소가 함수로 전달되는 방식이다.

전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나, 새로운 객체를 만들경우 호출자에게 영향을 주지 않는다.

ex) 전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나, 새로운 객체를 만들경우에는 호출자에게 영향을 주지 않음.

def spam(eggs):
    eggs.append(1) # 기존 객체의 주소값에 [1] 추가
    eggs = [2,3] # 새로운 객체 생성

ham = [0]
spam(ham)
print(ham)
[0,1]

 

def swap_value(x,y):
    temp=x
	  x = y
    y = temp

def swap_offset(offset_x,offset_y):
    temp = a[offset_x]
    a[offset_x] = a[offset_y]
    a[offset_y] = temp

def swap_reference(list, offset_x, offset_y):
    temp = list[offset_x]
    list[offset_x] = list[offset_y]
    list[offset_y] = temp

# list 'a'의 값이 어떤 함수를 사용했을 때 바뀔까?

a = [1,2,3,4,5]
swap_value(a[1],a[2])
print(a)              # [1,2,3,4,5]
a = [1,2,3,4,5]
swap_offset(1,2)
print(a)              # [1,3,2,4,5]
a = [1,2,3,4,5]
swap_reference(a,1,2)
print(a)              # [1,3,2,4,5]

위 코드의 결과에서 swap_offset과 swap_reference를 사용했을 때 list ‘a’가 바뀌었다.

swap_offset은 변경이 안 될줄 알았으나, 이전 spam과 다른점은 전역변수 자체를 직접 변경했기 때문이다.

swap_reference는 ‘a’의 주소를 받아서 값을 변경한다.

 

변수의 범위

  • 지역변수(local variable) : 함수 내에서만 사용
  • 전역변수(global variable) : 프로그램 전체에서 사용
def test(t):
    print(x)
    t= 20
    print("In function :", t)

x = 10
test(x)         # 10\\nIn function : 20 
print(t)        # 오류 발생

위에 사용된 x,t 중 x를 전역변수, t를 지역변수라고 한다.

def test(t):
    t= 20
    print("In function :", t)

x = 10
print("before :", x)       # In function : 10
test(x)                    # In function : 20
print("after :", x)        # In function : 10

첫번째 spam코드와 유사하게 함수 내부에서 t에 새로운 객체를 넣더라도 x가 변경되지 않음.

def f():
    s = "Hello"
    print(s)

s = "Hi"
f()      # Hello
print(s) # Hi

지역 변수는 함수내에서만 사용되므로, 전역변수와 같은 이름을 선언하더라도 새로운 지역변수가 생긴다.

하지만, 함수내에서 ‘global’키워드를 사용할 경우 전역변수를 지칭하는 것이므로, 위의 코드의 함수 내 s를 global s로 변경하면 “Hello”가 2번 출력된다.

 

재귀함수 (어렵다;;)

  • 자기자신을 호출하는 함수
  • 점화식과 같은 재귀적 수학모형을 표현할 때 사용
  • 재귀 종료 조건 존재, 종료 조건까지 함수 호출 반복
def factorial(n):
    if n == 1:
         return 1
    else:
        return n + factorial(n-1)

print(factorial(3)) # 6.  3 + 2 + 1이 된다.

 

function type hints

파이썬의 가장 큰 특징인 dynamic typing으로 인해 처음 함수를 사용하는 사용자가 interface를 알기 어렵다는 단점이 있다.(실제로 이런 저런 라이브러리를 사용하다보면 어떤 함수의 arg가 어떤 자료형을 요구하는지, return은 어떤걸로 하는지 설명이 없다면 알기 어렵다… 😅)

python 3.5버전 이후로는 PEP 484에 기반하여 type hints 기능 제공한다고 한다.

# 힌트의 표기
def function(var_name:var_type) -> return_type:
    pass
# EX
def function_ex(name : str) -> str:
    retrun f"{name}"
  • var_name : argument의 이름
  • var_type : 입력해야하는 자료형을 표기
  • return_type : 함수의 return 값의 자료형을 표기

 

Docstring

python 함수에 대한 상세 스펙을 사전에 작성하여 함수 사용자의 이해도를 높여준다.

def function();
    """ docstring의 영역을 따옴표 3개로 표기해준다."""
   pass

 

이후 강의 내용에서는 함수는 어떤때 사용되는지(반복적이고 복잡한 것을 간단하게!), 함수를 만들 때는 어떻게 만드는 것이 좋은지 서술하고 있다. 조언을 보고 싶다면 강의를 수강해보는 것도 좋을 것 같다.

728x90

'개발자 공부' 카테고리의 다른 글

python 스타일 코드  (0) 2023.05.16
data 구조 및 종류  (2) 2023.05.16
String(문자열)  (0) 2023.05.10
Console 및 입출력  (0) 2023.05.09
기본 자료형 연산자  (0) 2023.05.08
728x90

String(문자열)

string은 1byte크기로 한 글자씩 메모리 공간이 할당되고, 시퀀스 자료형으로 data를 메모리에 저장.

참고) 각 타입별로 메모리 공간을 항당 받은 크기가 다름

Maximum value for long integer

강사님의 친철한 링크

문자열 특징

  • indexing

문자열 각 character마다 주소를 가지며, list와 같은 형태로 데이터를 처리함.

또한, list와 마찬가지로 슬라이싱이 가능하다.

ex) “abcde”의 문자열이 있을 때, [0]은 “a”, [-1]은 “e”이고 [1:3]은 “bc”이다.

text = 'Artificial Intelligence and Machine Learning'

text[0:6]
>> 'Artifi'
text[-9]
>> ' '
text[-9:]
>> ' Learning'
text[::2]
>> 'Atfca nelgneadMcieLann'
text[::-1]
'gninraeL enihcaM dna ecnegilletnI laicifitrA'
  • +, -, * 연산과 in 등 사용가능
  • \, \n, \t, \b, \e, \r 등 특수문자 사용가능
  • 줄바꿈을 포함한 많은 양의 문자열을 입력할 때는 “”” “””(따옴표 3개)를 사용한다.
  • raw string : r””으로 사용하며 특수문자(\n 등)을 그대로 표기함

 

※ 아래 링크는 강의에서 알려줬던 함수들을 개인적으로 사용하기 위해서 따로 정리해 놓은 페이지이다.

 

문자열 함수

len() : 문자열의 문자 개수를 반환

square-numeric-c53.notion.site

 

Yesterday 노래 가사 중 yesterday가 몇 번나오는지 세는 프로그램을 작성했다.

with open('yesterday.txt', encoding='cp949') as yes:
    
    yesterday_lyric = ""
    while True:
        line = yes.readline()
        yesterday_lyric += line

        if not line:
            break

yesterday_count = yesterday_lyric.count('Yesterday')
print('대소문자 구분:', yesterday_count)
lyric_lower = yesterday_lyric.lower()
yesterday_lower_count = lyric_lower.count('yesterday')
print('대소문자 미구분:', yesterday_lower_count)

결과는 대소문자 구분 시 3번, 미구분 시 9번이라는 결과를 도출 한다.

728x90

'개발자 공부' 카테고리의 다른 글

data 구조 및 종류  (2) 2023.05.16
Function 2  (0) 2023.05.11
Console 및 입출력  (0) 2023.05.09
기본 자료형 연산자  (0) 2023.05.08
Variable(변수)  (0) 2023.05.08
728x90

Console, 인터페이스

Console이란?

프로그램이나 시스템에서 발생하는 정보를 표시하고 디버깅하는데 사용하는 도구로 과거에는 화면표시장치, 키보드, 마우스로만 구성된 컴퓨터를 제어하기 위한 하드웨어였으나, 현재는 이를 모두 혼용하여 사용하고 있다.

  • GUI(Graphical User Interface) : 현재 우리가 가장 쉽게 접할 수 있는 인터페이스로 시각화된 인터페이스 체계, Windows, Mac OS 등 있음.
  • CLI(Command Line Interface) : 소위 cmd, terminal과 같은 text로 구성된 인터페이스 체계

CLI 입출력

python을 사용하여 CLI에서 입력과 출력을 받는 대표적인 함수는 input(), print()이다.

입력

input()함수를 사용하여 terminal, cmd 등에서 입력값을 받을 수 있다.

input()의 경우 어떤 text든 입력 받을 수 있으나, 모두 str자료형으로 반환한다.

숫자를 입력받고자 한다면 int() or float()를 사용하여야 한다.

# 숫자 입력 후 타입확인
a = input("숫자를 입력하시오 :") # 숫자를 입력하시오 : 라는 글과 함께 CLI에 프롬프트가 깜박임
# 숫자 3을 입력할 경우
print(a) # 3을 그대로 출력
print(type(a)) # <class str>을 출력
print(type(int(a))) # <class int>을 출력

출력

print()함수를 사용하여 terminal, cmd 등에 출력할 수 있다.

콤마를 사용하면 여러 문자를 연결할 수 있다. (,를 사용할 경우 space가 들어감)

“+”를 사용해서 여러 문자를 연결할 수 있다. (+를 사용할 경우 space가 들어가지 않음)

print("Hello World!", "Hi, World")
Hello World! Hi, World
print("Hello World!"+"Hi, World")
Hello World!Hi, World

print formatting

print()문은 기본 출력 외 형식을 지정할 수 있다.

  1. % string
  2. format
  3. f string

ex) 1 2 3 을 출력할 경우

print(1,2,3)
print("%d %d %d" % (1,2,3))
print("{} {} {}".format(1,2,3))
print(f"{1} {2} {3}")

% string

% string은 “%datatype”%(variable) 형태로 표현하며, 정수(%d), 실수(%f), 문자(%s), 문자 1개(%c), 8진수(%o), 16진수(%x), %자체(%%)이 있음.

또한, 실수표현 시 %2.3f(공백 2개와 소수점 3자리까지 표기)와 같이 표기가 가능하며, 실수 외에도 공백표현의 표현(%5s, 공백 5개 문자)이 가능하다.

num = 3; day = "third"
print("5월 %d일, May %s"%(num, day))

f = 5.3; a = "a"
print("%4.2f, %5s"%(f, a))
 5.30,    a

format

format은 “oooooo {} ooooo”.format(argument) 형태로 표현하며, {}내에 argument의 index를 지정하거나, 공백, 소수점 등을 표현할 수 있다.

정렬은 왼쪽정렬(<), 오른쪽정렬(>), 가운데정렬(^)이 있고, 채우기는 채우고자하는 문자를 정렬앞에 표기(*<)하면 된다. 그외 공백 및 소수점표현은 % string과 동일하다.

num = 3; day = "third"
print("5월 {}일, May {}".format(num, day))

f = 5.3; a = "a"
print("{0:.2f}, {1:5s}"%(f, a))
5.30,    a
print("{0:<5.2f}, {1:*^5s}"%(f, a))
5.30 , **a**

naming 방법도 있고, 아래와 같이 사용한다. print("5월 {}일, May {}".format(num, day))

f = 5.3; a = "a" print("{0:.2f}, {1:5s}"%(f, a)) 5.30, a print("{0:<5.2f}, {1:*^5s}"%(f, a)) 5.30 , a

print("5월 %(num)d일, May %(day)s"%{"num":3, "day":"third"))
print("5월 {num}일, May {day}".format(num=3, day="third"))
5월 3일, May third

f string

f string은 python 3.6이후, 앞서 사용한 2가지 형태보다 간결하게 사용할 수 있게 되었다.

num = 3; day = "third"
print(f"5월 {num:*<.1f}일, May {day:*<10}")
5월 3.0일, May third*****

 

728x90

'개발자 공부' 카테고리의 다른 글

data 구조 및 종류  (2) 2023.05.16
Function 2  (0) 2023.05.11
String(문자열)  (0) 2023.05.10
기본 자료형 연산자  (0) 2023.05.08
Variable(변수)  (0) 2023.05.08
728x90

Python에서 기본 자료형

Data Type - Python에서는 선언하는 순간 데이터 타입을 자동으로 판단 및 설정(동적언어, dynamic typing)

유형 유형 유형 설명 예시 선언형태

수치자료형 정수형 integer 양/음의 정수 1,2,3,…,100, -9 data = 1
수치자료형 실수형 float 소수점이 포함된 실수 10.2, -9.4 data =2.3
문자형 문자형 string 따옴표(’/”)에 들어가 있는 문자 abc, dfe, df39g data = ‘abc’
논리/불린 자료형   boolean 참 또는 거짓 True, False data = True
a = 1 #integer 자료형
a = 1.3 #float 자료형
a = "hello" #string 자료형
a = True #boolean 자료형

연산자

  1. 연산자 : + , -, /, * 등
  2. 피연산자 : 연산자에 의해 계산이 되는 것. ex) 3 + 2 에서 3,2는 피연산자

연산자 연산 예시 연산자 연산 예시

+ 더하기 1 + 1 = 2 - 빼기 1 - 1 = 0
/ 나누기 4 / 2 = 2 * 곱하기 2 * 3 = 6
** 제곱 3 ** 2 = 9 // 나눈 몫 9 // 2 = 4
% 나머지 7 % 4 = 3 += 증가연산 a = 1, a += 1 ⇒ a = 2
-= 감소연산 a = 1, a -= 1 ⇒ a = 0      

데이터형 관련 문법

  1. float() 와 int()를 이용하여 형변환 가능.
  2. float형 → int 변환 시 버림계산 | 엑셀 int함수 많이 사용했었다.
  3. 데이터형 변환 문자 → 숫자
    1) 문자형(string)으로 입력시 c + d 연산시 문자로 인식하여 12.6이 아닌 5.67이 됨.
    2) 문자형(string)으로 입력된 문자를 숫자로 변환가능
  4. 데이터형 변환 숫자 → 문자 : 숫자형(int, float)을 문자형으로 변경시 문자형으로 결합
  5. 숫자형과 문자형의 연산시 에러 발생(연산 불가)

list

데이터 집합, sequence 자료형

list_a = ["one", "two", 3, 4.0, True]

다양한 자료형을 담을 수 있음.

list의 특징

  • 인덱싱(indexing)
    • list에 있는 값은 주소(offset)을 가짐, 각 주소(offset)은 [ 0, 1, 2, 3, 4, ….]순으로 0부터 시작함.
    → 컴퓨터가 주소를 할당하는 방식으로 인해 0부터 시작하며 주소계산, 길이계산 등 계산이 유리
    • list_a[3] = 4.0
  • → 역순도 가능함, list_a = [-5, -4, -3, -2, -1]순으로 주소(offset)이 지정됨: 마지막이 -1로 시작.

 

  • 슬라이싱 : 리스트의 값을 일부 또는 전체를 잘라서 사용.
# list[start:end:step]의 명령어로 사용
list_a[:] = ["one", "two", 3, 4.0, True] #전체
list_a[2:] = [3, 4.0, True] #2번째부터 끝까지
list_a[:1] = ["one", "two"] #처음부터 1번째까지
list_a[1:4:2] = ["two", 4.0] #1번째부터 4번째까지 2개 계단씩
list_a[-3:] = [3, 4.0, True] #-3번째부터 끝까지
  • 리스트 연산 : 수정, 추가, 제거, 결합, 정렬 등 다양한 연산 가능
list_a[0] = 1 # 수정
list_a = [1, "two", 3, 4.0, True] #0번째 데이터만 수정
list_a.append(["one","two"]) # 추가
lsit_a = ["one", "two", 3, 4.0, True, ["one", "two"]] # 리스트에 추가, list안에 list포함 가능
list_a.remove("two") # 제거 del list_a[1] # 제거(메모리를 삭제하는 개념)
list_a = ["one", 3, 4.0, True] # "two"만 제거, 1번째 삭제
a = [1, 3, 4, 2] a.sort() # 오름차순 정렬
a = [1, 2, 3, 4] a.reverse() # 내림차순 정렬
a = [4, 3, 2, 1] list_a = ["one", 3, 4.0, True] # 정렬 불가능. string과 int, float 비교불가 에러
list_a.extend(["one", "two"]) # 병합
list_a + ["one", "two"]
list_a = ["one", "two", 3, 4.0, True, "one", "two"] # append와는 다름.
list_a.insert(0, "three") # 삽입
list_a = ["three", "one", "two", 3, 4.0, True] # x번째 자리에 추가, 0번째 자리에 추가

 

 

패킹과 언패킹

  • 패킹 : 한 변수에 여러개의 데이터를 넣는 것.
  • 언패킹 : 한 변수에 있는 여러 데이터를 나누는 것. 🎱 주의점: 나누는 데이터와 변수의 개수가 일치해야함.
t = [1, 2, 3] # 패킹
a, b, c = t # 언패킹, t의 1,2,3을 각각 a,b,c에 넣음.
print(a, b, c, t)
1 2 3 [1, 2, 3]

 

  • 이차원 리스트 : 리스트 안에 리스트를 만들어 행렬 생성중간고사 A B C
    국어점수 89 90 100
    수학점수 70 23 69
    영어점수 100 99 38
    kor_score = [89, 90, 100] # 국어점수
    mat_score = [70, 23, 69] # 수학점수
    eng_score = [100, 99, 38] # 영어점수
    midterm_score = [kor_score, mat_score, eng_score]
        #리스트 2개를 결합하여 '중간고사' 표생성
    midterm_score[0][1]. # 첫[]은 행 두번째[]은 열
    90
728x90

'개발자 공부' 카테고리의 다른 글

data 구조 및 종류  (2) 2023.05.16
Function 2  (0) 2023.05.11
String(문자열)  (0) 2023.05.10
Console 및 입출력  (0) 2023.05.09
Variable(변수)  (0) 2023.05.08
728x90

■ Variable(변수) : 데이터를 저장하기 위한 메모리 공간의 프로그래밍상 이름

m = 1

변수 m에 1이라는 값을 넣으라는 의미

변수는 메모리 주소를 가지고 있고 변수에 들어가는 값은 메모리 주소에 할당됨.

즉, 위와 같은 코드에서 m이라는 ‘메모리 주소’에 1이라는 값을 저장하는 것.

💡 컴퓨터의 구조는 기본적으로 폰 노이만 아키텍쳐에서 시작.(메모리와 CPU, 입력, 출력을 하는 방식)
폰 노이만 구조와 하버드 구조의 폰 노이만 아키텍쳐 참고.

 

■ 변수의 작명방법(주로)

알파벳(a,b,…,A,B,…)과 숫자(1,2,3,…), 언더스코어(_)로 선언 가능하다.

또한, 선언 시에는 그 변수가 어떤 값을 저장하고 있는지 또는 어떤 기능을 하는지 등 직관적으로 알 수 있도록 의미를 가지는 단어의 조합으로 표기하는 것이 좋다.

ex) 학번을 변수로 설정한다고 했을 때,

student_num = "00_0000" # 앞의 2개 숫자는 학년, 뒤의 숫자는 학생번호

 

728x90

'개발자 공부' 카테고리의 다른 글

data 구조 및 종류  (2) 2023.05.16
Function 2  (0) 2023.05.11
String(문자열)  (0) 2023.05.10
Console 및 입출력  (0) 2023.05.09
기본 자료형 연산자  (0) 2023.05.08

+ Recent posts