Python Basis - 1. Python 기초 (자료형 및 연산자)

* 본 기고는 스터디 교재인 'Python Basis'를 기반으로 작성되었습니다. 


* 본 기고는 일주일에 한번 작성하는 것을 목표로 하고 있으며 해당교재를 학습하고 있는 학우분들께서는 학습하면서 막히는 내용을 해당회차에 댓글로 남겨주시면 감사하겠습니다.

기고자 또한 학습을 하며 모르는 부분을 디베롭하여 해당 글을 반복하여 수정할 것입니다. 학습을 하지 않는 분들도 피드백을 해주시면 감사하겠습니다. --------------------------------------------------------------------------------------


   Strderr

>>>Print(“welcome to”,”python”, sep=”~”, end = ‘!’, file = sys.stderr)

Welcome to~python!


해당 코드에서 출력(file)에 해당하는 인자는 어떤 내용일까?


sys.stderr(해당인자는) 표준에러 발생시 콘솔에 에러 메시지를 띄울 때 사용한다.



*들여쓰기

If == 1 :

Print(1)

Else :

Print(0)



1) 동일한 블록 내에서는 같은 들여쓰기를 써야함(space, tab)

2) 하위레벨의 코드블록을 부여하려면 : 콜론을 써야함.

;(세미콜론) : 한 라인에 여러구문이 올 때 ex) a=1 ; b=2

\ : 문장이 아직 끝나지 않았음을 표시

자료형 및 연산자

변수 : 연산을 하기 위한 값들을 임시로, 영구적으로 저장하는 저장소

자료형 : 변수의 유형

변수명 : 문자, 숫자, 밑줄(_) 가능. 숫자는 처음에 나올 수 없음.

예약어는 변수명으로 사용할 수 없음. (예약어: 이미 문법적으로 용도로 사용되도록 예약되어 있는단어, 식별자로 사용할 수 없음)

=(치환연산자)

1) 수치 : 자료형 ex) int, long, float, complex

int : 10진수 정수

정수 앞 0o : 8진수, 0b : 2진수, 0x : 16진수 // reverse) oct(),hex(),bin() (10진수)-> 해당진수

float : 실수

complex : 복소수

2) 문자

‘ or “

다량의 내용을 넣고 싶은 경우( 줄넘김 그대로) : ‘’’ or “””

이스케이프 문자를 활용한 문자열

다음과 같이 \t과 \n을 사용하여 탭과 줄바꿈을 문자열에서 사용할 수 있다.

로(raw)문자열 선언 (문자열앞에 r을 선언하면 ‘’안의 문자를 이스케이프 문자와 관계없이 그대로 출력할 수 있음)

*\r : 캐리지 반환 / 커서를 앞으로이동

-> 2번째 줄 다음줄의 앞 두글자가 맨앞으로 변경되었다.

* 문자열 연산

+ : 문자열 병합

* : 문자열 반복

+는 문자열 상수끼리의 병합일 때에는 생략가능하다.

* 문자열 인덱싱 (indexing)

변수뒤에 원하는 [위치]를 붙여서 원하는 문자 꺼냄. 제일처음 0시작.

-> 인덱싱으로 문자열변경 불가.

*문자열 슬라이싱 (인덱싱이지만 한 문자가 아닌 한 문자열을 꺼냄)

[시작위치 : 끝위치]

처음 문자의 위치는 0이고 끝위치는 +1

ex) . p . y . t . h . o . n . (.위치에 인덱스 숫자를 넣는다고 생각)

0 p 1 y 2 t 3 h 4 o 5 n 6

-6 p -5 y -4 t -3 h -2 o -1 n

+) 증가여부 슬라이싱

[시작위치 : 끝위치 : 증가인자 ]

p y t h o n

3) 유니코드

문자열 표현방식(인코딩)의 다양성

-> 모든 컴퓨터에서 문자열이 동일하게 출력된다고 볼 수 없음.

-> 일관된 문자 인코딩체계 : 유니코드

-> more : www.unicode.org

파이썬3에서는 문자열이 기본적으로 유니코드이다.

-> 유니코드 to 다른 character set : 인코딩(encoding)

-> 다른 character set to 유니코드 : 디코딩(decoding)

4) 리스트

: 값의 나열, 순서가 존재하며 여러 종류의 값을 담을 수 있음.

