{"id":20592522,"url":"https://github.com/mskims/python-study","last_synced_at":"2026-05-29T08:31:23.563Z","repository":{"id":86557106,"uuid":"73704801","full_name":"mskims/python-study","owner":"mskims","description":"Recorded my python-study results","archived":false,"fork":false,"pushed_at":"2016-12-09T15:52:25.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T14:24:19.624Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mskims.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-14T12:59:06.000Z","updated_at":"2017-03-05T11:04:47.000Z","dependencies_parsed_at":"2023-03-04T08:00:51.657Z","dependency_job_id":null,"html_url":"https://github.com/mskims/python-study","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mskims/python-study","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mskims%2Fpython-study","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mskims%2Fpython-study/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mskims%2Fpython-study/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mskims%2Fpython-study/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mskims","download_url":"https://codeload.github.com/mskims/python-study/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mskims%2Fpython-study/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33644159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T07:44:08.596Z","updated_at":"2026-05-29T08:31:23.545Z","avatar_url":"https://github.com/mskims.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 파이썬\n\n[](https://wikidocs.net/images/page/5/pahkey_KRRKrp.png)\n\n\u003e 1991년 귀도 반 로섬이 발표한 C기반의 객체 지향적 대화형 프로그래밍 언어 이다.\n\n## 특징\n\n* 간결하고 쉬운 (직관적인) 문법\n* 빠른 개발 속도\n* 오픈소스\n\n### 간결하고 쉬운 문법\n\n```\nprint 'hello world!'\n```\n\n파이썬에서 hello world 를 출력하기 위한 코드는 단 한줄!\n\n### 사라진 세미콜론\n\n파이썬의 가장 큰 특징 중 하나가 생소한 문법이다.\n\n파이썬은 다른 보편적인 언어와 달리 명령어 끝에 세미콜론을 쓰지 않는다.\n\n아 물론 세미콜론을  붙여도 문제없이 동작 하지만 파이썬이 공식으로 제공하는 코드 컨벤션인 PEP가 경고한다. \n\n```\nprint 'Where is semicolon?'\n```\n\n### 들여쓰기 scope\n\n```\n# Python\nif Condition:\n\tdo_something()\n// JS\nif(condition){\n\tdo_something()\n}\n```\n\n파이썬의 코드블럭이다.\n\n이 해괴 망측한 문법은 코드블럭을 { }  로 구분하는 대신 가독성이 뛰어나다는 이유로 들여쓰기로 구분한다. 쓰다보니 편하네요.\n\n### PEP8\n\n파이썬이 제공하는 PEP라는 코드 스타일 가이드이다.\n\n다른 언어로 짜여진 프로젝트들을 보면 코드 스타일이 다르지만 파이썬은 엄격하게 가이드라인을 만들어 제시하고 있다.\n\n1. 들여쓰기는 공백 4칸을 권장합니다.\n2. 한줄은 최대 79자까지 (????)\n3. 최상위(top-level) 함수와 클래스 정의는 2줄씩 띄어 씁니다.\n4. 클래스 내의 메소드 정의는 1줄씩 띄어 씁니다.\n\n파이참은 칼같이 이 가이드라인을 지킨다.\n우리 모두 지켜 씁시다. \n\n## 자료형\n### 숫자형\n\n```\na = 1\n```\n\n평범하다.\n\n### 문자열\n\n```\na = 'this is string'\n```\n\n#### 문자열 내장함수\n\n문자열은 많은 함수를 가지고 있다.\n\n''capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'......\n\n그중 몇개를 자세히 알아보자.\n\n```\na = 'Hello String'\na.upper(), a.lower()\t# 'HELLO STRING', 'hello string'\n'i am min seok kim'.title\t# 'I Am Min Seok Kim'\n```\n\n파이썬에서 자주 쓰이는 String.format 함수를 알아보자.\n\n```\n'I am {}'.format('Babo')\t# 'I am Babo'\n'I love {0} and {1}'.format('you', 'me')\t# I love you and me\n'{s} {v} {o}'.format(s='Modernize', v='Your', o='DBMS')\t# Modernize Your DBMS\n\n'{s} {v} {o}'.format({ 's': 'Mordernize', 'v': 'Your', 'o': 'DBMS' })\t# KeyError: 's'\n```\n\n### 튜플\n\n파이썬은 튜플이란 이상한 데이터 형태를 가지고있다.\n\n#### 기본형태\n\n```\na = 1\nb = 2\ntuple = a, b\nprint tuple\t\t# (1, 2)\n```\n\n이런것도 가능하다\n\n```\na, b = 1, 2\na # 1\nb # 2\n```\n\n```\ndef func(a, b):\n\treturn a + b\ntuple = 1, 2\nprint func(*tuple)\t# 3\n```\n\nㅎㄷㄷ\n\n### 딕셔너리\n\n```\na = {\n\t'key': 'value',\n\t'key2': 'value2'\n}\n# 이렇게 선언할 수도 있다.\nb = dict(\n\tkey='value',\n\tkey2='value2'\n)\n```\n\n보기엔 JSON 과 유사해보인다.\n\n딕셔너리는 키와 값 한쌍을 갖는 데이터 집합이다.\n\n키는 중복될 수 없으며 키값이 중복되있으면 한 값만 남는데, 보통 뒤에 선언된 값이 남는다.\n\n항상 그렇다는건 아니다. 중복되게 쓰지 마세요.\n\n```\na = {\n\t'key': 'value',\n\t'key': 'value?'\n}\na\t# { 'key': 'value?' }\n```\n\n#### 주소 참조\n\n딕셔너리의 복사에 대해 이야기 해보자.\n\n딕셔너리의 복사는 2종류가 있는데 코드로 봅시다.\n\n```\na = {\n\t'key': 'value',\n\t'key2': 'value2'\n}\nb = a\ndel b['key2']\nprint a\n```\n\nprint a 의 결과값은 { 'key': 'value' } 이다.\n\n일반 대입식처럼 딕셔너리를 새로운 변수에 대입했을 경우엔 값을 복사하는게 아니고 딕셔너리의 주소를 복사하게 된다. \n\n포인터랑 비슷하다고 보면 된다.\n\n값 자체를 복사해서 새로운 딕셔너리 객체를 만들고 싶으면 copy() 내장 함수를 사용하면 된다.\n\n```\na = {\n\t'key': 'value',\n\t'key2': 'value2'\n}\nb = a.copy()\ndel b['key2']\nprint a # { 'key': 'value', 'key2': 'value2' }\nprint b # { 'key': 'value' }\n```\n\n#### 딕셔너리 제어\n\n```\na = {\n\t'key': 'value',\n\t'key2': 'value2'\n}\n# 삭제\ndel a['key']\na\t# { 'key2': 'value2' }\n```\n\n#### 반복문 적용하기\n\n딕셔너리 객체 (파이썬에선 모든것이 객체이다) 는 keys, values, items... 함수를 프로토타입으로 가지고있다.\n\n* (Dict).keys() 함수는 딕셔너리의 키들을 리스트 형태로 반환한다.\n* (Dict).values() 함수는 딕셔너리의 값들을 리스트 형태로 반환한다.\n* (Dict).items() 함수는 딕셔너리의 키,밸류 쌍을 튜플로 묶어 리스트 형태로 반환한다.\n\n```\na = {\n\t'key': 'value',\n\t'key2': 'value2'\n}\na.keys()\t# ['key', 'key2']\na.values()\t# ['value', 'value1']\na.items()\t# [('key', 'value'), ('key2', 'value2')]\n```\n\n여기서 주의해야 할 점이 있다. 이 책에선 파이썬 2버전으로 예제를 쓰고있지만 3버전 같은 경우엔 다르기 때문에 주의해야 한다.\n\n파이썬 2.7 버전 까지는 keys, values, items 함수는 리스트 형태로 반환을 했지만 3.0 버전부터는 메모리 낭비의 이유로 리스트 객체가 아닌 이터러블(반복가능)한 객체를 반환해준다.\n\n리스트는 아니기때문에 직접 접근할 수는 없지만 이터러블한 객체기때문에 반복문에 넣어도 아무 문제가 없고 메모리문제도 개선되어 성능을 향상시킬 수 있다.\n\n```\n# in python 3\na = {\n\t'key': 'value',\n\t'key2': 'value2'\n}\na.keys()\t// dict_keys(['key2', 'key'])\na.values()\na.items()\nfor key in a.keys():\n\tprint(key)\n```\n\n#### 딕셔너리 리터럴/함수 선언 방식 퍼포먼스 비교\n\n```\n$ python -m timeit \"d=dict(prop='val')\"\n10000000 loops, best of 3: 0.219 usec per loop\n$ python -m timeit \"d={'prop': 'val'}\"\n10000000 loops, best of 3: 0.075 usec per loop\n\n$ python3 -m timeit \"d = dict(prop='val')\"\n1000000 loops, best of 3: 0.475 usec per loop\n$ python3 -m timeit \"d = {'prop': 'val'}\"\n10000000 loops, best of 3: 0.143 usec per loop\n```\n\n리터럴 선언 방식이 더 빠르다.\n\n### 집합\n## 제어문\n### if\n\n```\nif condition:\n\tprint 'Oh its true'\n\ntFlag, fFlag = True, False\nif not fFlag:\t# if fFlag != True\n\tprint '!'\nelif tFlag:\t\t# else if tFlag == true\n\tprint '!!'\nelse:\n\tprint '..'\n```\n\n### while\n\n```\nwhile condition:\n\tdo_something()\n\tif condition:\n\t\tbreak\t# 반복문 종료\n\telif condition:\n\t\tcontinue\t# 현재 반복 종료 (다음 반복으로 넘어감)\n```\n\n### for\n\n```\nfor value in ITERABLE_VARIABLE:\n\tprint value\n\nfor i in [1, 2, 3, 4, 5]:\n\tprint value \n# 1\n# 2\n# ...\nd = {\n\t'key': '11',\n\t'key2': '22'\n}\nfor key in d:\n\tprint key\n# key\n# key2\nfor key, value in d:\n\tprint key, value\n```\n\n### switch\n파이썬은 공식적으로 switch/case 문을 지원하지 않는다. 이유는 잘 모르겠다\n추가 바람\n\n## 핵심 기능\n\n### 클래스, 모듈\n\n### 패키지\n\n### 예외\n\n### 익명함수 (람다)\n\n### dunder variables\n\n## 카드놀이\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmskims%2Fpython-study","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmskims%2Fpython-study","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmskims%2Fpython-study/lists"}