새싹/TIL

[핀테커스] 230906 python 모듈 함수 클래스

jykim23 2023. 9. 6. 17:57

0906 Python

함수

In [ ]:
# 함수의 매개변수(parameter)란 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수입니다. # 함수의 인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 변수를 가리킵니다.
In [ ]:
def say_myself(name, old, man=True): # man 의 기본값 설정 가능 print(f"나의 이름은 {name} 입니다.") print(f"나이는 {old}살입니다.") if man: print("남자입니다.") else: print("여자입니다.") say_myself("홍길동", 20) say_myself("반희수", 20, man=False)
나의 이름은 홍길동 입니다.
나이는 20살입니다.
남자입니다.
나의 이름은 반희수 입니다.
나이는 20살입니다.
여자입니다.

전역변수 vs 지역변수

In [ ]:
# 전역변수(Global variable) : 어느 위치에서든 호출하면 사용이 가능 (함수 밖에 선언하여 클래스 전체에서 사용이 가능한 변수) # 지역변수(Local variable) : 특정구역({ }) 내에서 생성되어 그 구역에서만 사용 (함수 속에 선언되어 해당 함수 속에서만 사용이 가능한 변수)
In [ ]:
def ban(): jjang = '07' print('jjang =', jjang) ban()
jjang = 07
In [ ]:
def d_is_10(): d = 10 # 지역변수 print('d 값은 ', d, '입니다') d_is_10()
d 값은  10 입니다

*args, **kwargs

In [ ]:
# 2-9. 입력하는 모든 수의 평균을 계산하는 함수 만들기 #* 입력 개수에 상관없이 사용하기 위해, 함수 입력 값 자리에, *args를 사용 def means(*nums): # result = 0 # for num in nums: # result += num # return result/len(nums) return sum(nums)/len(nums) # 반복문(for) 안 쓰고 가능 print(means(1,2,3,4,5,6))
3.5
In [ ]:
# 2-10. 두 수를 입력 받아 사칙연산(+,-, x, /)을 하는 함수 만들기 # Addition, Subtracting, Multiplication, Division # add, sub, multi, div # +,-,*,/ def basicOperations(operation, a, b): if operation == '+': return a+b elif operation == '-': return a-b elif operation == '*': return a*b elif operation == '/': return a/b else: return 'error' basicOperations('+', 5,4) basicOperations('/', 5,4)
Out[ ]:
'error'

클래스 Class

공식문서 https://docs.python.org/ko/3/tutorial/classes.html

클래스, 인스턴스, 속성

클래스(Class)는 객체를 만들기 위한 설계 도면이라 생각할 수 있으며 속성을 정의할 수 있습니다.

인스턴스(Instance)는 클래스의 실체화된 객체를 의미합니다. 클래스로부터 생성된 개별적인 객체가 인스턴스입니다. 인스턴스는 클래스의 정의에 따라 속성을 가지고 있고, 클래스에서 정의된 메서드를 호출하여 동작할 수 있습니다.

속성(Attribute)은 객체가 가지는 특징이나 상태를 나타냅니다. 클래스 내부에서 속성은 변수로 표현되며, 인스턴스마다 각각의 속성 값을 가질 수 있습니다 코드의 반복을 해소하기 위해 함수를 쓰고, 함수의 반복을 해소하기 위해 클래스를 사용한다.

In [ ]:
# 공식문서 # https://docs.python.org/ko/3/tutorial/classes.html # # 클래스, 인스턴스, 속성 # • 클래스(Class)는 객체를 만들기 위한 설계 도면이라 생각할 수 있으며 속성을 정의할 수 있습니다. # • 인스턴스(Instance)는 클래스의 실체화된 객체를 의미합니다. 클래스로부터 생성된 개별적인 객체가 인스턴스입니다. # 인스턴스는 클래스의 정의에 따라 속성을 가지고 있고, 클래스에서 정의된 메서드를 호출하여 동작할 수 있습니다. # • 속성(Attribute)은 객체가 가지는 특징이나 상태를 나타냅니다. 클래스 내부에서 속성은 변수로 표현되며, 인스턴스마다 각각의 속성 값을 가질 수 있습니다 # 코드의 반복을 해소하기 위해 함수를 쓰고, 함수의 반복을 해소하기 위해 클래스를 사용한다.
In [ ]:
class 붕어빵: def __init__(self, 속재료): self.속재료 = 속재료 피자붕어빵 = 붕어빵('피자') 팥붕어빵 = 붕어빵('팥') 피자붕어빵.속재료
Out[ ]:
'피자'
In [ ]:
class Person: def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender def walk(self): print(self.name + " is walking.") # 'Person' 클래스의 인스턴스 생성 alice = Person("Alice", 25, "Female") bob = Person("Bob", 30, "Male") # 인스턴스의 속성 접근 print(alice.name) # 출력: Alice print(bob.age) # 출력: 30 # 인스턴스의 메서드 호출 alice.walk() # 출력: Alice is walking. bob.walk() # 출력: Bob is walking
Alice
30
Alice is walking.
Bob is walking.

