def personal_info(**kwargs): # info 뒤 ( ) 안이 매개변수
for key, value in kwargs.items():
print(key, ': ', value, sep = '')
y = {'name': '홍길동', 'age': 30, 'address': '서울시 용산구 이촌동'}
personal_info(**y)
결과값
name: 홍길동
age: 30
address: 서울시 용산구 이촌동
*설명
맨 아랫줄 인수 personal_info(**y)에 바로 윗줄 y변수의 정보가 들어가고 **이게 붙어서
키워드 매개변수로써 첫째줄의 def의 매개변수 자리에 들어가서 함수 def personal_info가 작동한다
def : 함수를 만들 때 사용하는 예약어
매개변수(parameter) : 함수에 입력으로 전달된 값을 받는 변수 함수 이름 뒤 괄호 안의 것
인수(arguements) : 함수를 호출할 때 전달하는 입력값
사용법
함수를 정의하고 거기에 함수 밖에서 보내올 데이터(변수)를 받을 매개변수 타입을 지정하고, 작성한 함수에 밖에서 변수(인수)를 지정하면 작동된다.
종류
세가지는 혼용가능
고정 매개변수(parameter) : args = 1 or True
가변 매개변수(parameter) : *args
키워드 매개변수(parameter) : **kwargs
1)고정 매개변수(parameter)
매개변수 값을 지정하여 변동이 없게하는 매개변수
여러개 써도 순서는 상관x
ex) a=1, man=True
아래에서 a=3,b=7이 매개변수를 지정한 것으로 고정매개변수
def add(a, b):
return a+b
result = add(a=3, b=7) # a에 3, b에 7을 전달
print(result)
결과값
10
숫자 뿐 아니라, True나 False도 미리 지정해두고 사용가능
man = True
def say_myself(name, old, man=True):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself("박응용", 27)
say_myself("박응용", 27, True)
결과값
나의 이름은 박응용입니다.
나이는 27살입니다.
남자입니다.
2)가변 매개변수(parameter)
매개변수 앞에 *을 하나 붙인 것이며, 여러 개의 입력값을 입력가능. 튜플로 출력됨.
값이 몇 개가 될지 모를 때 사용하며, 입력값을 전부 모아서 Tuple로 만듬
def add_many(*args):
result = 0
for i in args:
result = result + i
return result
result = add_many(1,2,3)
print(result)
결과값 : 6
result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result)
결과값 : 55
점프투 파이썬만으로는 잘 이해가 안되서 자료를 뒤져보다가 이분 글이 가장 이해가 잘되어 가져왔다.
if __name__ == __main__ 의미 :
인터프리터에서 직접 실행한 경우에만 if문을 실행시키라는 뜻
import된 경우는 x
모듈을 실행하는 방법은 두가지인데, 인터프리터에서 직접 실행하거나 다른 모듈에 임포트해서 실행하던가이다.
즉, 이 둘중에 후자에서만 발동하도록 지정해주는 것이다
if __name__ == __main__ 이 필요한 이유 :
어떤 py파일의 함수만 쓸려할 때 겹쳐서 다른걸 가져오지 않도록 방지할 수 있다.
mod1.py 파일의 add와 sub 함수를 사용하기 위해 mod1 모듈을 import할 때, 엉뚱하게도 import mod1을 수행하는 순간 mod1.py가 실행이 되어 결괏값을 출력한다. 우리는 단지 mod1.py 파일의 add와 sub 함수만 사용하려고 했는데 말이다
017. 객체지향 언어(OOP, Object-Oriented Programming)란? - 기본 구성 요소 -
일단 구성요소에 대해 알아보기 전에 객체지향(Object-Oriented)에 대해 한번 알아보자.
객체지향이라는 개념이 나타나기 이전의 프로그래밍 방법에서는 사람이 컴퓨터에게 프로그램이 뭘하고 그 다음에 뭘하고 명령을 주는 식으로 컴퓨터가 하는 일을 하나씩 알려주기 바빴다고 한다. 그러나 객체지향 프로그래밍(OOP)이 등장하고부터 프로그램을 작성할 대상이 되는 실제 세계의 사물(객체)을 그대로 표현하고, 그것들이 어떻게 움직이는지 정해주고 나서 그 객체들에게 일을 시킨다고 한다.
객체지향 프로그래밍을 잘 사용하면 보다 좋은 프로그램을 빨리 만들 수 있고, 나중에 수정하기도 편해진다고 하며, 프로그래밍 언어들이 모두 객체지향적인 것은 아니지만 요즘에 주로 사용되는 것들은 객체지향을 제공하는 것이 많다고 합니다. 객체지향을 개념을 몰라도 간단한 프로그램을 짤 수 있지만, 윈도우나 복잡한 프로그램을 짤 때는 큰 도움이 된다고 한다. (출처:https://wikidocs.net/84)
파이썬은 객체지향적 언어라고 한다. 다만 데이터분석이나 통계 쪽으로 많이 활용되고 있어
객체 간의 작용하는 프로그래밍보다는 사용자정의 함수들을 많이쓰므로 그리 느껴지지 않을 수 있다고한다.
이제 '객체지향(Object-Oriented) 언어'가 무엇인지 이해하기 위해서는 먼저 기본 구성요소를 알아보자
객체지향 언어의 3가지 기본 구성요소는
클래스(class), 객체(object), 메소드(method)이다
1.클래스(class)
같은 타입의 그룹에 속하는 속성(attribute)과 동작(behavior)을 정의한 것
2.객체(object)
클래스의 인스턴스가 실제로 메모리에 할당된 것 - 클래스에서 정의된 내용을 실행하며 객체 자체의 속성을 가지고 있다
처음 기초 교재나 수업을 들어보면 객체라는 말을 안들어 볼 수가 없을 수가 없을정도 여러번 나오는 단어인데 정작 이 의미를 정확히 몰라서 해당 내용이 이해가 안되는 경우가 종종 있었다. 구글링해보면 객체에 대해서 여러 글들이 존재했지만 그나마 가장 이해가 됬던게 위키여서 자료로 남겨두었다.
객체란 아주 심플하게 한마디로 정리하면,
프로그램에서 사용되는 '데이터' 또는 식별자에 의해 참조되는 '공간(주소)'이다.
구체적으로 객체는 변수, 자료구조, 함수 또는 메소드가 될 수 있다.
객체란?
1)프로그램에서 사용되는 '데이터'이며, 프로그램을 구성하는 단위 중 하나
2)식별자(identifier)에 의해 참조되는 '공간' or '주소'
위의 설명을 파이썬에서 예를들면,
a = 1
변수 a를 설정하면 이 a의 값이 직접적으로 메모리 저장되는 것이라 이 a가 있는 주소를 메모리에 저장한다고 한다. 이게 식별자(identifier)에 의해 참조되는 공간이다.
이는 객체지향 프로그램(OOP)과 연관이 있다고 하는데 더가면 너무 복잡하므로 일단 여기까지만 알도록 하자.