반응형
  • 인스턴스 속성
    • 객체마다 다르게 갖고 있는 속성
    • 코드에서 self 로 표기된 속성들이 인스턴스 속성이다.
  • 클래스 속성
    • 모든 객체가 공유하는 속성
    • count 가 클래스 속성
    • 접근시에는 클래스이름.속성 으로 접근 (ex : Unit.count)
  • 비공개 속성
    • 클래스 안에서만 접근 가능한 속성
    • __hidden 이 비공개 속성이다.
    • 외부에서 변경시 Unit.__hidden 으로는 접근이 불가능 하다
    • 네이밍 맹글링에 의해서 접근은 가능하다 (unit1._Unit__hidden)
class Unit:
  count = 0
  def __init__(self, name, weight, height, hidden):
    self.name=name
    self.weight=weight
    self.height=height
    self.__hidden=hidden
    Unit.count +=1
    print(f"{self.name} Unit 생성")
  
  def __str__(self):
    return f"name={self.name} weight={self.weight} height={self.height}"


unit1 = Unit("Unit1", 20, 30, "magic")
unit2 = Unit("Unit2", 100, 200, "power")

print(unit1)
print(unit2)
print(Unit.count)
print(unit1._Unit__hidden)

# OUTPUT
Unit1 Unit 생성
Unit2 Unit 생성
name=Unit1 weight=20 height=30
name=Unit2 weight=100 height=200
2
magic

 

728x90
반응형
반응형
  • map 함수
    • map(함수, 순서가 있는 자료형)
    • map 의 결과는 map object 이기 때문에 사용하기 편한 list 형태로 변환한다.
def remove_blank(x):
  return x.strip()

items=[' mouse', ' monitor ']

items=list(map(remove_blank, items))

print(items)

# output
# ['mouse', 'monitor']

# 람다함수로 표기할 경우
items=list(map(lambda x:x.strip(), items))

 

  • filter 함수
    • filter(함수, 순서가 있는 자료형)
def func(x):
  return x < 0

print(list(filter(func, [-3, 0, 2, 7, -7])))

# output
# [-3, -7]

# 람다함수로 표현
print(list(filter(lambda x:x<0, [-3, 0, 2, 7, -7])))

 

728x90
반응형

'Development > Python' 카테고리의 다른 글

파이썬 문법 : method  (0) 2023.03.03
파이썬 문법 : class 속성들  (0) 2023.03.02
파이썬 문법 : 람다 함수  (0) 2023.02.27
파이썬 문법 : 키워드 가변 매개변수 kwargs  (0) 2023.02.27
파이썬 문법 : 튜플  (0) 2023.02.27
반응형
  • 람다함수를 사용하면 코드가 간결해진다
  • 메모리 사용이 효율적이다.
# 람다함수 선언 방법
lambda a : a-1

# 호출방법 1 : 그대로 호출
print ((lambda a:a-1)(10))

# 호출방법 2 : 변수에 담아서 호출
minus_ten = lambda a : a-10
print (minus_ten(100))

# 람다함수 if 문 사용
def is_positive_num(a):
  if a > 0:
    return True
  else:
    return False

lambda a : True if a > 0 else False

개인적으로 함수 자체를 호출하는 방법보다는 변수에 담아서 호출하는게 가독성에는 더 좋아보인다.

 

728x90
반응형

'Development > Python' 카테고리의 다른 글

파이썬 문법 : class 속성들  (0) 2023.03.02
파이썬 문법 : map, filter 함수  (0) 2023.02.28
파이썬 문법 : 키워드 가변 매개변수 kwargs  (0) 2023.02.27
파이썬 문법 : 튜플  (0) 2023.02.27
Python 가상환경  (0) 2022.10.27
반응형
  • kwargs 는 keyword arguments
  • 매개변수 앞에 ** 가 붙는다
  • 딕셔너리 로 인식한다.
def comment_info(**kwargs):
  print(kwargs)
  for key,value in kwargs.items():
    print(f'{key}:{value}')

comment_info(name='test1', age=10)

output
{'name': 'test1', 'age': 10}
name:test1
age:10

추가 사항 : 추가적으로 *args 는 임의의 개수의 argument 를 의미한다. kwargs 와는 달리 tuple 로 인식한다.

728x90
반응형

'Development > Python' 카테고리의 다른 글

파이썬 문법 : map, filter 함수  (0) 2023.02.28
파이썬 문법 : 람다 함수  (0) 2023.02.27
파이썬 문법 : 튜플  (0) 2023.02.27
Python 가상환경  (0) 2022.10.27
Ubuntu 에서 파이썬 버전 확인 및 변경  (0) 2022.10.25
반응형
  • 튜플은 () 로 정의된다
  • 튜플은 값을 바꿀수 없다.
t1 = ()
t2 = (1,)
t3 = (1,2,3)
t4 = 1,2,3
t5 = ('a', 'b', ('ab', 'cd'))
  • 1개의 요소만 가질때에는 콤마(,) 를 붙여야 한다.
  • 괄호가 생략 가능하다
  • 개수가 정해지지 않은 매개 변수로 사용된다. (* 가 매개변수 앞에 붙는다.) = 위치가변 매개변수
def print_fruits(*args):
  print(args)
  for arg in args:
    print(arg)

print_fruits('apple', 'banana', 'melon')

output
('apple', 'banana', 'melon')
apple
banana
melon

 

728x90
반응형
반응형