클래스 만들기

In [ ]:
class FourCal: #def set_data(self, num1, num2): # 메서드(클래스 안의 함수) def __init__(self, num1, num2): # 생성자. 인스턴스 생성할 때 초기값을 입력한다. self.num1 = num1 self.num2 = num2 print(f'{self.num1}{self.num2} 의 사칙연산') def add(self): return self.num1 + self.num2 def sub(self): return self.num1 - self.num2 def multi(self): return self.num1 * self.num2 def div(self): return self.num1 / self.num2 #a = FourCal() #a.set_data(10,20) a = FourCal(10,20) # __init__ 으로 인해 초기화 된다. #print(a.num1, a.num2) print(a.add()) print(a.sub()) print(a.multi()) print(a.div())
10 와 20 의 사칙연산
30
-10
200
0.5
In [ ]:
# 1. BackAccount 이름의 크랠스를 생성합니다. # 2. 생성자 메서드로 계좌번호, 예금주 이름, 초기 잔액을 받아 계좌를 생성합니다. # 3. 입금, 출금, 현재 계좌의 잔액을 반환하는 메서드를 생성합니다. # 잔액 balance # 입금 deposit # 출금 withdrawal class BackAccount: def __init__(self, accountNumber, name, balance): self.accountNumber = accountNumber self.name = name self.balance = balance print(f'{self.name}님의 계좌번호는 {self.accountNumber} 이며 잔액은 {self.balance}원 입니다.\n') def currentBlance(self): # 현재 잔액 print(f'{self.name}님의 현재 잔액은 {self.balance}원 입니다.\n') def deposit(self, money): # 입금 print(f'{money}원 입금하셨습니다.') self.balance += money return self.currentBlance() def withdrawal(self, money): # 출금 if money > self.balance: print('잔액이 부족합니다.') else: print(f'{money}원 출금하셨습니다.') self.balance -= money self.currentBlance() smith = BackAccount('111-222', 'smith', 5000) smith.currentBlance() smith.deposit(200) smith.withdrawal(3000) smith.withdrawal(6000)
smith님의 계좌번호는 111-222 이며 잔액은 5000원 입니다.

smith님의 현재 잔액은 5000원 입니다.

200원 입금하셨습니다.
smith님의 현재 잔액은 5200원 입니다.

3000원 출금하셨습니다.
smith님의 현재 잔액은 2200원 입니다.

잔액이 부족합니다.
smith님의 현재 잔액은 2200원 입니다.

상속

In [ ]:
class MoreFourCal(FourCal): pass a = MoreFourCal(4, 2) a.add()
4 와 2 의 사칙연산
Out[ ]:
6

오버라이딩

In [ ]:
class SafeFourCal(FourCal): def div(self): if self.num2 == 0: return 0 else: return self.num1 / self.num2 a.div()
Out[ ]:
2.0

모듈과 패키지

모듈(Module): 모듈은 파이썬 코드를 담고 있는 파일입니다. 코드의 함수, 클래스, 변수 등을 정의하고 다른 파이썬 프로그램에서 재사용할 수 있도록 합니다. 모듈은 .py 확장자를 가진 파일로 저장되며, 다른 모듈이나 프로그램에서 import 문을 사용하여 모듈을 불러올 수 있습니다.

패키지(Package): 패키지는 서로 관련된 모듈들을 디렉토리 구조로 묶어놓은 것입니다. 패키지는 모듈의 계층적인 구조를 형성하여 코드를 구성하고 관리하는 데 도움을 줍니다. 패키지는 폴더로 표현되며, 폴더 안에는 init.py 파일이 있어야 하며, 이 파일은 해당 폴더를 패키지로 인식하게 합니다.

In [ ]:
# ipynb 으로 진행 불가로 vscode 에서 진행. github 업로드 함