0부터 시작하는 인덱스가 있음. -> 슬라이싱 가능.

* append() : 기존의 리스트에 값을 추가.

*insert() : append는 리스트 맨 뒤에 추가되지만 insert 메서드를 이용하면 원하는 위치에 값을 넣을 수 있다.

insert (위치, ‘내용’)

* extend() : 한번에 여러 값을 삽입.

기존의 리스트에 리스트를 삽입하였다.

* 리스트의 더하기 연산자

-> 더하기 연산자를 사용하는 경우에는 extend() 메서드와 마찬가지로 튜플이나 리스트와 같은 순회가능한값을 넣어야한다.

순회가능한 값이란?

iterable data를 의미하며 str나 list와 같이 첨자로 접근 가능한 자료를 말한다.

출처:https://planbs.tistory.com/entry/Python-Iterable-%EC%9E%90%EB%A3%8C%ED%98%95-List-Tuple

만약 문자열을 넣으면?

-> 문자열을 쪼개어 각 문자 삽입.

* index() : 문자열안의 값이 어디에 있는지 확인.

index(‘내용’, 시작점, 종결점), 원하는 값 없는 경우 에러.

* count () : 해당 값의 개수를 반환.

* pop()

: 해당 값을 뽑아냄. 인자를 생략하면 뒤에서부터 값을 뽑음. pop되면 해당 값은 리스트 상에서 사라짐.

* remove : 해당 값 삭제

*sort() : 순방향 정렬

* reverse() : 역방향 정렬 -> 문자열 정렬은 알파벳 순서로 정렬된다.

* sort () : 자신이 원하는 방식으로 정렬. 파라미터) key : 정렬 방식, reverse : 정렬여부

5) 세트

집합과 같음. 리스트와 마찬가지로 값의 모임이지만 순서는 없다.

{} 로 묶어 정의하며, 메서드는 리스트와 거의 유사하지만 추가적으로

교집합. 합집합을 구할 수 있다. 또한 차집합, 합집합, 교집합 연산자를 제공.

6) 튜플

: 리스트와 유사하지만 읽기전용이다(수정불가). 따라서 제공되는 함수는 적지만 그 만큼 속도가 빠르다. ()로 표현.

-> 리스트, 세트, 튜플은 서로서로 언제든지 변환이 가능하며 in 연산자 또한

모두 동일하게 적용된다.

7) 사전

: 키와 값으로 구성됨.

-> 키값으로 검색해야함(값으로 검색불가)

-> 인덱스는 지원하지 않음.

*사전에 새로운 값을 추가

* items() : 사전의 모든 키와 값을 튜플로 묶어서 반환.

* keys() :키만 반환 / values() : 값만 반환.

* del문 / clear() : 사전의 삭제

8) 부울 : 참과 거짓을 나타내는 자료형, 사용가능 값 : TRUE, FALSE

> , < ,>= ,<=

==, !=

* &(and) : 두 값이 모두 참이면 TRUE

*or( |) : 둘 중 하나의 값만 참이여도 TRUE

*‘not : 반대되는 값을 반환

* 수치 : 0 은 FALSE, 나머지 숫자는 TRUE

* 문자열 : 빈문자열만 FALSE , 값이 없는 상태인 None의 경우도 FALSE

9) +) 얕은 복사와 깊은 복사 / copy() & deepcopy()

* 변수와 객체

위의 예제롤 보면 b에 a의 객체가 복사되는 것처럼 보이지만 사실은 a가 [1,2,3]의 주소를 복사한 것처럼 b도 [1,2,3]의 주소를 복사한 것이다. 그래서 a와 b의 주소는 사실상 같다. (같은 메모리를 공유하고 있는 것을 알 수 있다.) 따라서 a의 첫번째 값을 5로 바꾸었더니 b의 값도 바뀐 것을 볼 수 있다. 이를 방지하기 위해서 강제복사가 필요하다. b=a[:]를 통해 a의 전체를 b에다 복사하면 a와 b는 서로 다른 주소값을 갖는다. 따라서 a의 값을 바꾸어도 b의 값이 바뀌지 않는다. 이 맥락은 copy(얕은복사), deepcopy(깊은복사)와 연결지을 수 있다.

댓글 1개:

  1. 잘 읽었습니다. 자료형에 여러 종류가 있군요.

    답글삭제

PyR Intro - 신입생OT학기제