본문 바로가기
개발일지/멀티캠퍼스 프로젝트형 AI 국비지원

20220.01.21 Day-5 멀티캠퍼스 광탈 시작

by 다니엘의 개발 이야기 2022. 1. 21.
320x100

예상했던대로 나의 한계는 4일치였던 것같다.

오늘부터 한계가 시작되었다.

 

이해가 되지 않을 정도다.

하지만 "도무지"이해가 안될 정도는 아니다.

다행히 아직까지는.

그리고 남아있는 수강시간은 105일.

충분히 많이 들었고, 충분한 시간이 남아있다.

포함되지 않은 남는 시간을 활용한다면 충분히 반 에서 1등도 가능할것이다.

일단의 목표는 반 1등!

하지만 현실은 약 29명중 21등쯤은 되는것같다.

"지금은"

 

오늘핵심강의의 핵심은 내게는 2가지였다.

 

첫번째. global 변수

 

# mutable(가변의) vs. immutable (불변의)
# call-by-value, call-by-reference
#immutable (불변의)
    
def my_sum(tmp_number, tmp_list):
    tmp_number += 100 # mutable(가변의) # 100, 200, 300, 400
    tmp_list.append(100) #immutable (불변의) # 100, 100, 100, 100
    
data_x = 10
data_list = [10]

print(data_x, data_list) # 10 [10]
my_sum(data_x, data_list) # 함수호출
print(data_x, data_list)  # 10 [10, 100]
# 숫자, 문자 원래 데이터가 변형되지 않는다.
# 리스트, 인자로 넘기기 때문에 함수 내에서 활용이 가능하다. 형태가 변화하는게 가능하다.

 

# local variable & global variable
# scope (식별자를 찾을 수 있는 영역)


# memory 와 stack 의 영역이 다를때 실행이 안된다. 그는 아래와 같다.
# a = 100 # memory 영역에 존재

# def my_func(x):    # stack 안에서 실행
#     a = a+x        # a 와 my_func의 공간이 다르기 때문에 a를 찾을 수없다. 따라서 a 값이 없기 때문에 누적할 수 없다.
#     return a

# print(my_func(10)) # local variable 'a' referenced before assignment 에러가 뜬다.

# memory 와 stack 의 영역이 다를때 실행이 안된다. 때문에 찾아와서 쓸 수 있는 수식은 간단하다.

a = 100
def my_func(x):
    global a   # 여기에 global을 박아줘야한다.
    a = a+x
    return a

print(my_func(10))  # 110



######
# 이렇게 global keyword를 사용하면 외부 영역에 있는 변수를 사용할 수 있어요
# 이게 좋은 방법인가요? 안좋은 방법 입니다.
# 편한 방법이지만
# 얼켜있는 코드기 때문에 유지보수성이 안좋다. 뭐 하나가 고장나면 다 같이 고장난다.
# 유지보수성과 편리성은 반비례 관계다.

 

global 함수는

메모리값이였나? memory to stack 이였나 그값에 대하여 끌고 오기 위하여 쓰인 함수 개념이다.

==========================

두번째는 강사님이 직접적으로 말씀은 안해주셨지만

원리적으로 봤을때 위의 global 함수의 심화 버전인듯 한 class 강의였다.

 

# 1명의 학생 정보(이름, 학과, 학번, 성적)를 프로그램적으로 저장

student_name = "아이유"
student_dept = "철학과"
student_number = "20210122"   # 직접적인 수학적 연산이 수행되면 숫자
                             # 그렇지 않으면 문자. (편하다)
student_grade = 4.5

# 3명의 학생 정보를 프로그램적으로 저장
student_name = ["아이유","바나나","딸기","사과"]
student_dept = ["철학과","컴퓨터","영어영문","국어국문"]
student_number = ["20202211","20211023","20231052","19930322"]
student_grade = [3.5, 3.8, 3.8, 4.2]


################################

# User define class의 이름은 관용적 대문자로 시작.
class Student(object):
    
    # 특별한 함수를 하나 정의할 꺼예요! 이름이 정해져 있어요!
    def __init__(self, stu_name, stu_dept, stu_number, stu_grade): # self는 이미 하는일과 의미가 정의되어있다. 때문에 나머지 4개의 변수에 대해서 호출
        self.student_name = stu_name
        self.student_dept = stu_dept
        self.student_number = stu_number
        self.student_grade = stu_grade
        
stu1 = Student("아이유", "철학과", "20202211", 3.5)
stu2 = Student("바나나", "컴퓨터", "20211023", 3.8)
stu3 = Student("딸기", "영어영문", "20231052", 3.8)
stu4 = Student("사과", "국어국문", "19930322", 4.2)


print(stu1,stu2,stu3,stu4)

 

 

이거는 특이점이 정의 def 옆에 _를 2번 쓴다. 그리고 init 옆에도 2번쓰인다.

두번째 특이점은 self라는 영역은 이미 지정된 콜링값인것같다.

일종의 global 함수처럼 말이다.

 

아이고.. 대략 추측성으로 배워가고 적어가고 있지만

후에 다시 봤을때 이 추측이 맞을지, 틀릴지는 확신할 수 없다.

 

=========================

여담으로 맥북을 팔고 독일 여행비에 보태고,

더블모니터는 필요하기에 태블릿으로 쓸 것을 구했다.

이것저것 다 포함하니 385,000쯤 되는것같았다.

모델은 갤럭시탭s4 lte 64g 모델이고

 

내가 이렇게 갤럭시 제품을 이용하게 될줄이야....

암튼 앞일은 아무도 모른다.

 

300x250