[TIL] # 18 python 기본 탄탄

ddalkigum·2020년 12월 16일
2

TIL

목록 보기
18/50
post-thumbnail
post-custom-banner

python

귀도 반 로섬이 만든 언어

Guido van Rossum

네덜란드 발음으로는 휘도 판 로썸입니다!

파이썬 이름의 유래

파이썬하면 뱀을 떠올리게 되고, 저 역시 뱀처럼 유연한 프로그래밍 언어인가?
이런 생각을 했엇는데

파이썬은 바로 즐겨보던 6인조 코디미 그룹인
"Monty Python's Flying Circus"에서 python을 따온 겁니다 😁

현재 귀도님의 깃허브 저장소의 보조 협업 로봇들 이름이
위에 배우들의 이름이라고 하네요

알고나면 조금 재밌기도하고 ㅋㅋㅋㅋ
귀도 반 로섬이라는 사람은 이런사람이구나 알 것 같았습니다

python의 장점

이 부분은 제가 생각하기에 파이썬의 장점입니다

  1. 확장성이 좋다

    아마 공감하시지 않을까 하는데, 어마어마한 라이브러리가 존재하죠

  2. 배우기가 쉽다

    쉽다는 건 굉장히 주관적인 의견인데, 다른 언어에 비해 배우기가 쉽다지
    결코 파이썬을 이용한 프로그래밍이 쉽다는 아닙니다

  3. 소통의 도구로서 좋다

    파이썬이 있어서 진입장벽이 낮아진 건 사실입니다
    덕분에 개발자가 아니엇던 분들의 다양한 의견이 존재 하기도 하고
    많은 사람들이 유입되면서, 다양한 시각의 사람들이 많아졌습니다
    개발자에게 있어 소통은 굉장히 중요하다 생각합니다

이 3가지가 저에게는 가장 큰 장점이 아닐까 싶습니다

이제부터는 글자가 많이 보이고, 파이썬에 대한 글을 써내려가겠습니다


Hello World!

네... 가장 기본적인, 어떤 언어를 사용하던 항상 보는 단어죠

Hello World의 유래에 대해서...

.
.
.
.

네.. 시작하겠습니다
이거까지 파고들면 끝이 없습니다

궁금하신 분들은 한번 찾아보세요

Hello World!

제목 좀 다시 적고...

print("Hello World!")

굉장히 직관적이지 않나요?
"이거 프린트해줘" 이런 느낌입니다

처음 파이썬을 접하기 전에 c언어 깔짝, java는 더 깔짝 배웠엇는데
확실히 훨씬 단순합니다

Data type

  • boolean : 참, 거짓 ( 0, 1 로 표현 가능합니다... 이것도 유래가.... )

  • int(integer) : 정수

    오랫만에 수학을 접하시는 분들은 정수가 마이너스도 포함하나?
    헷갈릴수도 있어요 ... 제가 그랫거든요
    참고로 저 이과입니다

  • float(floating-point number) : 실수

  • str(string) : 문자열
    파이썬에서 "" or '' 로 표시하면 문자열입니다

  • list : 순서가 있는 값들의 집합 (mutable)
    ex) [1, 2, 3, 4]

  • tuple : 리스트와 비슷하지만 튜플은 변하지 않습니다 (immutable)
    ex) (1, 2, 3, 4)

  • dict(dictionary) : 키 값과 벨류 값이 존재하는 집합
    ex) {"사람": "Guido"} 이런식으로 앞쪽이 key 뒤쪽이 value 입니다

  • set : 중복하는 숫자는 포함하지 않는 집합 (mutable)
    ex) {1, 2, 3, 4}

네.. 얘 아니에요

각각의 특성을 좀 볼게요

특성

list, tuple, dictionary, set 네가지 볼게요

우선 각각의 타입을 출력해보고 갈게요

list

큰 특징이 없습니다

중복 ? 가능 합니다
순서 ? 없습니다

mutable 합니다.
안에 있는 요소들의 변형이 가능합니다

물론 list의 메서드에 들어가면 많지만 여기서는 간단하게 다루겠습니다

tuple

중복 ? 가능합니다
순서 ? 없습니다

immutable 합니다

tuple은 unpacking에 효과적입니다

set

중복 ? 안됩니다
순서 ? 있습니다

mutable 합니다

dictionary

중복 ? key는 중복되지 않지만 ,value는 중복 가능합니다
순서 ? 없습니다

key는 immutable 하고, value는 mutable 합니다

같은 key에 값을 넣어주면, 뒤에 있는 값으로 덮어 씌워 줍니다

mutable, immutable

둘의 차이는 값이 변할 수 있냐 없냐의 차이입니다

tuple에 값을 변경시키면 TypeError가 발생하는 것을 확인 할 수 있습니다.

list와 tuple의 차이는??

