강의목표

1. 기본 자료형 및 시퀀스를 이용한 사용자 함수를 만들어서 연동할 수 있다.
2. 클래스 생성 후 연동할 수 있다.

 

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

[형식]

def 함수명(매개변수, 매개변수=초기값, *args, **args):
    명령수행문
    return 값

함수의 선언과 호출
  - 함수는 호출되면 함수의 정의부로 이동해 함수의 모든 내용을 순차적으로 실행한 후
    함수가 종료되면 호출되었던 곳으로 돌아온다.


  - 함수를 호출할 때는 함수명()으로 호출하고 매개변수가 있는 함수를 호출할 때에는 함수의 원형에
    맞는 매개변수의 자료형과 같은 값을 매개변수로 전달해야만 호출이 가능하다.
    => 함수는 배개변수로 초기값을 지정할 수가 있고 *args로 지정하게 되면 tuple타입이 선언된다.
    => 일반매개변수, 가변매개변수가 선언될 때에는 가변매개변수는
         반드시 일반매개변수 뒤에 하나만 선언된다. **args로 지정하게 되면 dict타입이 선언된다.


  - 함수는 크게 [return 값]이 생략된 함수와 datatype의 return값을 가진 원형으로 구분되며
    return문을 생략하면 None을 반환하고 return값이 있으면 함수는 결과값을 호출된 모듈로 보낸다.


  - 함수를 호출할 때에는 "함수명(매개변수)"의 형태로 호출하며 매개변수(parameter)는 호출된 
    함수에 전달할 초기값을 대입할 변수를 의미하고 argument는 호출할 때 전달할 값을 의미한다.


  - 함수의 매개변수 전달 특징
    1) argument들은 위치나 parameter 이름으로 전달된다.
    2) parameter는 기본값(초기값)을 제공할 수 있다.
    3) argument들은 tuple을 대입할 수 있도록 함수를 정의할 수 있다. : *args
    4) argument들은 dictionary를 대입할 수 있도록 함수를 정의할 수 있다. : **kwargs

# 매개변수, 매개변수 초기값
def getA(a, b = 3):                     # 초기값이 있는 parameter는 뒤에 두는 것을 권장
    print(a, b)

getA(1)
getA(1, 2)
getA(b = 1, a = 2)                      # parameter를 지정해서 넣는 것도 가능


# result
1, 3
1, 2
2, 1


# 함수의 가변인자값 전달
def my_fun(a, *args, **kwargs):         # a는 일반, args는 튜플, kwargs는 딕셔너리
    print("a =", a)
    print("args =", args)
    print("kwargs =", kwargs)
    
my_fun(11)
my_fun(11, [22, 33], 44)                # 일반에 들어가고 남은 것은 전부 tuple로 들어간다
my_fun(11, [22, 33], 44, id='vszealot', pw=1234)
                                        # dictionary에 넣으려면 위와 같은 방법으로 넣는다


#result
a = 11, args = (), kwargs = {}
a = 11, args = ([22, 33], 44), kwargs = {}
a = 11, args = ([22, 33], 44), kwargs = {'id': 'vszealot', 'pw': 1234}

 

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

람다함수(lambda)
  - 람다 대 수학(lambda calculus)에서 유래된 이름으로 익명함수라고 한다.
  - 함수의 이름이 없는 함수로 파이썬에서 lambda라는 키워드로 익명함수를 정의
  - 간단한 기능의 함수가 컨테이너의 요소로 들어가는 경우,
    혹은 다른 함수의 인자로 함수를 넘겨줄 때 사용되며 한 줄로 표시되는 함수로 정의
  - filter(), map(), reduce() 등의 함수를 사용할 때 유용하다.

[형식]
lambda 인자1, 인자2,,, : 명령(표현식)

# 두 수를 더해서 출력 - 함수
def add(x, y):
    return x + y

print(add(3, 5))


#result
8


# 두 수를 더해서 출력 - 람다
print((lambda x, y : x + y)(3, 5))


#result
8

 

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

파이썬의 고차함수(high - order function)
  - filter(), map(), reduce() 등의 함수, 주로 람다를 응용해서 사용

filter(function, list) : 함수와 순서형 즉 리스트를 매개인자로 받아서 리스트의 값이 하나씩 함수에
                          인수로 전달되어 조건에 맞는 결과인 True가 되는 반환값만을 따로 모아서
                          리스트의 형태로 반환한다.

map(function, seq) : 함수와 시퀀스자료형을 입력받아서 시퀀스자료형의 각각의 요소가 하나씩
                           함수에 인수로 전달되어 리턴되는 출력값을 묶어서 리스트로 리턴하는 함수

