Introspection
-주피터 노트북에서 객체 등에 대한 정보/설명을 보여주는 기능
(주피터 노트북에서 객체에 대한 정보 확인)
-? 사용
>input?
Signature: input(prompt='')
Docstring:
Forward raw_input to frontends
Raises
------
StdinNotImplementedError if active frontend doesn't support stdin.
File: c:\programdata\anaconda3\lib\site-packages\ipykernel\kernelbase.py
Type: method
crtl + / => 코드 한번에 주석처리.
파이썬에서는 변수도 바인딩에 저장 가능.
fn = input
입력 받은 숫자를 문자가 아닌 숫자로 처리하고 싶을 때
데이터 변환함수 (클래스의 생성자) 사용
문자열을 정수로 변환 : int() --겉보기에는 함수지만 실제로는 클래스(생성자)
type():함수처럼 보이지만 실제로는 클래스
type을 이용하여 객체의 클래스를 알 수 있음
first = input('첫번째 문자열 입력:') #100
second = input('두번째 문자열 입력:') #200
print (first+second)
100200
type('안녕')
str
print(type('안녕'))
<class 'str'>
first = int(input('첫번째 숫자 입력:'))
second = int(input('두번째 숫자 입력:'))
print (first+second)
300
print(type(type))
print(type(int))
<class 'type'>
<class 'type'>
클래스이름에다 괄호치면 생성자가 됨. int()
#변수란?
#-값(데이터)를 담는 그릇
#-종류와 크기
#-데이터의 종류와 크기에 따라 데이터 타입이 결정
#이 데이터를 담는 변수의 데이터 타입도 결정
정적(static) vs 동적(dynamic)
compilation-time vs run-time (프로그램이 실행중에 뭔갈 하는 것 .동적)
dll; 동적링크라이브러리 : 실행할 때 사용안하다가 실행 중에 필요하면 쓰이는 것.
(실행파일이 비대해지고 오래 걸리는 것을 방지)
동적타입언어 : 변수가 프로그램 실행 중에 어떤 타입이든 저장 가능 / 변수가 특정 데이터 타입으로 결정되지 않음 ; 파이썬 - > fn = input 했다가 fn = 'function'이렇게 가능
변수자체는 타입이 없지만 변수가 바인딩하는 객체는 타입이있음. 그래서 변수의타입이 없다고 할 수는 없어 . 동적이면서 강타입 (ㅍㅏ이썬)
정적타입언어 : 변수에 데이터 타입을 미리 선언 그 변수는 해당 데이터 타입만 저장 가능
파이썬 : 강타입언어 & 동적 타입 언어
올바른 데이터를 사용하지 않으면 type error, value error
변수는 선언 없이 바로 생성, 대신 초기화 필요
즉, 파이썬에서 변수를사용하려면 변수를 초기화해야한다.(선언이 없으므로)
자바
int num;
(num이란 변수는 정수타입이다)
num = 10; (초기화)
파이썬
num = 10 (냅다 초기화 가능)
파이썬에서 생선한 변수와 객체의 목록을 보고싶다면
dir() 함수
print(dir())
#namespace(이름공간)
fn='함수'
print(dir())
['In', 'Out', '_', '__', '___', '__builtin__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__vsc_ipynb_file__', '_dh', '_i', '_i1', '_i2', '_i3', '_ih', '_ii', '_iii', '_oh', 'exit', 'fn', 'get_ipython', 'os', 'quit', 'sys']
print(type(fn))
fn=100
print(type(fn))
<class 'str'>
<class 'int'>
print(dir(str))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
=>문자열메소드
dir()로만 하면 그냥 거기에 있는..
함수 넣으면 거기에 namespace
모듈 넣으면 모듈의 namespace
a=b=c=123456 # =(assignment operator):오른쪽에서 왼쪽
c=123456바인딩 한 것을 b에 바인딩하고 b에 c=123456바인딩 된 b를 a가 바인딩.
123456주소 OX헥사? 1000 c주소 바인딩 1000 b도 주소 바인딩 1000 a도 주소 바인딩 1000
변수에 123456이 저장되는 것이아님.123456한개만 딱 있고 나머지 다같이 주소로 바인딩.
책 실습
a=10
b=10
c=a+b
d='10'
print(c+int(d))
print(str(c)+d)
30
2010
float ; 실수형 부동소수점형
boolean type
-파이썬 불 리터럴 : True,False (첫글자 대문자에 유의)
print(type(True))
파이썬에서 제공하는 기본 데이터 타입들 정리
scalar형
-단일값 : 숫자형(int,float,complex),불형(bool),none 등
collection형
-다중값(원소(element)들로 구성됨)
-시퀀스 : 데이터가 순서대로 저장
mutable ; 가변시퀀스 계란바꾸기 가능, 구슬을 넣어도 됨.
변경 가능 - 리스트
imutable ; 불변시퀀스 계란 한편에 계란을 담았을 때 계란을 바꿀 수 없음
값 변경 불가 - 문자열, 튜플
-매핑
*사전: 순서가 없음
(키,값) 쌍으로 구성, 아이템이라고도 함
키는 해시가능한 데이터 타입이어야 함 (보통immutable)
-집합(set)
:순서없음, 중복불허
:집합연산자
리스트
-cf.) 배열(array): 시퀀스, 모든 원소가 같은 타입
리스트 리터럴 : 대괄호[] 사용
-list 함수(클래스):list()
출력되는 원소의 갯수 : 종료위치 - 시작위치
#중첩리스트의 원소 접근하기
#튜플이랑 리스트 약간다르다
=>튜플은 원소 변경이 안된다궁
튜플 안의 리스트는 원소 변경 가능하지만 튜플의 원소 자체를 바꾸는 것은 불가능.
튜플은 원소 삭제하거나 바꾸거나 안된다콩.
뒤에 정의한 걸로 됨.
set 메서드는 한번 살펴보세용
=>순서없음
=>순서있음