파이썬의 파일 읽기/쓰기 파일 읽기 f = open('literature\poem.txt', 'r' , encoding='UTF-8') open 이후의 첫 인자는 특수한 경우가 아닌 이상 상대경로로 지정해주는 것이 좋다. 두 번째 인자 'r'은 읽는다는 의미이다. 또한, encoding을 이용해서 파일이 깨지지 않게 UTF-8로 지정해주는 것이 좋다. f.read() 파일을 읽고 싶을 때는 read()함수를 사용하여 파일을 읽는다. 전체를 문자열로 반환한다. f.readline() 파일을 라인단위로 반환한다. (줄 바꿈이 일어날 때까지만 반한다.) f.readlines() 파일을 라인단위로 받지만 모든 라인을 리스트에 담아 반환한다. 항상 파일을 열고나서는 f.close()처럼 파일을 닫아주어야 한다. 파일이 계속 열려있다면 데..
python에서의 class class ClassName: => class를 ClassName으로 선언 => class의 첫 글자는 대문자로 해준다. def __init(self): => class 생성자 선언 =>def __init(self,param1,param2) 처럼 class를 만드는데 필요한 파라미터를 넣어줄 수 도 있다. self.param1 = param1 self.param2 = param2 => 할당받은 값(param1)를 class의 param1에 대입(self.param1) def study(self): => 멤버 함수의 파라미터는 self가 항상 들어가야한다. class1 = ClassName(args,args) => 클래스의 인스턴스 생성 class의 상속 class Child(Parent): => Pare..
리스트의 얕은 복사(swallow copy)와 깊은 복사(deep copy) 얕은 복사와 깊은 복사란? 얕은 복사는 복사 대상 객체의 주소를 복사하여 새로운 객체를 생성합니다. 원본 객체와 복사된 객체가 같은 메모리 주소를 공유하기 때문에 우너본객체의 변경이 복사된 객체에도 영향을 미칩니다. 깊은 복사는 복사 대상 객체의 모든 내용을 복사하여 완전히 새로운 객체를 생성합니다. 새로운 객체는 원본 객체와 다른 메모리 주소를 가지므로, 원본 객체의 변경이 복사된 객체에 영향을 미치지 않습니다. 예를 들어, 리스트의 경우, 깊은 복사를 수행하면 새로운 리스트 객체가 만들어지고, 리스트 안에 있는 객체들도 새로운 객체로 복사됩니다. 따라서 복사된 리스트 안에 있는 객체들을 수정해도, 원본 리스트 안에 있는 객체들은 수정되지 않습니다. 대입 연산자(=)와 인덱스 슬라이싱을 이용한 복사의 ..
Techit 파이썬 강의 bool 자료형 3 == 3.0 => true 3 is 3.0 => false == 연산자는 자료의 값만 비교하지만, is 연산자는 자료의 값과 자료형 모두를 비교한다. 파이썬의 리스트 list.insert(넣고자 하는 index, 값) del(list[index]) list에서의 index값 삭제 list.pop(0) list 뒤에서 0번째의 값 삭제 후 반환 = 제거와 동시에 값 반환 list.remove('리스트의 값') list에서 리스트의 값을 갖는 원소가 삭제된다. list의 마지막 값을 참조하고 싶다면 list[-1]로 참조할 수 있다. list 슬라이싱을 할 때 뒤에서 5번째 값까지 출력하고 싶다면 list[-5:]처럼 사용할 수 있다. tuple자료형 tuple은 값을 하나를 변경하는 것..
파이썬 변수 선언 시 주의사항 1. 변수 사이에 공백이 허용되지 않는다. 2. 단어 사이는 언더바( _ )를 사용하여 연결한다. 3. 변수를 선언하기 위한 문자열은 숫자/특수문자로 시작이 불가하다. 4. 예약어는 변수로 선언이 불가하다. (print self for if....등) 5. 변수는 가급적 소문자를 사용한다. 6. 오타 주의 변수 및 함수명은 스네이크 케이스( 여러 단어로 이뤄진 단어 사이를 언더바로 나누는 방 ) 클래스명 : 카멜케이스( 여러 단어가 합쳐진 이름을 지을 경우 첫 단어의 첫 글자는 소문자, 두 번째 글자부터는 첫글자를 대문자를 쓰는방법이다. ) 클래스 메소드의 첫 인자는 언제나 cls다.
파이썬 referenced before assignment 에러 이유 a = 10 def prac(): print(a) print(a) prac() 전역변수를 이용하여 a를 함수안으로 끌어와 사용할 수 있게 하였다. 하지만 다른 예제를 보자 a = 10 def prac2(): a += 10 print(a) print(a) prac2() 이 예제는 local variable 'a' referenced before assignment 에러가 나게 된다. 전의 예제에서는 a를 함수안으로 잘 끌어왔지만 prac2에서는 a+=10의 부분에서 할당이 이루어지고 파이썬이 a를 전역변수에서 가져오지 않고 새로운 지역변수의 선언이라고 알아듣기 때문에 먼저 참조가 되지 않았다는 에러가 발생하는 것이다. 따라서 위의 예제를 오류없이 하고자 하는 방향대로 코드를 작성하려면 global 선언이 ..
[파이썬] Packing 과 Unpacking packing 함수가 받을 인자의 갯수를 유연하게 지정할 수 있다면 코드를 유연하게 작성할 수 있다. 이런 경우 사용하는 것이 packing이다. ex) def func(*args): print(args) func(1,2,3,4) # (1, 2, 3, 4) => tuple 형식 packing을 이용해서 하나를 받는 매개변수와 여러개를 받는 매개변수를 구분해서 작성할 수 있다. ex) def printAnimal(cat,*dog,bird): print("cat : ",cat) print("bird : ",bird) if dog: print("dog :") for name in dog: print(name, end="") printAnimal("냥이","멍이","초코","날개") # "cat : 냥이" # ..
[파이썬] 파이썬 언더바 개념 언더바를 사용하는 상황 ● 인터프리터에서의 마지막 값 ● 무시하는 값 ● 숫자 자릿수 구분 ● 모듈 내에서만 변수/함수를 사용할 때 ● 네임 맹글링 ● 매직 메소드 1. 인터프리터에서의 마지막 값 언더바는 앞선 코드 실행의 결과가 들어가기도 한다. 2. 무시하는 값 리스트 내의 원소를 네이밍 할때 언더바를 사용하면 해당 위치의 원소는 무시하겠다는 의미이지만 언더바를 변수로 생각하고 print하면 결과가 나오긴 한다. 3. 숫자 자릿 수 구분 언더바는 숫자형 변수를 사용할 때 자릿수 구분을 위해 사용하기도 한다. print(100_000) => 100000 4. 변수/함수를 모듈 내에서만 사용하고 싶을 때 # greeting.py def hi(): print('hi') def _hello(): print(..
[파이썬] 문자열 포매팅 방법 문자열 포매팅이란? 문자열을 만들 때 원하는 위치에 특정한 값을 삽입해서 문자열을 재사용하여 출력하는 것을 의미한다. 예를 들어 구구단을 만들때 % 서식문자를 이용해 문자열을 포매팅한다고 하면 1 x 1 = 1 1 x 2 = 2 이처럼 1과 x , = 은 공통적이다 이럴 때 우리는 문자열 포매팅을 사용하여 print('1 x %d = %d' % (num,num*1)) 처럼 사용하고 num값을 반복문을 이용하여 1부터 9까지 반복하게 하면 구구단을 출력할 수 있다. 문자열 포매팅 방법에는 3가지가 존재한다. 1. % 서식문자 2. str.format 3. f-string 1. % 서식문자 ex) num = 50 s = 'my age %d' % num => 'my age 50' % 기호 뒤에는 자료형을 가리..
[파이썬] lambda 표현식의 사용 lambda 표현식은 식 형태로 되어있다고 하여 람다 표현식이라고 부르기도 한다. 람다 표현식은 함수를 간편하게 작성할 수 있어 다른 함수의 인수로 넣을 때 주로 이용하곤 한다. lambda 매개변수들: 식 처럼 사용하고 lambda로 만든 익명함수를 호출하기 위해서는 람다 표현식을 변수에 할당해주면 된다. 람다 표현식을 변수에 할당해주지 않고 lambda x: x+1 이런 식으로만 사용하게 되면 함수를 호출 할 수 없게 된다. 람다 표현식은 이름이 없는 익명함수를 만들기 때문이다. ex) a=lambda x:x+10 a(1) =>11 람다 표현식을 변수에 할당하지 않고 표현식 자체를 바로 호출하려면 람다표현식을 괄호로 묶고 다시 인수를 넣은 괄호를 붙여주면 된다 (lambda 매개변수들: 식)(인수들)..
[파이썬] dictionary의 활용 목차 0. 딕셔너리란? 1. 딕셔너리 만들기 2. 딕셔너리에 key 값과 value값 할당하기 3.. key값으로 value값 출력하기 4. value값으로 key값 출력하기 5. in, not in 활용하여 key값 찾기 6. 딕셔너리의 key 값만 출력하기 7. 딕셔너리의 value 값만 출력 하기 0. 딕셔너리(dictionary)란? 딕셔너리는 immutable한 key와 mutable한 value로 이루어진 순서가 없는 집합이다. 일반적으로 {'a' : 1, ' b' : 2 }의 모습은 띈다. 1. 딕셔너리 만들기 a={} a=dict() #빈 리스트 만들기 a = {1: 5, 2: 3} # int를 사용한 dictionary 만들기 a = {(1,5): 5, (3,3): 3} # tuple을 ..
[파이썬] 문자열에서 특정문자를 바꾸는 방법 특정 문자열 변경을 위한 str.replace() replace()는 두 개의 매개 변수를 허용하며 첫 번째 매개변수는 바꾸고 싶은 값이며 두 번째 매개변수는 바뀌어질 값이다. ex) str='hello world!' str.replace('hello','hi') str => 'hi world!' 여러 문자 변경을 위한 re.sub(), re.subn() python에서는 사용할 수 있는 정규 표현식에 대한 표현식 일치 작업이 많은 re 모듈을 가져올 수 있다. re에 있는 두 가지 함수는 sub()과 subn() 함수이다. re.sub()의 첫 번째 매개변수는 바꾸고 싶은 값이며 두 번째 매개변수는 바뀌어질 값, 세 번째 입력된 값은 작업할 문자열이다. ex) import re txt= "홍길동, 01..