파이썬의 주석 처리는 크게 두가지로 나눌 수 있습니다.

1. 주석 (#)

2. 독스트링, 'docstrings', (독스트링, 특수 주석)

 1. 일반 주석 (#)

일반 주석은 주석처리를 하고 싶은 코드의 시작 지점에 # (해시 기호)를 해서 주석 처리를 할 수 있습니다.

# 기호 와 같은 행에서 뒤에 오는 모든 요소는 주석으로 간주되며 인터프리터가 # 이후의 내용을 무시하고 다음 코드줄로 이동합니다.

주석은 다양한 목적으로 사용할 수 있는데,

1. 코드 블록 혹은 변수에 대한 정보 제공
2. 코드의 복잡하거나 모호한 부분 설명
3. 함수 또는 클래스의 동작 설명
4. 인수의 목적과 예상 반환값을 문서화
5. 개발자 메모 추가
6. 테스트, 혹은 디버깅 목적으로 일부를 일시적으로 비활성화 등이 있습니다.
(예를 들어 개발을 진행하려고 했다가 이번에는 하지 못하게 되는 일에 대한 코드를 삭제하지 않고 그냥 주석으로 처리하는 경우가 존재할 수 있습니다.)

나중에 그 프로그램을 누군가가 더 발전시켜서 사용할 수도 있고,
몇달 뒤에 내가 그 프로그램을 다시 쓸 일이 있어서 레거시 코드를 열었을 때 헤멜 시간을 줄여주는 아주 소중한 존재입니다.

 2. 독스트링, 'docstrings', (독스트링, 특수 주석)

독스트링은 아래와 같은 형태를 띕니다.

"""
a is left side, b is right side
"""

이런 식으로 쌍따옴표가 세개 있는(삼중 쌍따옴표) 사이에 여러줄의 주석을 넣을 수 있습니다.

이런 여러줄 주석에 있는 변수를 활용할 수도 있다는 점이 javascript 등에서 있는 여러줄 주석과의 차이점입니다.

javascript의 여러줄 주석은 인터프리터에서 인식되지 않으며 런타임 중에 액세스 할 수 없습니다.

반면 파이썬의 독스트링은 런타임 중에 액세스 할 수 있으며 객체의 __doc__ 속성을 통해 액세스 할 수 있습니다.

독스트링은 api 문서를 자동으로 생성하기 위해 Sphinx 와 같은 문서 생성 도구에서도 사용됩니다.

/** */ 와  """ """ 둘 다 여러줄을 주석화시킬 수 있고, 함수나 파일의 윗부분에서 변수 등에 대한 설명을 해준다는 공통점이 있으나 파이썬의 독스트링은 런타임 중에 액세스 할 수 있고 문서 생성 도구에서 사용할 수 있으므로 더 강력하다는 특징을 가지고 있습니다.

데이터 처리에는 파이썬이 유용해서 파이썬을 모듈화 시켜서 이용하려고 공부 중이다.

각설하고 본론으로 넘어가서

 

집에 돌아와서 프로젝트 불러오고... 경로 확인해 준 다음에 실행을 해줬는데??

되지 않는 것이다......... 어라?? 아까 회사 컴으로 세팅할 때는 잘만 되었는데??

 

혹시나 module에 문제가 있나 싶어 이렇게 pip install을 이용해서 사용해야하는 모듈 패키지 들을 다시 다운 받아보았는데,

Warning 문구가 떴다. 

저 엑셀 파일이 문제라면 회사에서도 돌아가지 않았어야 정상인데 이 문제에 대한 원인을 찾다가...

혹시나 해서 점검해본 파이썬의 버전이 달랐다.

회사에서 생성하고 모듈 임포트를 하고 작성한 프로젝트는 3.11 버전 기반이었고,

지금 파이썬 업그레이드 전 내 로컬 pc의 파이썬 버전은 3.10이었다... 

 

혹시나 해서 챗 GPT에도 물어보았는데

 

 

이런 식으로 답변해주었다. 결국은 버전의 문제라는걸 gpt도 인지하고 있었다. 실은 gpt 덕분에 크게 시간 낭비를 하지 않았다. 익숙하지 않은 언어를 학습할 때는 챗gpt가 정말 가뭄의 단비와도 같다...!!!

클래스는 개발자가 만들 수 있는 큰 틀이라고 볼 수 있고,

인스턴스는 그때그때 값을 바꿀 수 있는 것이라고 이해했다.

 

클래스를 선언해야지만 인스턴스를 선언할 수 있다.

 

큰 틀을 먼저 만들어야지만 그 내용물을 만들 수 있다는 뜻이다.

 

 

 

class 참치선물세트: #이것은 클래스를 선언한 것입니다.
    일반 = 0
    야채 = 0
    고추 = 0
    
    
참03호 = 참치선물세트() #이것은 인스턴스입니다.
# 위에서 선언한 참치선물세트가 클래스입니다.

참03호.일반 = 12
참03호.야채 = 3
참03호.고추 = 3

#인스턴스를 선언하기 전에는 반드시 클래스를 선언해야 합니다.
#그렇긴 하지만 반드시 첫번째 줄에서 클래스를 선언할 필요는 없습니다.


예시를 들면 이렇게 나올 수 있겠다.

 

클래스 선언과 인스턴스 선언에 대해서 그 순서를 잘 숙지하고 넘어가자.

# 파이썬 문법 / 주석
# - 주석에는 한줄 주석과 여러줄 주석이 있습니다
# 한줄 주석은 기호를
# #으로 씁니다
#
# 여러줄 주석은
'''
여러줄 주석입니다
여러줄 주석입니다
'''

'''
파이썬 변수 : 변수는 데이터 값을 저장하기 위한 컨테이너
- 많은 수여서 변수라고 얘기함
- 변수 선언에 대한 명령어는 없습니다
- 값을 할당하는 순간에 생성됩니다
- 알파벳에서 어떤걸 표기해도 상관없다
- 정의했던 변수값을 출력시키려하면 그 변수값을 써야 됩니다
- 문자열 변수에는 큰따옴표나 작은따옴표를 쓸 수 있다
- 변수에 대소문자를 구분한다
'''

a = 5
b = "geonha"
print(a)
print(b)

a = 4
A = 'Salley'
print(a)
print(A)
# 대소문자를 구분할때는 변수가 2개가 된다(대문자와 소문자는 다르다)

a = 10
a = "숫자10"
print(a)

# 2) 변수 - 여러 값 할당, 변수의 수가 값의 수와 일치하는지 확인
c, x, y, z = "Commit", "Orange", "Banana", "Cherry"
print(c)
print(x)
print(y)
print(z)

# 3) 여러 변수에 대한 하나의 값
# - 여러 변수에 동일한 값을 할당할 수 있습니다
x = y = z = "Orange"
print(x)
print(y)
print(z)

# 4) 변수로 추출
# - 목록, 튜폴등에 값모음이 있는 경우 값을 변수로 추출할 수 있다

fruits = ["사과", "바나나", "체리"] # 후르츠가 3가지 있음
x, y, z = fruits
print(x)
print(y)
print(z)

'''
print() 함수 = 변수를 출력하는데 사용해서 출력변수라 얘기합니다
쉼표로 구분된 여러 변수를 출력합니다
'''

x = '파이썬'
y = '리액트js'
z = 'vue js'
print(x, y, z)

# 연산자를 사용해서 여러 변수를 출력할 수 있습니다
x = '마이네임은 '
y = '이민재 '
z = '입니다!'
print(x + y + z)

# 숫자에 연산자를 쓰시면 그 결과 값이 출력됩니다
x = 5
y = 10
print(x + y)
print(x * y)
print(x - y)

# 스타일이 다른 변수에 대해서 쉼표로 구분
x = 5
y = 'hwang'
print(x, y)

# 4) 전역변수
# - 함수 외부에서 생성된 변수를 전역변수라 합니다
# - 함수 내부와 외부 모두에서 모든 사람이 사용할 수 있습니다
# 함수 = x와 y사이에서 x의 값이 정해지면 거기에 따라 y 값이 정해지는 관계


x = '스타벅스' # 전역 변수의 역할

def myStar():
    print("아메리카노가 제일 에스프레소와 가까운 곳은 " + x)

myStar()

# 전역변수와 지역변수를 같이 쓸 경우
x = '어썸'

def myfunc():
    global x
    x = '판타스틱'

myfunc()

print("파이썬은 " + x + "싱글페이지 입니다")


x = '이디야' # 전역 변수의 역할

def myStar():
    x = '스타벅스'
    print("아메리카노가 제일 에스프레소와 가까운 곳은 " + x)
myStar()

print('그 다음은 ' + x)

'''
파이썬의 데이터 유형
1) 내장 데이터의 유형
변수는 다른 유형의 데이터를 저장할 수 있으며
다른 유형은 다른 작업을 수행할 수 있습니다\
1-1) 텍스트 유형 : str
1-2) 숫자 유형 : int, float, complex
1-3) 시퀀스 유형 : list, tuple, range
1-4) 매핑 유형 : dict
1-5) 세트 유형 : set,frozenset
1-6) 부울 유형 : bool
1-7) 바이너리 유형 : bytes, bytearray, memoryview
1-8) 없음 유형 : NoneType
'''
# 데이터 유형 가져오기
# type() 함수를 사용하여 모든 객체의 데이터 유형을 가져올 수 있다...
'''
자바스크립트는 객체지향 언어이다
- 기본타입(원시데이터)과 참조타입(객체)으로 나눌 수 있음
- 원시값을 제외한 모든걸 객체라고 합니다
(원시값 : 숫자, 문자열, null, undefined, 불리언)
'''

q = 5
print(type(q))

#문자열
x = "문자열"
print(type(x))

y = 20.5
z = 1j
v = ["사과", "체리"]
w = ("사과", "체리")

print(type(y), type(z), type(v), type(w))

'''
2) 특정 데이터 유형 설정 : 데이터 유형을 지정하려면 다음 생성자 함수를 사용할 수 있습니다.

'''
x = str("hello world")
print(x)
print(type(x))

# 3) 파이썬 숫자 : int, float, complex
x = 1
y = 2.8
z = 1j
v = 123456778900
b = -3255522
# int 또는 정수는 길이가 무제한인 양수 또는 음수 정수

# float : 부동소수점 숫자를 의미(양수, 음수, 거듭제곱도)
# ex)
x = 1.10
y = 1.0
z = -35.59
q = 35e3
w = 12E4
r = -87.7e100

print(type(x), type(y), type(z), type(q), type(w), type(r))

# 난수 : 파이썬에서는 난수를 만들어내는 함수가 따로 존재하지 않지만
# 난수를 만드는데 사용할 수 있는 random() 모듈이 있습니다

import random #import 선언되는 순간 모듈을 불러옴
# 1~9까지의 난수를 표시합니다
print(random.randrange(1,10))

'''
파이썬의 문자열
1) 문자열은 작은 따옴표나 큰 따옴표로 둘러쌓여 있어야 합니다
2) 변수에 문자열을 할당 a = '문자열'
3) 파이썬 장점 html의 pre 태그처럼 쓴대로 나옵니다
4) 문자열을 배열로 표시할 수 있다
5) 자바스크립트는 1부터 10을 갯수로 표현할 때
6) 문자열은 배열이기 때문에 루프를 사용하여 문자열의 문자를 반복할 수 있다
for 라고 되어 있는 반복문을 사용함
Hello, World!
01234567891011
7) len() 함수를 사용하여 문자열의 길이는 확인할 수 있다 문자열의 길이는 = 갯수
8) 문자열을 확인 (in)
9) if 구문을 활용해서 다음 구문을 출력할 수 있다
10) 슬라이싱 구문을 사용하여 문자 범위를 리턴할 수 있다
11) 네거티브 인덱싱 (음수 인덱스를 사용하여 문자열 끝에서 슬라이스를 시작)
"Hello, world!"
(b[:5])
(b[5:])
12) 문자열 수정
upper() : 대문자로 문자열 리턴
lower() : 소문자로 문자열 리턴
strip() : 시작 또는 끝에서의 공백을 제거
replace() : 이미 써져 있는 문자열을 다른 문자열로 치환해주는
split() : 구분 기호(,)를 찾으면 문자열을 하위 문자열로 분할합니다
13) 문자열 연결 : + 연산자를 사용해서 연결
14) 문자열과 숫자를 결합
'''
q = """lorem
    1
    1
    1"""
print(q)

w = "안녕하세요"#[0][1][2][3][4]
print(w[0])

# 반복문
for t in "반복문 반복문":
    print(t)

# 문자열의 길이
y = "문자열의 길이"
print(len(y))

# 문자열 확인
confirm = "the best things in life are free!"
print("free" in confirm)

# if 구문 활용(가정법)
txt = "이 문장에 원하는 이라는 단어가 있나요?"
if "원하는는" in txt:
    print("맞아요 그런 단어가 있네요")

# 2에서 5까지의 문자 가져오기
u = '안녕하세요!'
print(u[2:5])

u = '안녕하세요!'
print(u[2:])

h = "Hello, world!"
print(h[-5:-2])

# 대문자로
i = "hello, world!"
print(i.upper())

# 소뮨자로
o = "HELLO, WORLD!"
print(o.lower())

# 공백제거 : 앞뒤에 있는 공백을 제거
p = "   공백 입니다   "
print(p.strip())

# 문자열 바꾸기 replace()
s = '트리플에이치 HHH'
print(s.replace('H','A'))
print(s.replace('에이치','코이츠'))
print(s.replace('트리플에이치', '빈스맥마흔'))

# 분할 문자열
d = "분할, 결합, 해체"
print(d.split("/"))

# 문자열 연결
f = '벌써'
g = '마지막'
h = '시간 입니다'
j = f + " " + g + " " + h
print(j)

# # 문자열과 숫자를 결합
# age = "31"
# txt = "저는 본명 이민재 입니다, 제 나이는 " + age
# print(txt)

age = 31
txt = "저는 가명 이건하 입니다, 제 나이는 {} 입니다"
print(txt.format(age))

# 문자열 메서드
# capitalize():첫번째 문자를 대문자로
txt = "abcdefg hyjklmnop qrstuv wxyz"
z = txt.capitalize()
print(z)

# casefold() : 문자열을 소문자로 만들어준다
txt = "Abcdefg Hyjklmnop Grstuv Wxyz"
z = txt.casefold()
print(z)

txt = "KATTO BING DA YUMA"
YM = txt.casefold()
print(YM)

#center() : 괄호에 숫자를 적은 만큼 공백이 생긴다
txt = "공백"
x = txt.center(30)
print(x)

mozzirong = "모찌롱"
X_KIRA = mozzirong.center(10)
print(X_KIRA)

+ Recent posts