최근에 타입스크립트에 관심이 생겨서 공부를 해보려고 했었는데 마침 나는 리뷰어다 책 목록에 "러닝 타입스크립트" 신간이 있어서 읽게 되었다. O'Reilly 책 표지에 밝은 색깔이 들어가 있는것은 정말 오랜만에 본것 같다. 

책은 생각보다 쉽게 읽혀진다. 설명과 코드로 이루어진 책이긴 하지만 따라하기도 쉽고 이해하기 쉽게 설명이 되어있다. 

특히 코드 부부은 주석과 오류에 대한 내용이 컬러로 표기되어있어서 눈에 더 잘 들어왔다. 소스코드도 다 제공이 되긴 하지만 간단한 코드들이니 직접 해보는것이 좋다. 

저자가 책 서문에 말한대로 이책은 한번 가볍게 1독을 한 후에 레퍼런스 처럼 활용하는게 가장 좋은 활용법인것 같다. 간단한 문법과 설명들이지만 다 외울수 있는 양은 아니다. 보다보면 내용이 생각이 안나는 경우도 생기기 때문에 우선 한번 끝까지 읽어보고 실제 타입 스크립트를 사용할때 모르는 부분을 찾아보는 형식으로 활용하면 큰 도움이 될것 같다. 

아직 천천히 공부중이라서 다 읽지는 못했지만 다 읽고 나면 타입 스크립트에 대한 기본적인 이해와 사용 방법에 대해서는 익숙해 질수 있을 것 같다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형

Union : 값이 허용된 타입을 두개 이상의 가능한 타입으로 확장하는 것

let physicist = Math.random() > 0.5 ? "TEST" : 100;

실제 위와 같은 코드에서는 아래와 같이 판단한다.

Narrowing : 값이 허용된 타입이 하나 이상의 가능한 타입이 되지 않도록 좁히는것

let animal: number | string;
animal = 'tiger';

number 와 string 으로 선언했지만 값 할당을 통해서 string 타입으로 확인되었기 때문에 string 관련 메소드만 사용 가능 하다.

아래와 같이 조건문을 통해서도 타입이 결정될수 있다.

let physicist = Math.random() > 0.5 ? "TEST" : 100;

typeof physicist === "string" ? physicist.toUpperCase() : physicist.toFixed();

 

728x90
반응형
반응형

개요

  • 네트워크
    • IPV4
      • 첫번째 옥텟의 앞자리 숫자를 가지고 구분
      • 호스트 비트 수는 1개의 네트워크 안에 있는 IP 수를 의미한다.
      • A Class
        • 맨 첫번째 앞자리 비트가 0
        • 네트워크 비트 2^7
        • 호스트비트 2^24
      • B Class
        • 맨 첫번째 앞자리 비트가 10
        • 네트워크 비트 2^14
        • 호스트 비트 2^16
      • C Class
        • 맨 첫번째 앞자리 비트가 110
        • 네트워크 비트 2^21
        • 호스트 비트 2^8
  • Route Table
    • 트래픽이 어디로 가야 할지 알려주는 테이블
  • 구성
    • IGW - Router - Route Table - NACL - VPC Subnet
  • NACL
    • NACL - stateless
    • Security Group - stateful
728x90
반응형
반응형

html 태그로 표현되어있는 문법을 createElement 로 변환해준다.

const vdom = <p>
  <h1>헤더</h1>
  <ul>
    <li style="color:red">첫번째</li>
    <li style="color:blue">두번째</li>
  </ul>
</p>

위에 있는 코드가 아래와 같이 변환이 된다.

"use strict";

const vdom = /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("h1", null, "\uD5E4\uB354"), /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", {
  style: "color:red"
}, "\uCCAB\uBC88\uC9F8"), /*#__PURE__*/React.createElement("li", {
  style: "color:blue"
}, "\uB450\uBC88\uC9F8")));

출처 : https://babeljs.io/ 에서 변환함.

왜 저렇게 변환이 필요한가?? 

// app.js
const vdom = createElement(
  "p",
  {},
  createElement("h1", {}, "헤더"),
  createElement(
    "ul",
    {},
    createElement("li", { style: "color:red" }, "첫번째"),
    createElement("li", { style: "color:blue" }, "두번째")    
  )
);

// react.js
export function createElement(tag, props, ...children) {
  props = props || {}
  return {
    tag,
    props,
    children,
  };
}

JSX 를 사용하지 않으면 위와같이 코드를 작성해줘야 한다. 하지만 위보다는 html 태그 구조가 눈에 더 잘 들어온다.

한가지 더 기본적으로 JSX 가 변환을 할때에 메소드를 보면 React.createElement를 사용한다. 하지만 위에 작성된 코드에서는 createElement를 사용하고 있다. 이걸 변경해주려면 다음과 같이 표시해 주면된다. 변환된 코드는 아래와 같다.

/* @jsx createElement */
// app.js
const vdom = createElement(
  "p",
  {},
  createElement("h1", {}, "헤더"),
  createElement(
    "ul",
    {},
    createElement("li", { style: "color:red" }, "첫번째"),
    createElement("li", { style: "color:blue" }, "두번째")    
  )
);

실제로 babel 사이트에서 변환된 것을 봐도 변경된 것을 알수 있다.

"use strict";

// app.js
const vdom = createElement("p", {}, createElement("h1", {}, "헤더"), createElement("ul", {}, createElement("li", {
  style: "color:red"
}, "첫번째"), createElement("li", {
  style: "color:blue"
}, "두번째")));

 

728x90
반응형

+ Recent posts