본문 바로가기

프로그래머/Python

[널널한 교수의 고급 파이썬] 01-5 동적 타이핑과 정적 타이핑 01-5 동적 타이핑과 정적 타이핑 동적 타이핑 파이썬 변수의 형은 실행시에 결정된다 변수는 객체에 대해 바운드되며 객체는 임의의 형이 될 수 있다 바인팅 : 변수에 변수와 관련된 속성을 연관시키는 것 만일 한 자료형의 객체에 변수 이름 a가 할당된다면, 나중에 이 이름 a는 다른 자료형의 객체를 참조하는데 사용될 수 있다 정적 타이핑 C, C++, Java와 같은 프로그래밍 언어에서는 char a; 과 같은 선언을 통하여 참조하는 형이 고정된다. 따라서 a = 3.14;와 같이 할당 연산을 사용할 수 없다 이러한 종류의 타이핑(자료형 결정 방식)을 정적 타이핑이라 한다 정적 타이핑 언어는 변수의 자료형이 컴파일할 때 결정된다 더보기
[널널한 교수의 고급 파이썬] 01-4 다차원 리스트의 참조 다차원 리스트를 만들어 보자 1 : board = [[0] * cols] * rows 2 : board = [[0] * cols for _ in range(rows)] 1번이 더 빠른 이유는 객체의 수도 적고 참조도 적게한다 board = [[0] * 3] * 3 print(board) board[0][0] = 1 print(board) #[[1,0,0],[1,0,0],[1,0,0]] board = [[0] * 3 for _ in range(3)] print(board) board[0][0] = 1 print(board) #[[1,0,0],[0,0,0],[0,0,0]] 더보기
[널널한 교수의 고급 파이썬] 01-3 할당, 얕은 복사와 깊은 복사 01-3 할당, 얕은 복사와 깊은 복사 파이썬 리스트 리스트는 변경가능(mutable) 자료형이다 객체 a를 다른 객체 b에 할당할 때(즉 b=a 연산) 데이터의 복사가 발생하지 않는다(효율성의 증대) (리스트, 정수형 등 모든 자료형) a = [1,2,3] b = a # 단순 할당(참조가 이루어지며, 사본을 만들지 않음) print(b) # [1,2,3] assert(id(a) == id(b)) b.append(4) # 리스트는 변경가능(mutable) print(a) # [1,2,3,4] a = [1,2,3] b = a[:] # 얕은 복사 b.append(4) print(a) # [1,2,3] print(b) # [1,2,3,4] 깊은 복사 vs 얕은 복사 얕은 복사와 깊은 복사의 차이점은 리스트나 .. 더보기
[널널한 교수의 고급 파이썬] 01-2 리스트 요소는 참조형이다 01-2 리스트 요소는 참조형이다 리스트 파이썬의 리스트는 타 언어의 배열과 비슷해 보인다 하지만 하나의 리스트에 서로 다른 자료형의 항목을 포함할 수 있다(리스트, 딕셔너리 등을 포함할 수 있다) elemets are references 리스트 요소는 참조형이다 # 리스트 객체 생성 a = [100, "two hundred", 300] 리스트 요소의 재할당 # 리스트 객체 생성 a = ["one", "two", 3, 4] # 리스트 요소의 재할당 a[1] = 2 리스트 요소의 추가 # 리스트 객체 생성 a = [1, 2, 3, 4] # 리스트 객체의 변경(mutating) a.append(5) 리스트의 덧셈과 재할당 # 리스트 객체 생성 a = [1, 2, 3, 4] # 리스트 객체의 재바인딩(rebi.. 더보기
[널널한 교수의 고급 파이썬] 01-1 파이썬 자료형과 참조 변수 01-1 파이썬 자료형과 참조 변수 Everything is an object 파이썬은 객체지향 프로그래밍 언어이다 파이썬은 객체가 중심이 되며, 참조 변수를 통해 객체에 접근할 수 있다 C 언어는 변수가 생성되고 변수에 값이 저장되는 구조이다 자료형 파이썬은 정수형, 실수형, 복소수형, 문자열, 리스트 등의 다양한 자료형이 있다 자료형에 따라서 지원하는 연산자가 다르며 메소드들도 다르다 사용자의 필요성에 따라 적절한 자료형을 선택하여 사용한다 정수 객체와 변수 정수형 객체가 있으면 이 객체에 연산자를 적용하여 연산을 수행할 수 있다 변수에 데이터를 보관하고 필요할 때 참조하면 편리하다 모든 객체는 고유한 id를 가진다 a = 100 print(id(a)) # 4324024528 print(id(100).. 더보기
[Effective Python 복습] Chapter 5. 병행성과 병렬성 21. 키워드 전용 인수로 명료성을 강요하자 키워드 인수는 함수 호출의 의도를 더 명확하게 해준다 특히 불 플래그를 여러 개 받는 함수처럼 헷갈리기 쉬운 함수를 호출할 때 키워드 인수를 넘기게 하려면 키워드 전용 인수를 사용하자 파이썬3는 함수의 키워드 전용 인수 문법을 명시적으로 지원한다 리스트에 있는 * 기호는 위치 인수의 끝과 키워드 전용 인수의 시작을 기리킨다 def safe_division_c(number, diviser, *, ignore_overflow=False, ignore_zero_division=False): # ... safe_division_c(1, 10**500, True, False) # TypeError safe_division_c(1, 0, ignore_zero_divisi.. 더보기
[Effective Python 복습] Chapter 4. 메타클래스와 속성 파이썬 코딩의 기술 Chapter4. 메타클래스와 속성 - 메타클래를 이용하면 파이썬의 class문을 가로채서 클래스가 정의될 때마다 특별한 동작을 제공할 수 있다 - 또 하나의 강력한 기능은 속성 접근을 동적으로 사용자화하는 파이썬의 내장 기능이다 - 동적 속성은 객체들을 오버라이드하다가 예상치 못한 부작용을 일으키게 할 수 있다 - 최소 놀랍 규칙을 따르자 29. getter와 setter method 대신에 일반 속성을 사용하자 간단한 공개 속성을 사용하여 새 클래스 인터페이스를 정의하고 setter와 getter method는 사용하지 말자 객체의 속성에 접근할 때 특별한 동작을 정의하려면 @property를 사용하자 @property method에서 최소 놀람 규칙을 따르고 이상한 부작용은 피하.. 더보기
[Effective Python 복습] Chapter 3. 클래스와 상속 파이썬 코딩의 기술 Chapter3. 클래스와 상속 22. 딕셔너리와 튜플보다는 헬퍼 클래스로 관리하자 다른 딕셔너리나 긴 튜플을 값으로 담은 딕셔너리를 생성하지 말자 정식 클래스의 유연성이 필요 없다면 가변운 불변 데이터 컨테이너에는 namedtuple을 사용하자 내부 상태를 관리하는 딕셔너리가 복잡해지면 여러 헬퍼 클래스를 사용하는 방식으로 관리 코드를 바꾸자 class WieghtedGradebook(object): def __init__(self): self._grades = {} def add_student(self, name): self._grades[name] = {} def report_grade(self, name, subject, score, weight): by_subject = se.. 더보기
[파이썬] 파이썬 정리 for me (feat. FastCampus) ###파이썬 간단 정리 본 내용은 패스트캠퍼스 파이썬 기초 내용을 요약정리한 것입니다. 텍스트 입력에서... **python** is really *cool* - python - pandas - depth1 - depth2 - numpy - java - c++ - golang 1. python 2. java 3. c++ > 파이썬은 재밌다고 하더라... $y = 3x$ 위아래 ```을 붙이면 코드 형태로 출력 a = 10 print(a) 링크 만들기 [파이썬 공식 페이지] https://www.python.org [파이썬 공식 페이지] https://www.python.org 함수의 이해 및 활용, 기본 파라미터, 키워드 def add(x,y): n = x+y return n 파라미터가 필요 없는 경우 .. 더보기
Python - 문법 함수 | 생활코딩 강의 복습 | 프로그래밍 공부 * 이 포스팅은 생활코딩 강의를 들으며 내용을 정리한 것이며, 모든 내용은 https://opentutorials.org/ 에서 보실 수 있습니다.* 이번에 다룰 함수는 여러가지 기능이 있지만,장황한 코드를 정리정돈하는 수단이 그 기능 중 하나이다. 평균 함수를 구현해보자.def function():의 식으로 구현이 된다.def average(): 함수를 만들고,average() 으로 실행을 해주면, 평균이 구현이 된다. 입력 값은 수시로 바뀔 수 있다.따라서 조금 더 편하게 함수를 구현하기 위해, 입력 값을 같이 넣어줄 수 있다.def average(a,b,c): 10, 20, 30의 입력 값을 넣어주면출력 결과가 잘 나온다. 위에서 만드는 함수는 출력하는 일까지 담당하고 있었다.하지만 함수는 한 가지.. 더보기