기초 파이썬_2

우주먼지·2020년 7월 7일
0

인공지능 사관학교

목록 보기
2/15

기초 파이썬

함수

함수를 사용하는 이유는 반복된 작업을 하나의 유닛으로 묶어서 재사용이 가능하게 하기 위함이다. 이를 통해 프로그램의 흐름이 깔끔하게 정리가 가능하다.

모율은 외부에 저장된 함수이며, import후 사용가능하다. numpy, pandas등이 있다.

그 외에 사용자 정의함수가 있다.

 sum = 0
 def increase():
	global sum
    for i in range(11):
    	sum += i

increase()
sum

55
global을 사용하여 변수를 전역변수로 지정해준다.
'return 반환값'은 옵션이다. indentation(들여쓰기)를 적용해 주어야한다.
분석에서 반복문이나 사용자 정의 함수를 쓸일은 별로 없다.

분석가는 있는 분석툴을 가져다가 잘 조합하여 사용하는 사람이다. 하지만 딥러닝은 있는 것을 가져다가 레고조각 조립하듯이 잘 맞춰서 사용해야한다.
해주는 함수가 있는지를 먼저 알아보고 찾아본 후, 직접 지정해서 사용해라.

def sum(*vals):
	total = 0
    .
    .
    .
    return total
sum(1, 2, 3)

인수 앞에 * 를 붙여주면 튜플로 입력된다. 즉, 정해지지 않은 인수를 전달할 수 있다.

def sachik(a=2, b=1):
	return a+b, a-b, a*b, a/b
sachik(4, 2)
sachik(b=3)

(6, 2, 8, 2)
반환값이 여러개인경우 ,로 구분하여 주며 튜플의 형태로 반환한다.
(5, -1, 6, 1)
a=2와 같이 초기값을 지정해줄수있으며, 원하는 값만 인자로 입력하고 싶을때는 변수명과 같이 입력해주면 된다. 이경우 인자의 순서는 중요하지 않게 된다. 이는 인자값이 많은 경우, 내가 필요한 인자값만 새롭게 설치해주고, 나머지는 default값으로 사용한다. 구글링을 통해 함수의 파라미터의 default값이 뭔지를 알아보는 것이 좋다.

람다함수(lambda function)

def makeMyFunc(a):
	return lambda x:a*x
 myFunc = makeMyFunc(3)
 type(myFunc)
 myFunc(4)

function
12
이름이 없는 함수를 람다 함수라 하며, myFunc에 makeMyFunc()를 대입하여 myFunc를 함수로 사용하는 것이다.

모듈

다른 프로그램에서 불러서 쓸수 있도록 함수, 변수 또는 클래스를 모아놓은 파일이다.
모듈이 모이면 패키지, 패키지가 모이면 라이브러리.

import module1 as md1
md1.sum(3, 4)

7
module1을 가져와서 md1이라는 이름으로 사용한다.

입력과 출력

입력은 input, 출력은 print 함수를 사용한다.

f = open('new_file.txt', 'w')
f.close()

파일을 열고 닫는 방법이다. w는 쓰기, r은 읽기, a는 추가모드이다.

f = open('mt_file.txt', 'r')
all = f.read()
print(all)
while True:
  line = f.readline()
  if not line:break
  print(line)
f.close()

read를 통해 파일의 모든 내용을 한번에 읽는다. readline()은 한번에 한줄씩만 읽어온다.

f = open('my_file.txt', 'w')
r.write('This is a new line')
f.close()

with open('my_file.txt', 'a') as f:
	f.write('This is a the added line #1 \n')

위에 코드는 일반적인 쓰는 방법이나, 밑에 코드와 같이 입력하면 close가 필요없다.

클래스와 객체

class Dog:
	def __init__(self, name, age):
    	self.name = name
        self.age = age
        print('A Dog object is created!')
    def __del__ (self):
    	print('A Dog object is deleted!')
    def bark(self):
    	print(self.name + 'is barking... mung... mung')
dog1 = Dog('Baduk', 2)
del dog1

A Dog object is created!
A Dog object is deleted!
클래스의 이름은 대문자로 시작한다. 생성자(init)메소드에는 self라는 인자를 꼭 넣어주어야하며 객체 생성시 초기화를 위해 사용한다. (del)소멸자 메소드는 객체 소멸시 실행되는 메소드 이다.

dog1 = Dog('Baduk', 2)
dog2 = Dog("Sundol", 3)
Dog.counter

dog1.bark()

2
Baduk is barking.... mung... mung...
클래스는 어디간에 속하지 않아서 클래스 함수를 사용할 때는 클래스 자체에 적용해주어야한다. 괄호가 있으면 멤버메소드이고, 괄호가 없으면 클래스 함수이다.

상속

clas Pet:
def __init__(self, name):
	self.name = name

class Cat(Pet):
	def meow(self):
    	print(self.name + 'is meowing...')
class Dog(Pet):
	def bark(self):
    	print(self.name + 'is barking...')

Pet이라는 클래스를 Cat, Dog클래스가 상속받고 있다.

예외 처리

프로그램의 실행 도중 오류 발생시 흐름을 조정하는 것이다.

try:
	result = 123/x
    except ZeroDivisionError as err:
    	print(err)
    else : 
    	print(result)
    finally:
    	print('end')

x가 0일 경우 에러문을 출력해줌으로써 오류가 발생하는 상황을 방지한다.

profile
안녕하세요 ㅎㅎ

0개의 댓글