-
[Python]_41일차_06.16프로그래밍/Python 2021. 6. 17. 22:27
본 내용은 '2021년 혁신성장 청년인재 집중양성 사업'의 ‘인공지능 개발자 양성 과정’
강좌를 수강하면서 강의 및 강의노트를 참고하여 작성한 내용입니다.
Links
이미 다른 프로그래밍 언어를 사용할 줄 아는 경우라면 빠르게 훑어보세요
Learn X in Y minutes Where X=Python
궁금한 내용 스크랩
Why did Pinterest move from Django to Flask.
Python 의 특징
- 동적 타이핑
- 인터프리터식
- 객체 지향
- 변수 선언 방식 : reference 방식이다
- 모든 것을 객체로 생성해서 주솟 값을 받도록
- 개발자끼리에서의 변수 선언 방식
- snake case 방식이 기본이다
왜 파이썬을 사용하는가?
- 파이썬은 절차적 프로그래밍 언어 처럼,
객체지향 프로그래밍 언어 처럼,
functional way 처럼 사용할 수 있다 - 인터프리터 ( line by line 으로 실행)
Web Development
- Frameworks (이미 많은 기능이 구비되어 있는 방식)
- Django
- Pyramid
- Micro-Frameworks (필요한 게 있으면 붙여서 사용하는 방식)
- Flask
- Bottle
Seaborn 이란
- matplotib 기반의 시각화 라이브러리
PEP 8 (파이썬 코딩 컨벤션)
Linux
- 운영체제가 아니다. 커널이다
- 커널은 하드웨어를 제어하기 위한 것이다
- 새로운 하드웨어가 나옴에 따라서 계속해서 커널도 업데이트 되어야 한다
- 커널은 하드웨어를 제어하기 위한 것이다
Linux(커널) (상업적 이용가능. But 소스코드 공개 해야함)
- 배포판
- Redhat
- CentOS
- Fedora
- Oracle Linux
- Debian
- Ubuntu
- Redhat
개발환경
Python Development Kit
- Python Development Kit
- Python Distributions (파이썬 진영에서 만든 배포판)
- Anaconda
실행하기
anaconda 설치
- PATH 옵션 체크하기
특정 폴더에서 Jupyter notebook 실행하기
(특정 폴더가 자동으로 경로 설정됨)- 자신의 work space 폴더에 들어간다
- shift + 오른쪽 마우스 → Open powershell ..... 클릭
- 명령 프롬프트 창에서 jupyter notebook 타이밍 → 엔터
자동 jupyter notebook 실행 방법
- bat 배치파일 생성
- 내용 : jupyter notebook
Jupyter notebook 단축키
- 바로가기
Type Hints
https://www.daleseo.com/python-mypy/ - 정적 타입 검사 도구, Mypy
파이썬의 동적 타입 처리 (자동으로 자료형을 설정해주는 기능) But, 애플리케이션이 규모가 커지게 되면 이러한 파이썬의 다이나믹함이 치명적인 버그로 이어질 확률이 높아지게 되며 애플리케이션 안정성에 위험 요소가 되기도 합니다.
x : int = 5 y : str = "Hello world!" # 정적 타임 처리 한 것 (자료형을 명시) # 여러분들의 코드를 튼튼하게 # 그냥 프로그램을 실행하면 자료형이 달라도 실행이 된다 -> Mypy로 타입 검사 가능 -> 파이썬 인터프리터가 잡지 못하는 타입 버그를 쉽게 찾을 수 있다
""", ''' 의 기능 ↔ 다중 주석 처리 / 값
""" hi """ # 주석 효과 a = """ hi """ print(a) # hi (값으로 할당될 수 있다는 의미)
Q.
->
는 반환 타입을 말하는 건가 ? 없어도 되는 건가?- 반환 타입을 명시할 때 사용한다
- 없어도 된다
def abc(result) -> None: # 아무것도 반환하지 않는다(void) result
값 비교 - 객체 비교 (
is
↔==
의 차이)is는 변수가 같은 Object(객체)를 가리키면 True ==는 변수가 같은 Value(값)을 가지면 True a = [1, 2, 3, 4] # Point a at a new list, [1, 2, 3, 4] b = a # Point b at what a is pointing to b is a # => True, a and b refer to the same object b == a # => True, a's and b's objects are equal b = [1, 2, 3, 4] # Point b at a new list, [1, 2, 3, 4] b is a # => False, a and b do not refer to the same object b == a # => True, a's and b's objects are equal
변수에 다중 값 할당 (Assign Multiple)
x, y, z = "Orange", "Banana", "Cherry" x = y = z = "Orange" fruits = ["apple", "banana", "cherry"] x, y, z = fruits
Global Variable 전역 변수
- 함수의 실행이 끝난 다음에도 없어지지 않는다
x = 10 # 전역 변수 def foo(): x = 20 # x는 foo의 지역 변수 print(x) # foo의 지역 변수 출력 foo() print(x) # 전역 변수 출력 ''' 겉으로 보기에는 foo 안의 x는 전역 변수인 것 같지만 실제로는 foo의 지역 변수입니다. 즉, 전역 변수 x가 있고, foo에서 지역 변수 x를 새로 만들게 됩니다. 이 둘은 이름만 같을 뿐 서로 다른 변수입니다. ''' x = "awesome" def myfunc(): global x # x 라는 변수를 전역 변수로 사용하겠다고 설정 x = "fantastic" myfunc() print("Python is " + x)
네임스페이스
- 파이썬에서 변수는 네임스페이스(namespace, 이름공간)에 저장됩니다. 다음과 같이 locals 함수를 사용하면 현재 네임스페이스를 딕셔너리 형태로 출력할 수 있습니다.
locals()
함수
내장 데이터 타입
바로가기
Set (세트)
집합을 표현하는 세트(
set
)도 있습니다.>>> fruits = {'apple', 'banana', 'orange'}
세트는 원소의 순서가 유지되지 않고 중복 원소를 갖지 않는 ‘집합’으로서의 특징이 있으며, 집합 연산을 사용할 수 있습니다.
군집 자료형 - str
str은 문자열을 위한 자료형입니다.
순서가 있고(인덱스 기반 접근),
중복이 가능하며,
수정이 불가능(Immutable)한 특성을 가집니다.
s1 = "Hello, Python1" //str 변수 s2 = 'Hello, ' + 'Python2' print(type(s1)) print(len(s1)) # s1의 길이 출력 print(s1[2]) # s1의 2번째 인덱스 값 출력 print(s1[2:5]) # s1의 2 이상 5 미만 인덱스 값 출력 s2[2] = a # 에러 발생!, 값 수정 불가 #출처: https://artist-developer.tistory.com/22 [개발자 김모씨의 성장 일기]
군집 자료형 - tuple
tuple 자료형은 변경 불가능한 list 자료형*으로 생각하시면 쉽습니다.
순서가 있고(인덱스 기반 접근),
중복이 가능하며,
수정이 불가능(Immutable)한 특성을 가집니다.
t = (10, 20, 30, 50, 40, 10, 10) print(t.count(10)) # 값 10의 갯수 print(t.index(20)) # 값 20의 index
Random 모듈, Random 함수
random() 함수
random number generator 을 실행하기 위한 함수이다.
기본 random number generator 은 현재 시스템 시간을 사용한다
random.seed() random.seed(a, version)
문자열 체크
txt = "The best things in life are free!" print("free" in txt) txt = "The best things in life are free!" if "free" in txt: print("Yes, 'free' is present.")
f 문자열 포매팅 (f-string)
# You can also format using f-strings or formatted string literals (in Python 3.6+) name = "Reiko" f"She said her name is {name}." f"{name} is {len(name)} characters long." # => "Reiko is 5 characters long." # python 방식 print(f"She said her name is {name}." ) # java 방식 system.out.println("she said her name is " + name);
3항 연산자
xxx if 조건문 else yyyy ex) "yay!" if 0 > 1 else "nay!"
문자열 함수 목록
- 바로가기
인덱스 리턴 함수 (
find()
,index()
)- find() 함수
- index() 함수
슬라이싱 (몰랐던 것)
li[::2] # Return list selecting every second entry => [1, 4] li[::-1] # Return list in reverse order => [3, 4, 2, 1] [ : : ] 첫번째: 시작점 / 두번째: 끝점 / 세번째: 건너뛰는 값 # 두번째 마다 반환 # 반대 순서대로 반환 li2 = li[:] # => li2 = [1, 2, 4, 3] but (li2 is li) will result in false. # li의 값이 li2에 동일하게 할당되겠지만, 같은 객체를 가리키지 않는다 (새로운 객체가 생성된다)
특정 요소 제거
del 키워드 (예약어)
- 인덱스를 이용하여 해당 요소를 삭제하는 방법
remove 함수
- 값으로 해당 요소를 삭제하는 방법
del li[2] # li is now [1, 2, 3] # 인덱스 2에 위치한 값을 제거한다 li.remove(2) # li is now [1, 3] # 값이 2인 요소를 제거한다
isinstance() 함수 - 특정 클래스/데이터 타입 검사
사용 :
isinstance(인스턴스, 클래스/데이터타입)
[Python] 파이썬 자료형 확인하는 isinstance 함수
딕셔너리 인덱싱 가능
- 리스트로 형변환 해야 인덱싱 가능
dict_a = {"a":3, "b":5} a = list(dict_a) a[1] # 'b' 반환
List - Tuple - Set - Dictionary 비교
[Python] List(리스트) vs Tuple(튜플) vs Set(셋) vs Dictionary(딕셔너리)
소스코드 많이 있다
[Python] 리스트(list)와 튜플(tuple) 그리고 딕셔너리(dictionary), 셋(set)
관련 함수
[Python] Chapter 3. 파이 채우기: 리스트, 튜플, 딕셔너리, 셋
질문
dir() 해서 목록들이 나오는데
_xxx
__xxx
이런 것들은 무엇을 의미하는가?- 히든 메소드 (클래스 부분에서 등장할 예정)
- dunder method
jupyter notebook ↔ google colab 차이
jupyter notebook
각자의 pc의 환경에서 구동하는 것
google colab
google 클라우드 환경에서 구동하는 것
웹 백엔드 (java ↔ python)
스타트업이나 새로 시작하는 기업들은 파이썬 웹프레임워크를 많이 사용하고 있다
기존에 많은 기업들이 java를 활용하였기 때문에 계속 java를 사용하고 있다python 웹프레임워크
Django - Flask
- Django :
- Flask : 급속도로 성장하고 있다. micro-web framework 라고 기능적으로 부족한 것이 아니다
'프로그래밍 > Python' 카테고리의 다른 글
Lambda 함수 (0) 2021.06.20 [오류, 스크랩] Github Sorry, something went wrong. Reload? 오류 해결 방법 (0) 2021.06.08 [python][flask] 웹서버 - 다중 페이지 구현하기 (0) 2021.01.15 [python][flask] 파이썬 + 플라스크로 웹서버에서 hello world 출력하기 (0) 2021.01.14 [Python] sqlite3 + python 데이터베이스 연동하기 (0) 2020.12.30