reduce(func, seq) : 함수와 시퀀스자료형을 입력받아서 시퀀스자료형의 두 개의 요소가
                         함수에 인수로 전달되어 연산을 한 후, 그 결과값을 그 다음 항목과
                         계속 연산하여  하나의 값을 리턴한다.

재귀함수(recursive): 함수가 직접 또는 간접적으로 자기 자신을 다시 호출하는 것
재귀호출(recursive call): 메모리를 많이 소모하게 되며 처리속도 또한 상대적으로 느리지만
                                작성하는 코드가 간결해지고 이해하기 쉽다.
재귀호출 quick sort, tower of hanoi, Fractal curve 등의 알고리즘을 구현할 때 사용된다.

# filter(func, seq)
print(tuple(filter(lambda x: x % 2 == 0, range(10))))


# map(func, seq)
print(tuple(map(lambda x: x % 2 == 0, range(10))))


# reduce(func, seq)
from functools import reduce                 # reduce함수는 functools 모듈을 import해야 사용가능
print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5, 6, 7, 8, 9]))


#재귀함수
def sum_n(n):
    if n == 1:
        return 1
    else:
        return n + sum_n(n - 1)
        
print(sum_n(9))


#result
(0, 2, 4, 6, 8)
(True, False, True, False, True, False, True, False, True, False)
45
45

 

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

OOP(Object Oriented Programming)란?
  - 객체 지향 프로그램을 말한다. 데이터 처리를 하는 메소드들을 하나의 프로그램으로 설계해서
    연동하는 객체(Object)를 중심으로 프로그램을 짜는 언어를 말한다.
  - python은 대화적이고(Interactive), 인터프리터(interpreter)되는 객체 지향 프로그래밍 언어이다.
  - 파이썬은 모든 것이 객체이다.

 

클래스와 객체란?
  - 클래스는 객체 지향 프로그램의 기본적인 
    사용자 정의 데이터형(user define data type)이라고 할 수 있다.
  - 클래스는 객체를 정의한 것으로 실세계에서 존재하는 사물이나 개념의 속성과 기능을
    모델링해서 추상화시키는 과정을 말한다.
  - 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있다.
    객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다.
  - 객체는 클래스의 인스턴스이며 정의된 클래스를 사용해서 
    실제로 메모리에 생성되어 메모리에 로딩된 상태를 말한다.
  - 객체는 클래스의 타입으로 선언됐을때를 의미하는 것이고 그 객체가 메모리에 할당되어
    실제 사용될 때 인스턴스라고 한다.

객체    = 속성(Attributes) + 행위(Behaviors)
클래스 = 변수(Variable) + 메소드(Methods)

  - 객체는 멤버 변수를 가지고 있으면서 그들의 동작을 수행하는 함수들을 가지게 되는데 메소드라고 부른다
    메소드는 객체를 사용하기 위해 필요한 모든 이벤트들을 처리하는 함수이다

 

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

번외1

ord(char) : char문자의 unicode값을 리턴
chr(int)   : 해당 숫자의 char문자를 리턴

# ord(char), chr(int)
print(ord('A'))
print(chr(65))


#result
65
A

번외2

스코핑룰(scoping):
파이썬에서 사용되는 함수, 클래스 등이 선언되면 변수를 사용하게 되는데
선언한 변수를 저장할 때 네임스페이스에 저장하고 호출한다.
이 때 네임스페이스 영역의 우선순위에 따라 호출되어지는 룰을 말한다.

파이썬의 네임스페이스는 세가지로 분류된다. 변수가 호출되는 우선순위를 약어로 LGB규칙
Local : 함수 내부에 선언될 때의 영역
Global : 함수 외부에 선언될 때의 영역
Built-in : 내장함수의 영역

# 스코핑룰, LGB규칙
lgb = "Global"

def lgb_test():
    lgb = "Local"
    print(lgb)
    
lgb_test()
print(lgb)


#result
Local
Global

강의목표

1. 흐름제어를 이해하고 구현하자.
2. 함수와 클래스를 선언하고 구조를 이해할 수 있다.
3. 함수를 선언하고 값전달을 이해할 수 있다.

# 오늘은 중간에 파이참 설치하느라 시간을 많이써서 2.3.번은 함수의 개념정리까지만....

 

====================================================================
흐름제어문 
프로그램의 흐름을 순차적으로 수행하다가 다른 곳으로 조건에 의해 또는
어떤 이유에서 흐름을 이동하는 구문을 말한다.