list = mutable, 중복 가능, 순서 없음
tuple = immutable, 중복 가능, 순서 없음

변하지 않는 것과 변할 수 있는 차이가 있습니다

각각 보게되면 list의 메서드 수와 tuple의 메서드 수가 나와있는데

메모리 사용량

list > tuple

따라서 변하지 않는값을 사용할 경우에는 tuple이 훨씬 효과적입니다
tuple을 사용하는 경우

제일 대표적인 예로는 좌표값이 있죠

dictionay 와 set의 차이점??

list와 tuple은 (), [] 으로 구분이 되는데

둘은 같은 {} 를 사용합니다

둘의 차이점을 보겠습니다

가장 큰 차이점

set는 value만 존재하고,
dict는 key값과 value값이 존재합니다

큰 차이점 말고 다른 차이점을 알아보기보다는
둘의 사용하는 곳을 알아 볼게요

dict의 사용하는 곳

알고리즘 문제

list에서 in메서드를 사용하면 모든 수를 다 탐색하기 때문에
시간 복잡도가 O(n)이라면

dict의 in 메서드는 시간복잡도가 O(1) 입니다

set사용 하는 곳

보통 중복을 제거해줄 때 set를 사용합니다

보시는 것과 같이 중복을 허용 안하기 때문에
중복제거를 할 때 사용합니다

집합을 이용할때

세트를 이용해 합집합, 교집합, 차집합, 대칭차집합( 합집합 - 교집합 )

위 4가지를 사용 할 수 있습니다

  • 합집합표현법 ( a|b, a.union(b) )
  • 교집합표현법 ( a&b, a.interction(b) )
  • 차집합표현법 ( a-b, a.difference(b) )
  • 대칭차집합표현법 ( a^b, a.symmetric_difference(b) )

Math

모듈 math 아닙니다

파이썬에서는 계산을 도와주는 여러 부호들이 존재합니다

  • " + "
  • " - "
  • " * "
  • " / "
  • " ** "
  • " % "
  • " // "

a ** b -> a의 b승을 나타냅니다
a % b -> a를 b로 나눈뒤 나머지를 구해줍니다
a // b -> a를 b로 나눈뒤 몫을 구해줍니다

Concatenate

+의 경우 str과 변수를 더해줄 수 있습니다

변수가 string의 형태이고, string끼리 같이 더해주면
글자를 이어서 출력해줍니다

이렇게 숫자가 아닌 string끼리 더해주는 것을

Concatenate 라고 합니다

조금더 어려운 것

  • " += "
  • " -= "
  • " *= "
  • " /= "

a += 1 -> a에 1만큼 더해준뒤 저장 ( 파이썬에서는 ++ 없습니다 )
b -= 1 -> b에 1만큼 빼준뒤 저장
c *= 2 -> c에 2만큼 곱해주고 저장
d /= 2 -> d에 2만큼 나눠주고 저장

이렇게 파이썬에는 여러가지 연산 기호들이 존재합니다


f string

python에서 출력을 도와주는 도구들이 존재하는데
그중에서 많이 쓰이게 될 녀석입니다

a = "딸기검"

f"{ 변수 } is awesome!! crazy handsome!! "	

>> 딸기검 is awesome!! crazy handsome!!

네.. 이렇게 출력됩니다
예제가 너무 좋네요

python 3.6버전 부터 사용이 가능했고, Literal String Interpolation

줄여서 f-string이라고 부릅니다

PEP의 기본가이드

소문자와 대문자 둘다 사용가능합니다
하지만 룰이 있다면 지키는게 좋습니다

기본가이드가 소문자 f 사용하는 걸 권장 합니다

이렇게 둘다 출력 되긴 하지만 소문자로 씁시다

f-string 말고 다른 fomatting

예제 먼저 보시죠

어떤 걸 쓰시겠습니까 ?

각자 필요한경우가 있으니 print를 사용하는데 있어
알고는 있는게 좋습니다

이건 제가 궁금해서 해본건데

셋의 속도 차이를 확인해 보고 싶어서

실험해 봣더니, 거의 비슷비슷하게 나오지만

f-string이 미미하게 빠른경우가 많이 나왔습니다


여기까지구요

제가 만들어진 배경, 혹은 만들때 어떻게 만들었는지
왜 이렇게 만들었는지... 이런거에 관심이 좀 많습니다

이런거 별거 아닌데 알고나서 코드를 보는거랑
아무것도 모른채로 코드만 보는 거랑은 느낌이 좀 다릅니다

알고나서 보면 갑자기 생각 날때도 있고 그래서
혼자 웃는경우도 있고 그럽니다 🐒

물론, 제 개인적은 견해구요
각자 흥미로운 부분은 다른거니까요 😁

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒
post-custom-banner

0개의 댓글