0510

망지·2022년 5월 10일
0
post-custom-banner

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 메서드는 한번 살펴보세용


=>순서없음

=>순서있음







profile
꾸준히, 차근차근
post-custom-banner

0개의 댓글