조건문이나 반복문 또는 프로그램의 명령을 수행하는 중에 block을 빠져 나가거나 특정위치로
이동할 필요가 있을 때 사용하는 문장으로 break, continue, return등이 있다.

#python
while (조건문):
    수행문1
    수행문2
    
while (조건문): 수행문1;수행문2

#다른 언어
while (조건문){
    수행문1;
    수행문2;
}

 

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

break문은 for문, while문 등의 반복문에서 빠져 나오는데 사용하는 구문으로
한 번 지정하게 되면 가장 가까운 하나의 Loop를 벗어날 때 사용된다.
# break 상위의 반복문과 관계된 모든것을 탈출(for~else까지도)

for i in range(1,10):
    if i > 5:
        break
    print(i, end=" ")
else:
    print("확인")
    
    
#result
1 2 3 4 5

 

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

continue
# continue를 만난 순간 현재 반복은 중단하고 바로 다음 반복으로 넘어감 else도 수행됨

for i in range(1,10):
    if i == 5:
        continue
    print(i, end=" ")
else:
    print("확인")
    
#result
1 2 3 4 6 7 8 9 확인

 

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

중첩 for
수행될 명령 부분에 for문을 반복할 구문으로 대처해서 반복문 안에 또 다른 반복문을 
구현할 수 있도록 실행된다.

for i in range(1,4):
    for j in range(1,5):
        print("({0}, {1})".format(i, j), end=" ")
    print()
    
#result
(1, 1) (1, 2) (1, 3) (1, 4) 
(2, 1) (2, 2) (2, 3) (2, 4) 
(3, 1) (3, 2) (3, 3) (3, 4) 

 

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

함수
  - 여러개의 실행문을 하나로 묶은 작은 단위의 모듈을 의미하며 특정한 명령을 수행하는
    하나의 독립된 프로그램(함수의 정의)
  - 함수는 파이썬의 데이터형과 흐름제어를 알고 특정한 작업을 수행하도록 설계된 독립적인
    프로그램으로 모듈화를 기본으로 한다.(파이썬에서 함수의 정의)
  - 모듈화란 특정 기능 부분을 실행할 수 있는 블록으로 만들고 여러 실행 블록을 연결해서
    프로그래밍 하는 것을 의미한다.
  - 파이썬 함수의 모듈화 : 별도의 파일에 정의된 함수의 지정된 데이터, class들이 모임을 저장한 것중
                                   모듈 안의 함수를 말한다.
  - 함수를 사용하게 되면 실행문이 하나로 묶인 모듈이 호출되어 실행되어 편리하게 사용된다.
    ex) prn(10) -> 1~10출력 하고싶다
         prn(100) -> 1~100출력 하고싶다
  - 파이썬의 함수는 원하는 원형의 실행 구문을 만들어 모듈화(.py)로 구현하고 호출하게 되면
    실행되는 객체로 관리된다.

 

함수의 종류
  - 라이브러리 함수 : 표준함수 or 내장함수라고 부르며 시스템에서 미리 작성해놓은 함수
                            삼각함수, 지수함수, 날짜 정보함수, 파일함수, 데이터베이스 함수 등을 말함

                            sys.path가 지정된 곳의 모듈

  - 사용자 정의 함수 : 사용자가 직접 만들어서 사용하는 함수 -> .py -> 전역패스설정
  - built-in 함수 : python 설치 시 기본적으로 제공해주는 함수 print(), type() 등
                       >>> dir(__builtins__) >>> help(print)

 

 

함수의 선언과 호출
  - 함수는 호출되면 함수의 정의부로 이동해 함수의 모든 내용을 순차적으로 실행한 후
    함수가 종료되면 호출되었던 곳으로 돌아온다.
  - 함수를 호출할 때는 함수명()으로 호출하고 매개변수가 있는 함수를 호출할 때에는 함수의 원형에
    맞는 매개변수의 자료형과 같은 값을 매개변수로 전달해야만 호출이 가능하다.
  - 함수는 크게 [return 값]이 생략된 함수와 datatype의 return값을 가진 원형으로 구분되며
    return문을 생략하면 None을 반환하고 return값이 있으면 함수는 결과값을 호출된 모듈로 보낸다.

 

# 1주차 끝....

강의목표

1. 제어문을 사용할 수 있다.

조건문 : if문을 통해서 조건을 구현하는 방법과 단일if, 다중 if~else구문을 숙지하고 활용할 수 있다.
반복문 : 반복적이고 연속적인 구문을 while문 for문을 이용해서 간단하고 빠르게 처리할 수 있다.

