본문 바로가기

파이썬35

[파이썬의 기본] 마술 함수(?) 매직 메소드 (Magic Methods ) Magic Methods 매직 메소드는 함수이름 앞과 뒤에 언더스코어(_) 두개가 연속으로 붙어있는 함수를 말합니다. 그러니까 “__name__” 이런식의 형태인데 앞에서 클래스를 예기하면서 컨스트럭터 매소드인 “__init__” 이 그런형태를 취하고 있었습니다. 이런 형태의 마법함수는 파이썬에서 그 이름을 미리 지정해 둔 사저예약함수들도 그 기능이 정해져 있습니다. 사용법 이런 마법함수는 어떤때 사용할까요? 먼저 가장 일반적인 용도는 오퍼레이터의 오버로딩용입니다. 오버로딩이라는 단어에 익숙하신 분들은 그 의미를 금새 알아차리실 수 있을텐데요. 저는 아직 초보라 예제를 보고나서 이해를 했습니다. 얼른 예제를 보겠습니다. 예제: class coordinate: def __init__(self, x, y):.. 2019. 6. 24.
[파이썬의 기본] 파일에서 읽고 쓰기 파일 읽기 파일내용을 읽어오고 파일에 어떤 내용을 저장하기위해서는 우선 파일을 열어주는 과정이 필요합니다. 그리고 사용이 끝나면 파일을 닫아주는 절차까지 마쳐야 합니다. 그렇지 않으면 다른 프로그램에서 그 파일을 접근해서 수정하거나 하지 못하거든요. 바로 코드를 보겠습니다. 예제: f = open("file.txt", "r") file = f.read() print(file) f.close() 이 예제는 “file.txt”에 포함된 모든내용을 화면에 출력해줍니다. 첫줄에서 open()이라는 함수를 이용해서 파일을 읽기전용(r)으로 연다음 “f”이라는 객체로 만들어 주었습니다. 그리고 read()함수를 사용해서 파일 내용을 읽어왔습니다. 파일을 열때 open()함수의 두번쩨 인자로 "r" 옵션이 사용되었는.. 2019. 5. 24.
[파이썬의 기본] 클래스의 상속 클래스의 상속 상속은 클래스들 간에 기능을 공유하는데 사용되는 방법입니다. 예를 들어, 조종사(Pilot)와 의사(Doctor)라는 직업을 가진 사람을 클래스로 표현한다고 생각해봅시다. 조종사는 날아다니고(fly) 의사는 치료(cure)를 하는 전혀 다른 직업의 사람이지만 두 사람 모두 이름이나 나이와 같은 일반적인 속성도 가지고있는 사람이라는 공통점이 있습니다. 이런 경우를 클래스로 표현한다고 하면 다음과 같이 표현할 수 있습니다. 예제: class Person: def __init__(self, name, age): self.name = name self.color = age class Pilot(Person): def job(self): print("I can fly") class Doctor(Pe.. 2019. 5. 24.
[파이썬의 기본] 클래스(Class) 클래스는 객체지향 언어의 대표적 특징이라고들 많이 얘기하는데요. 당연히 파이썬에서도 클래스를 원하는 객체지향프로그램 언어입니다. class c++과 마찬가지로 파이썬에서도 class란 키워드를 사용해서 클래스를 정의하고 클래스 내부에는 매소드라고 부르는 함수로 구성됩니다. 클래스의 형태는 다음과 같습니다. 예제: class chair: def __init__(self, color, legs): self.color = color self.legs = legs table = chair("red", 4) desk = chair("white", 4) print(table.color) 결과: 이 예제는“chair”라는 이름의 클래스가 “color”, “legs”라는 두개 속성을 가지고 있는것으로 정의되었고, “t.. 2019. 5. 22.
[파이썬의 기본] 예외처리 (try, except, finally, raise) try, except 명령 예외는 어떤 예기치 못한 문제가 발생했을 때 발생하는 에러 메시지 같은 겁니다. 이런 예외가 발생하면 파이썬 프로그램은 중단됩니다. 이렇게 원치 않는 프로그램 중단을 방지하기 위해서는 적절한 예외처리가 필요한데 “try”, “except”가 바로 그때 사용하는 명령어입니다. 예제: try: var1 = 9 var2 = 0 print (var1 / var2) print("complete") except ZeroDivisionError: print("I can’t divide by ZERO") 위 예제는 크게 “tyr” 블럭과 “except” 블럭으로 나누어져 있습니다. “try” 블럭에서 변수를 2개 생성해서 각각 9와 0을 할당하고 이를 나눈 결과값을 출력하고 곧이어 “comp.. 2019. 4. 24.
[파이썬의 기본] 함수에 사용되는 특별한 기능 - 맵 & 필터(map & filter) 맵, 필터 함수는 리스트와 같은 반복 구조형을 더 다양하게 사용할 수 있도록 도와주는 파이썬 내장함수입니다. 맵(map) 맵은 함수와 이터러블(iterable)을 매개변수로 받고 함수에 이터러블내 맴버 각각을 차례대로 적용한 새로운 이터러블을 반환하는 기능을 수행합니다. 예제: def add_five(x): return x + 5 nums = [11, 22, 33, 44, 55] result = list(map(add_five, nums)) print(result) 결과: 맵 함수가 하는 기능은 람다함수를 이용해서 더 간단히 표현할 수도 있습니다. (람다에 대한 내용은 지난포스팅([파이썬의 기본] 함수에 사용되는 특별한 기능 - 람다(lambda) 함수)에서 확인해주세요.) nums = [11, 22, .. 2019. 4. 24.
[파이썬의 기본] 함수에 사용되는 특별한 기능 - 제너레이터(Generator) 제너레이터(Generator) 제너레이터는 리스트, 튜플과 같은 반복되는 구조의 형태인 이터러블(iterable)의 한 종류인데 함수와 “yield”구문을 사용하여 생성할 수 있습니다. 리스트와는 달리 제너레이터는 임의의 인덱싱이 불가하지만 for 루프를 통해서 반복연산은 가능합니다. 예제: def countdown(): for i in range(3): yield i print(list(countdown())) 결과: “yield” 키워드는 함수의 “return”키워드 대신 사용되는데, 지역변수인 결과값을 소멸시키지 않고 함수를 호출한 caller에게 반환합니다. 위의 예제에서 처럼 유한한 요소를 가진 제너레이터는 “list”함수를 이용해서 리스트형으로 변환도 가능합니다. 끝! 2019. 4. 24.
[파이썬의 기본] 함수에 사용되는 특별한 기능 - 람다(lambda) 함수 람다(Lambdas) 함수 람다함수는 개념적으로는 익명의 함수로 사용즉시 버리는 일시적인 함수이다(?)라고 하는데요. 무슨소리인지 잘 이해가 안가지만 기억할 만한것은 익명의 함수라서 함수 이름조차 없이 사용할 수 있고 그리고 일시적으로 사용하는 함수라서 런타임에 사용가능한 장점이 있는 그런 함수 정도로 개념을 잡고 시작하면 되지 않을까 싶습니다. 이것도 뭔말인가 싶네요 ㅎ “def” 키워드를 사용해서 만드는 일반적인 함수의 생성은 보통 자동적으로 변수에 할당이 됩니다. 정수나 문자열 같이 변수에 할당하는 절차없이 생성할 수 있는 객체들과 다른점인데 “lambda”구문을 이용하면 함수에서도 똑같이 사용할 수 있고 이런 방식을 익명함수라고 한다고 합니다. 이런 방법은 간단한 함수를 다른 함수의 매개변수로 전.. 2019. 4. 24.
파이썬(Python) GUI 프로그래밍의 기본 (PyQt5 Dialog & Main Window 사용) 지난 포스팅에서 Python GUI프로그래밍의 묻지마 튜토리얼을 다룬적 있었습니다. PyQt5로 Python GUI 프로그래밍 시작하기 - Hello World! 출력 Hello world!, 모든 언어의 시작점이죠 지난글에서 준비해둔 파이썬 GUI 개발환경에서 Hello World 출력하기를 실습해 보겠습니다. 새 파이썬 프로젝트 생성 VS를 열어서 새로운 프로젝트를 생성합니다. 파이썬.. kwonkyo.tistory.com 그때는 저도 파이썬의 문법을 하나도 몰랐고 개념도 없었기 때문에 그냥 그런가 보다 했었는데요. 조금 공부를 해보니 코드의 의미가 보이기 시작해서 더 늦기전에 Pyqt5를 사용한 윈도우즈 프로그램의 소스구성에 대한 기본적인 내용을 다루어 보려 합니다. (이미 늦었고 아직도 이해안되는.. 2019. 4. 19.
[파이썬의 기본] 튜플(Tuples) 튜플(Tuples) 파이썬의 또다른 구조체 튜플(Tuples)에 대해서 알아보겠습니다. 튜플은 리스트와 유사한데 몇가지 차이점이 있습니다. 그중 하나가 바로 생성된 이후에는 변경이 안된다는 점입니다. 리스트는 요소를 변경하거나 추가나 삭제가 가능하지만 튜플은 불가능합니다. 그리고 리스트는 대괄호( [, ] )로 표시하지만 튜플은 괄호 ( (, ) )로 표시를 하거나 괄호없이 쉼표(,)로 분리된 요소들로만 표현할 수도 있습니다. 예제: >>> words=(“spam”, “eggs”, “sausages”) >>> print(words[0]) ‘spam’ >>> words=“spam”, “eggs”, “sausages” >>> print(words[0]) ‘spam’ >>> 튜플이 변경은 되지않지만 속도가 리.. 2019. 3. 21.
[파이썬의 기본] 사전(Dictionaries) 사전(Dictionaries) 파이썬의 구조체 사전(Dictionaries)에 대해서 알아봅시다. 사전은 임의의 키값을 데이터와 매핑시킬 때 사용하는 구조체입니다. 리스트와 특징을 비교해 보자면, 리스트는 키값과 데이터가 매칭되어 있는 구조는 동일한데 키값이 0부터 차례대로 1씩증가하는 정수로만 이루어져 있는 것이고 사전은 이 키값이 순차적인 정수값이 아니라 사용자가 임의로 정할수 있다는 것입니다. 사전을 생성하기 위해서는 중괄호( {, } )를 사용하고 콜론( : )으로 키값과 데이터를 연결시켜줍니다. 예제: >>> dic={“apple”:”사과”, ”boy”:”꼬마”} >>> print(dic[“boy”]) 꼬마 >>> 그리고 리스트와 동일한 방법으로 사전의 요소는 새로운 값으로 대체할 수 있습니다... 2019. 3. 21.
[파이썬의 기본] 레인지(range) 레인지(range) 레인지는 연속된 숫자로 이루어진 객체를 만드는 함수 입니다. 다음과 같이 range라는 키워드 다음에 매개변수로 총 3개까지 입력을 받는데 첫번째와 세번째가 생략가능한 형태로 사용될 수 있습니다. 구문: range(param1, param2, param3) param1: 레인지의 시작범위를 지정하는 매개변수 (0일때는 생략가능) param2: 레인지의 마지막 범위를 지정하는 매개변수 (지정된 숫자 바로앞까지 레인지를 생성) param3: 레인지의 간격을 지정하는 매개변수 (생략하면 기본값 1로 처리) 예제: >>>print(list(range(0,3))) [0, 1, 2] >>>print(list(range(3))) [0, 1, 2] >>>print(list(range(3,10,2)).. 2019. 3. 21.
[파이썬의 기본] 함수(Function) 함수 함수는 어떤 기능을 하도록 구현한 코드들의 묶음으로 필요에 따라 함수이름만 가지고 호출해서 사용할 수 있습니다. 그래서 이 함수를 만들어서 코드를 잘 정리하면 가독성도 좋아지고 유지보수에도 도움이 됩니다. 파이썬의 함수도 다른 언어들과 마찬가지로 함수의 선언과 호출로 사용하고 파라미터와 반환값을 주고받습니다. 함수의 선언 함수를 만드는 방법입니다. “def”라는 키워드를 사용합니다. 그뒤어 사용할 함수의 이름, 괄호, 콜론(:)을 차례로 적어어서 함수의 언선이 시작되는 부분임을 표시합니다. 함수는 코드의 덩어리가 묶여있는 형태이기 때문에 함수의 단락이 이어지고 있음을 표시해야 겠죠. C언어에서는 중괄호( {, } )를 이용해서 함수단락의 시작과 끝을 표시하는데 반해, 파이썬은 단순히 들여쓰기로만 표.. 2019. 2. 28.
[파이썬의 기본] 반복문(while, for) while while문은 주어진 조건이 참이면 계속 반복해서 코드를 실행하도록 하는 명령어 입니다. 그러다가 조건이 거짓이 되면 while 루프를 빠져나가서 그다음 코드를 계속 실행하게 됩니다. 예제: i=1 while i=0: i=i+1 if i==2: print(“Skip”) continue if i==5: print(“Break”) break print(i) print(“Finish”) 결과: for 리스트나 레인지처럼 한정된 범위내에서 반복을해서 작업을 수행해야 할 경우에 사용할 수 있는 명령어 입니다. 예제: words = ["hello", "world", "spam", "eggs"] for word in words: print(word + "!") for i in range(5): print(.. 2019. 2. 28.
[파이썬의 기본] 분기문 (if, elif, else) 분기문 “if”, “elif”, “else” 구문에 대한 설명입니다. 조건의 참 거짓 여부에 따라서 프로그램 실행방향을 결정하는 구문입니다. 이역시 컨셉은 C++이나 기타 언어와 동일합니다. 파이썬의 특징이라고 한다면 다중조건의 분기를 만들때 elif라는 키워드를 사용합니다. C++의 “else if”와 같은 역할을 하는데 이마저도 줄여서 사용하네요. 요즘 인싸들은 줄임말을 많이 사용하던데 역시 파이썬은 인싸들의 언어였네요. ㅋ 예제를 보죠. 예제: x = 1 if x==1: print("One") elif x==2: print("Two") else: print("Three") 예제는 if로 첫번째 조건을 확인하고 elif문으로 2번째 조건을 확인합니다. 그리고 마지막으로 조건1과 조건2 어느것에도 속하.. 2019. 2. 26.