# 원래는 흐름제어문까지 가는게 목표였으나 중간에 번외편이 있었다

 

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

파이썬의 기본 구문
파이썬의 기본 구문은 상황에 따라 적합한 제어문(control flow statements)을 사용해서
문제를 해결하도록 하며 조건, 반복, 흐름제어문으로 이루어진다.
  - 조건문 : 단일if, 다중if~elif~else, 중첩if~else구문으로 이루어지고 빈 실행문이 있다면 
               명령이 쓰일 곳에 pass를 작성
  - 반복문 : while, while~else, for문, for~else, 중첩구조, pass를 작성한다. (with)
  - 흐름제어문 : continue문, break문, return문

 

=================================================================
조건문 - 단일 if
  - if문은 조건 비교 문기문의 하나로 주어진 조건을 비교해서

  - 조건의 리턴값이 boolean의 True, False에 따라 명령을 제어하는 구문이다.
  - if문 조건식의 결과가 
    True인 경우에는 다음 명령의 들여쓰기 후 작성된 명령을 실행한다.
    False인 경우에는 아무것도 실행하지 않고 if문 다음의 명령으로 넘어간다.

[형식]
if 조건문:
    True인 경우 수행할 문장

 

=================================================================
조건문 - if ~ else 문
  - 조건식을 평가하고 True인 경우에는 조건식의 명령을 실행하고 False인 경우에는 else의 명령을 실행

[형식]
if 조건문:
    True인 경우 수행할 문장
else:
    False인 경우 수행할 문장

 

=================================================================
조건문 - 다중 if ~ else 문
  - 여러 조건식이 사용되는 경우에 조건식에 선택적으로 조건의 값의 범위를 줄 수 있어 선택문으로 사용된다.
  - 다중 if ~ else 구문은 하나의 if로 시작해서 여러개의 조건을 가질 수 있는 elif를 선언할 수 있으며
    반드시 마지막에는 else로 마무리가 되어야 한다.

[형식]
if 조건문:
    True인 경우 수행할 문장
elif 조건문:
    True인 경우 수행할 문장
elif 조건문:
    True인 경우 수행할 문장
elif 조건문:
    True인 경우 수행할 문장
else:
    False인 경우 수행할 문장

 

=================================================================
반복문 - while문(입력값, 메뉴화면)
  - while문은 조건문을 비교해서 조건을 만족하는 경우에는 실행 문장을 수행하고

    만족하지 않으면 while문을 빠져나오는 특징을 가진다.
  - 수행되는 문장안에는 반드시 반복 횟수를 제어하는 변수를 가지고 있어야 한다.
  - 제어변수가 없을 경우 조건문이 True가 되면 무한루프가 된다.

[형식]
while 조건문:
True인 경우 반복 수행할 명령문
else:
False일 경우 수행할 문장

 

=================================================================
반복문 - for문(출력문)
  - for문은  반복을 수행할 횟수가 결정된 경우의 프로그램에 주로 사용하는 제어문
  - 리스트, 딕셔너리 등 반복해야하는 횟수가 결정된 형태를 제어할 때 주로 사용한다.
  - 리스트, 딕셔너리 등의 순서형 자료를 in 키워드 변수 앞에 순서대로 하나씩 리턴하며 명령이 실행된다.
  - 연산식은 for문 안의 문장을 수행하고 나서 수행된다.
  - 들여쓰기로 하나의 블록으로 구분된다.

[형식]
for 변수 in 시퀀스:
    명령
else:
    명령

순서를 갖는 자료형 -> 내장함수형식 range(), enumerate(), zip(), items()
range(start, stop, [step])

enumerate(값, 인덱스시작(default=0)) : 인덱스랑 값을 같이 저장해서 사용
결과는 (인덱스, 값) 순서 

 

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

# 번외편... 인데 클래스 배울 때 중요한 내용인 것 같다.
하드웨어, OS(Memory Map), 프로그램 설치 = M/M = 실제 메모리, 하드, SSD
  - ds(data segment) : 리터럴을 관리하는 곳 = 값을 관리
  - cs(code segment) : 코드를 관리하는 곳
  - static : 정적영역
  - heap : 자유영역 공간
  - stack : 고정공간

C언어 (프로그램툴, Exe, M/M, 기타등등)
  - ds(data segment) : 리터럴을 관리하는 곳 = 값을 관리
  - cs(code segment) : 코드를 관리하는 곳
  - static : 정적영역은 static, struct, 함수, class, union이라는 키워드를 선언하게 되면
    bind가 된 것을 binding한다. &Test &a &test() &main()
    ex) a=10 (static)
  - heap : 자유영역 공간 = 동적할당공간
    프로그램이 실행할 때 다른 프로그램이 사용하지 않은 실행공간을 할당받아
    실행하고 실행이 끝나며 메모리를 소거하는 공간
  - stack : 고정공간

 

=================================================================
1) pythonfile.py -> bytecode.pyc : 파이썬은 확장자는 py이고 bytecode로 컴파일되면서
   파일명.pyc 라는 확장자로 변환되고 bytecode는 python-specific representation을 의미한다.

 

2) python virtual machine = PVM
    >>> Prompt or .py -> bytecode Compiler -> .pyc Module -> VM -> Program Output
    가) 파이썬을 실행하게 되면 소스코드를 먼저 파이썬은 기계에 대한 쓰기 액세스 권한을 가지고
         있을 때 bytecode로 생성된 pyc파일에 저장하고 이 때 메모리에 저장한다.
    나) 파이썬은 .pyc 파일을 사용하여 프로그램을 실행할 수 있고 파이썬 가상머신은 bytecode 파일을
         통해 실행된다.
    다) PVM은 bytecod로 된 명령어를 해석하고 실행하기 때문에 파이썬 코드는 일반적으로 항상
         기계 코드로 컴파일하고 CPU에 의해 직접 실행되는 C, C++코드 보다는 느리게 실행된다.

OS종속적이다 = 5개 씀, OS독립적이다(VM이 있다) = static heap stack 3개 씀

같이 수업을 듣는 수강생중 한 분이 만들어주셨다...

 

강의목표

1. 시퀀스 자료형 (dict)의 특징, 활용을 구현해보자
2. 표준입출력을 구현하고 활용하자

 

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

dict(딕셔너리: Dictionary) : 자료를 대입할 때 { }안에 콤마로 값을 분류하고
                                    key : value 형태로 선언하는 구조를 가져 비정형 데이터를 맵핑할 때 유용하게 사용됨.

비정형 데이터 : .xml, .csv(comma seperate value), .tsv(tab sv), .json, .sql(정형 + 비정형)

데이터 처리 변환 : dict -> .json or .txt -> 비정형 서버 혹은 반대로

dict 특징
     1. 정렬 불가능 key - value pair
     2. 새로운 키를 입력할 때는 반드시 key에 해당하는 value도 함께 입력해야 함
     3. value값은 변경 가능, key값은 변경 불가
     4. key를 호출하면 value를 리턴하는 구조

dict class의 method 정리 : help(dict), dir(dict) : 해당 클래스가 가지고 있는 멤버들을 확인
     1. keys() : key들을 모아놓은 리스트를 리턴  dict_keys라는 새로운 클래스
     2. values() : value들을 모아놓은 리스트를 리턴 dict_values라는 클래스
     3. items() : key, value를 tuple로 변환한 리스트를 리턴 dict_items라는 클래스
     4. clear() : 모든 내용을 삭제
     5. get(key) : 지정된 key의 value를 리턴
     6. update() : 
     7. 부분삭제는 del(key)

 

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

set : 파이썬에서 { ](dict 아님)안에 저장된 자료를 집합 연산을 통해 자료를 추출하고 싶을 때 사용하는 자료형
set 특징
     1. 중복되지 않은 요소들의 모임을 가진 집합으로 임의의 순서를 가진다.
     2. 공집합은 {}가 아닌 set()으로 호출된다.
     3. set(요소) => {요소}로 리턴된다.
     4. 선언은 set()의 ()안에 자료를 입력하거나 tuple(), list[]로 데이터를 입력할 수 있다.
     5. 차집합, 교집합, 합집합, 대칭차집합

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

2. 표준입출력을 구현하고 활용하자.
표준입출력이란? :

    처리하고자 하는 자료의 값을 프로그램이 기본적으로 제공하는 장치를 이용하여
    입력과 출력을 구현하는 것
    표준 입출력은 콘솔장치를 이용하게 된다.
    즉 파이썬의 쉘을 이용해서 입출력하는 부분과 데이터베이스를 포함한 파일의 저장된 자료를
    입출력하는 부분으로 관리된다.
    파이썬에서는 python shell창을 출력하는 기능을 표준 출력 standard output이라고 하고
    print()함수가 수행한다.

 

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    -value : 출력될 값
    -sep : 연속적인 값을 하나의 공백으로 구분함. 다른 문자열을 대입해서 사용할 수 있다.
    -end : 기본은 '\n'
    -file : 출력 스트림 즉 콘솔로 출력하도록 되어 있으며 대상을 지정하여 출력 장치를 변경할 수 있다.
    -flush : 출력 버퍼를 지워버리거나 값을 파일에 쓰고 난 뒤 버퍼를 지워버리는 기능을 한다.

임시기억장소 : 버퍼(byte 단위로 처리되는 대상에 존재하는 임시기억장소), 
                    누산기(1+2+3), 클립보드(GUI툴에서 잘라내기, 복사), 레지스터(명령어)

 

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

출력함수와 포매터
1. print((Format String))
"[flags][width][.precision]type"%(value)
포맷서식 : 포맷팅을 이용하여 출력할 자료형 또는 자리수를 지정

flags      : %로 지정 포매팅을 시작하겠다.
width     : 출력될 value의 전체 자리수
precision : 소수이하 자리수 지정
type       : 출력될 value의 datatype


%d(10진수), %o(8진수), %x(16진수), %e(부동소수점 지수), %f(실수), 
%g(정밀도기준), %c(단일문자), %r(문자열 repr()의 결과값), %s(문자열), %%(%출력)

2. str이 가진 format()함수를 사용
format(...)
S.format(*args, **kwargs) : 문자열에서 맵핑되는 자료형을 전체 자릿수에 맞추어 정렬할 수 있고
인덱스를 통해서 출력할 수 있는 값의 위치를 지정한다.

강의 목표

1. 파이썬에 연산자의 종류와 연산자의 우선 순위를 이용하여 연산을 실행할 수 있다.
2. 시퀀스에 대한 구문을 살펴보고 활용할 수 있다.
3. 파이썬의 제어문의 종류를 이해하고 코드를 작성할 수 있다.
4. 클래스의 개념을 이해할 수 있다. 

어제 못다한 부분 포함하여 시작했으나 오늘도 3.4.번은 나가지 못했다....

 

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

연산자(operator)

    대상을 두고 계산을 할 때 사용하는 문자를 말함. 계산이 이루어지는 대상을 피연산자라고 함.

    연산자와 피연산자는 주어진 식을 계산하고 결과를 리턴함.

    산술, 비교, 논리, 비트, 시프트, 대입 연산자가 있다.

 

1. 산술연산자 : +, *, -, /, %, **, // 등 사칙연산에 %는 나머지, **는 거듭제곱, //는 몫.

 

2. 비교, 관계연산자 : 두 개의 값을 비교해서 그 결과(True, False)를 리턴하는 연산자
    >, <, >=, <=, ==, !=. !=의 경우 다른 언어에서 (<>)로 쓰는 경우도 있음.

 

3. 논리연산자 : and, or, not을 이용해서 각 논리값들 사이에 사용하는 연산자로 결과(True, False)를 리턴

    True = 1, False = 0

    (  >  ) & (  >  ),  (  >  ) | (  >  )
    두 개의 연산이 있을 경우 and 연산은 첫 연산의 결과가 False이면 뒤 연산을 수행하지 않고 False를 리턴
    두 개의 연산이 있을 경우 or 연산은 첫 연산의 결과가 True이면 뒤 연산을 수행하지 않고 True를 리턴

 

4. 비트연산자 : Bitwise and, Bitwise or, Bitwise not, Bitwise XOR, Bitwise right shift, Bitwise left shift를

                    이용해서 각 비트값들 사이에 사용하는 연산자. 결과(bit)를 리턴

    ~, &, |, ^, >>, <<

 

ex) 10 | 4     : 1010 | 0100 = 1110 이므로 14가 리턴

     ~10       : 00000000 00000000 00000000 00001010 뒤집으면 11111111 11111111 11111111 11110101

                   첫 자리는 부호이므로 음수이고 -11이라는데 왜 -11로 읽히는지는 잘 모르겠다.

     10 >> 2 : 00000000 00000000 00000000 00001010 에서 우측으로 두 칸

                00000000 00000000 00000000 000010 넘어가는 건 날리고 빈자리는 0

                  즉, 한 칸 갈때마다 /2 해서 몫만 남김

   10 << 2 : 위와 반대로 이동. 한 칸 갈때마다 *2

 

5. 대입연산자 : 대입연산자는 변수에 값을 저장하기 위한 용도 기존 연산자에 = 을 붙임

                    +=, -= 등등

 

6. 기타연산자 : dict, str, list, tuple 등 시퀀스에서 값을 찾을 수 있는지의 유무를 테스트할 때 사용

    is      : 비교하는 객체의 주소가 같은지 유무
    is not : 비교하는 객체의 주소가 다른지 유무
    in      : 연속항목에서 지정된 값이 존재하는지 유무
    not in : 연속항목에서 지정된 값이 존재하지 않는지 유무

    문자열은 string pool에서 가져오므로 내용이 같으면 주소가 같다.

    리스트는 내용이 같아도 주소가 다르다.

 

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

시퀀스(sequence) : 파이썬에서 문자열, 수치 등을 관리하는 기본 자료형(dict, str, list, tuple 등)

     1) 배열 형식 : 문자열, 수치 등을 나열해서 관리하는 배열 형식을 취한다.
     2) 인덱싱(indexing) : 배열로 저장된 형식을 취하기 때문에 색인을 자료의 위치를 참조해서
        값을 리턴받고 활용할 수 있다.
     3) 슬라이싱(slicing) : 특정 구간의 자료를 리턴할 수 있는 기능
     4) 연결, 반복 : +, *
     5) 기타연산자를 통해서 시퀀스 자료의 유무를 체크

 

1. 문자열 _string - str : 처음 초기값으로 설정된 값은 인덱싱으로 변경X
    1) 문자열의 인덱싱 : 문자열은 각각 한 글자마다 인덱스를 가지고 0부터 나열한 값을 가지게 된다.
       역순으로 -(음수)값을 가진 인덱스로 매핑된다.
       호출은 문자변수[인덱스]로 호출하면 값을 리턴함.
    2) 슬라이싱(slicing) : [인덱스시작 : 인덱스끝 : 스텝]으로 명시해서 범위에 맞는 값을 잘라서 리턴하며 단계를 지정함.
    3) 연결, 반복 : +, *
    4) 기타연산자

 

2. 튜플_tuple - (  ,  ,  ,  ) : 빈튜플( ), 혼합형튜플(  ,  ,  ,  ), 중첩.(nested)(  , ( ), [ ])의 형식. 값 변경이 불가능
    1) 인덱싱 : 문자열과 같음
    2) 슬라이싱(slicing) : 문자열과 같음
    3) 연결, 반복 : +, *
    4) 기타연산자

값에 None을 넣을 수 있는데 리턴하면 안 나옴. 공백을 넣을 수는 없음" " 말고 걍 공백

 

3. list - [  ,  ,  ,  ] : 빈리스트[ ], 혼합형리스트[  ,  ,  ,  ], 중첩.(nested)[  , ( ), [ ]]의 형식. 값 변경이 가능

    1) 인덱싱 : 문자열과 같음
    2) 슬라이싱(slicing) : 문자열과 같음
    3) 연결, 반복 : +, *
    4) 기타연산자

 

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

 

python 2일차 수업을 진행했다.

강의목표는

1. 파이썬의 식별자와 키워드의 뜻과 형식을 알아보고 식별자를 만들어 사용할 수 있다
2. 파이썬의 변수와 값의 개념을 파악해서 변수를 선언할 수 있다.
3. 파이썬 자료형 타입과 형식을 알아보고 선언할 수 있다.
4. 파이썬에 연산자의 종류와 연산자의 우선순위를 이용하여 연산을 실행할 수 있다.

..였는데 4번은 오늘 못해서 내일.

 

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

참조 : 연결대상의 시작주소를 이용해서 값을 CRUD하는 것

식별자 : 프로그래밍 언어에서 변수, 함수, 메소드, 클래스, 모듈 등을 구분하기 위해서 붙이는 이름을 말한다.

    식별자 생성 규칙

        1) 영문자 A~Z, a~z, 또는 _로 시작.

        2) @, $, %등 특수기호는 사용X

        3) 대소문자 구분

        4) 클래스 명은 첫 글자만 대문자

        5) _로 시작하면 private, __로 시작하면 strong private

        6) __로 끝나는 것은 식별자 언어에 의해 정의된 특별한 이름을 의미

        7) 키워드를 제외하고 이름을 명명

 

키워드 : 프로그램에서 예약된 단어, 파이썬에서 미리 사용하기 위해 예약해둔 단어들

    1) help() -> keywords로 나오는 단어들

    2) import keyword -> dir(keyword) -> keyword.kwlist에서 나오는 단어들

 

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

변수 : 변하는 수라는 뜻을 가지며 값을 저장할 수 있는 메모리상의 공간을 의미

특징

    1) 숫자값, 문자열값, 또는 클래스의 객체를 나타냄
    2) 변수에 저장되는 값 리터럴 상수는 변경할 수 있지만 변수 이름은 그대로 유지
    3) 데이터 형식은 응용프로그램이 실행될 때 저장하기 위해 할당해야하는 정확한 메모리 양을 지정
    4) 명명은 키워드의 규칙을 따른다. 

     type()함수를 이용해서 리터럴의 자료형 타입을 확인할 수 있다. 
     이름을 호출하면 값을 리턴한다. 

 

리터럴 <class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'NoneType'> 
=             정수            실수           문자열           불                   None

type((10, 'a', 90.7)) = <class 'tuple'>= (  ,   ,   ,  ) : 값으로 구분, 인덱스로 구분
     ex) a = (1, 2, 3, 4) a[4] => IndexError: tuple index out of range
<class 'dict'> = {  ,  ,  ,  } : 키로 구분
<class 'list'> = [  ,  ,  ,  ] : 인덱스로 구분

,로 나열해서 값을 대입하게 되면 나열형 값을 관리하는 자료형이 된다. 
나열형 데이터 타입(시퀀스자료형) : tuple, list, dict, set

 

====================================================================
자료구조 : 하나 이상의 값을 나열해서 하나의 객체에 담아서 관리하는 구조
(중복값을 가질 수 있는지?, None값을 가질 수 있는지?가 중요 여부)
     1. 인덱스 구분 : 위치로 구분 list, tuple
     2. 값으로 구분 : 값으로 구분 tuple
     3. key로 구분 : dict

 

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

자료형 변환
int(x, [base]) : base진법의 수를 10진으로 변환, x가 문자열일 경우 정수로 바꿔준다.
oct(x) : 8진
hex(x) : 16진
bin(x) : 2진
float(x) : 실수형으로 변환

 

번외로 클래스 맛보기도 했는데 다음에 클래스 할 때 자세히 적는게 나을듯 함

어제부터 본격적인 파이썬 강의에 들어가면서 공부한 내용을 블로그에 정리하기 시작한다.

알고리즘 공부도 정리할거고 기사시험까지 정리하긴 빡실듯

 

강의 목표는

1. 파이썬 프로그램 설치리 및 툴 활용, API를 활용해서 원하는 구문을 찾을 수 있다.
2. 파이썬의 기본 자료형 및 키워드를 확인할 수 있다.
3. 자료형과 리터럴, 변수 및 데이터 타입을 이해하고 활용할 수 있다.
4. 파이썬의 전반적인 구문을 이해하고 실행할 수 있다.

 

1. 파이썬 프로그램 서리 및 툴 활용, API를 활용해서 원하는 구문을 찾을 수 있다.

디테일하게는

1) 파이썬 프로그램 설치
2) 전역 패스 (시스템 변수, 사용자 계정 변수) 설명
3) 패스확인하면서 cmd 켜보고 일부 명령어 확인
4) 설치된 폴더에 뭐 들어있는지 둘러보기

python이 설치된 폴더

DLLs : dll(dynamic link library)은 참조형 실행파일이라고 한다. 이 폴더엔 기존의 모듈에서 추가된 확장형 모듈만 

        모아 놓음

Doc : 말그대로 문서 모음 파이썬 설명서인듯

include : OS에 맞게 자료타입을 매핑하는 폴더. 파이썬은 OS에 독립적이기 때문에 OS에 맞게 자료형을 변환하는 

            파일들이 들어있다고 한다.

Lib : python에서 제공/실행하는 명령어들이 들어있음. 그래서 머신러닝 등 추가하면 여기에 늘어난다고 함.

python/Lib 폴더. 현재 205항목인데 나중에 늘어나는지 확인해봄.

2. 파이썬의 기본 자료형 및 키워드를 확인할 수 있다.

3. 자료형과 리터럴, 변수 및 데이터 타입을 이해하고 활용할 수 있다.

리터럴은변수에 담기기전 모든 정수, 실수, 문자 등 double float string int 등 날 것

리터럴의 종류는 정수 리터럴 - int, 실수 리터럴 - float, 불리언 리터럴 - bool, 문자, 문자열 리터럴 - str

 

내장함수 : 이름() print()
변수 : 변하는 수(값)를 담는 것, 이름 = 값, ex) A라는 변수에 100라는 값을 넣겠다 A=100
메소드 : 클래스안에 선언된 함수
클래스 : 사용자 자료형 user data type
모듈 : .py = python 의 확장자
패키지 : 꾸러미로 폴더 단위를 말한다.

패키지안에 모듈안에 클래스안에 메소드안에 변수가 있다. 내장함수는 단독

+ Recent posts