파이썬
18개

<a href="/22">파이썬</a>은 예쁘고 간편합니다.
텐서플로의 GradientTape와 with문
파이썬의문나를 괴롭힌 것은 책에 나온 이 짧은 코드이다:import tensorflow as tfx = tf.Variable(0.)with tf.GradientTape() as tape: y = 2 * x + 3grad_of_y_wrt_x = tape.gradient(y, x)의문: 내가 파이썬 경험이 많진 않지만; with문은 단지 자원을 확실하게 반납하는 데 도움을 주는, try-except-finally보다 더 편리한 예외처리 문법이라고만 알고 있었다. 그런데 저 코드는 두 가지가 이상해 보였다.with문의 취지가 안전한 자원 획득 및 반납이라면; 이미 반납한 자원을 쓰는 일은 있을 수 없지 않나? 그런데 저기선 tape 변수가 with문 밖에서 쓰인다. 더군다나 이게 예외적인 상황이 아니라 일반적.. 2025.06.08. Kim Evergood파이썬 함수 어노테이션
파이썬# 이 함수는 str을 받아서 str을 반환한다 def insa(name: str) -> str: print('안녕하세요', name, '님') 함수 정의에서 나온다.innerLink_37 어노테이션 이 함수를 쓸 사람들을 위해서; 함수의 매개변수와 반환값의 자료형이 뭔지 알려준다. 문법적으로 형검사를 하지 않는 파이썬에서; 여기 뭐 넣어야 되는지 막막한 코더들을 위한 (^_^) 힌트. 없어도 되고, 실질적으론 의미가 없다. 매개변수 어노테이션 각 매개변수 뒤에 : 표현식 def func( 매개변수1 : 매개변수1설명, 매개변수2 : 매개변수2설명 ): 어쩌구 기본값보다 어노테이션이 더 앞에 온다.(매개변수:어노테이션=기본값) 반환값 어노테이션 def func( … ) -> 표현식 : 어쩌구 2022.08.14. Kim Evergood파이썬 람다 표현식
파이썬lambda 매개변수 목록 : 반환값표현식 lambda : 반환값표현식 이름 없는 함수(반환문 한 개가 함수 바디 전부임)를 반환하는 표현식. # 람다식으로 나타낸 덧셈 함수 예시 lambda x, y: x+y 아래 두 코드는 의미상 같다. func = lambda: 1 # 1을 반환하는 함수를 func라는 이름으로 가리킨다. def func(): return 1 # 함수 func는 1을 반환한다. 이름 있는 함수로 관리해야 하는 경우 사용 지양됨. 참고 2022.08.09. Kim Evergood파이썬 대입표현식
파이썬if x := func(y): do_smth_with(x) while chunk := file.read(9000): process(chunk) 대입표현식# if, while 다음에 그냥 표현식을 써도 되고 이름 := 표현식으로 대입표현식도 쓴다. 표현식의 참거짓을 따짐은 물론이고; 이름의 변수에 표현식의 값을 대입한다. 대입문과는 달리 대입 대상이 여러 개는 못 된다. 여기 나온답니다: if문innerLink_25 여기도 나온답니다: while문innerLink_35 2022.07.31. Kim Evergood파이썬
파이썬if __name__ == '__main__': print('Hello world!') 소개 파이썬은 예쁘고 간편합니다. 실행되는 의사코드 인터프리터 언어이다. 객체지향 문법이 쉽고 간결하다. 코더님 정신건강 잘 챙기시라고~~~ 공백 쓰는 법까지 일일이 지정해서; 누가 코딩하든 비슷한 모양이 된다. 개발환경이 곧 실행환경이다. 오픈소스, 무료 사람들이 패키지 많이 만들어 줘서 유행이다. 특히 데이터과학에서… 차례 참고: 파이썬 문서 참고: 파이썬 언어 레퍼런스 파이썬 시작하기 🔒 파이썬의 모양 파이썬 코딩새 주석, 들여쓰기 등 임포트 시스템🔒 모듈, 패키지 (라이브러리 같은 거) 가상환경 객체 이름(변수) 내장형 기본자료형 수(int, float, complex) 정수, 실수, 복소수 시퀀스(list, .. 2022.07.31. Kim Evergood파이썬 if문
파이썬if x == 1: print('OK') elif x == 2: print('good') else: print('No') if문 조건에 따라 실행내용을 달리 하고플 때 쓴다. if 표현식 : 표현식이 참인 경우 실행할 문장 1개이상 if 표현식 : 표현식이 참인 경우 실행할 문장 1개이상 if 표현식 : 표현식이 참인 경우 실행할 문장 1개이상 else : 표현식이 거짓인 경우 실행할 문장 1개이상 if 표현식 : 표현식이 참인 경우 실행할 문장 1개이상 elif 표현식 : 위의 것은 거짓이고 이번엔 참인 경우 실행할 문장 1개이상 elif 표현식 : 위의 것은 다 거짓이고 이번엔 참인 경우 실행할 문장 1개이상 … else : 위 조건 싹다 거짓인 경우에 실행할 문장 1개이상 # 점수가 if score.. 2022.07.31. Kim Evergood파이썬 내장형 수
파이썬수 형# 정수 int 정수는 정수 둔둔. unsinged는 없는 듯. 그래 파이썬답구나. 정수 생성자 int(x) 수나 문자열 x로부터 정수 객체를 만들어 반환. 정수 리터럴 0 0만 한 개 이상 적기 10진수 0 아닌 숫자로 시작해 숫자 나열 그밖에 2진수 ‘0b’나 ‘0B’로 시작한 뒤 0 또는 1 한개이상 나열 8진수 ‘0o’나 ‘0O’(영오)로 시작한 뒤 0-7 한개이상 나열 16진수 ‘0x’나 ‘0X’로 시작한 뒤 0-9, A-F, a-f 한개이상 나열 메모리에 진짜로 올라가지는가와는 별개로 문법상 길이제한은 없다. 가독성 위해 중간에 밑줄 넣어도 된다(의미변화x)(두개이상 연속x)(0나열에서는 말고) 논리형 bool 정수형의 자식형 True, False 두 값만 가능 표현식 안에서 대부분 각각.. 2022.07.31. Kim Evergood파이썬 클래스
파이썬class ClassName: # 클래스 정의 species = 'human' # 클래스 변수 def __init__(self, name, age): # 생성자 self.name = name # 인스턴스 변수 self.age = age self.__money = 0 # 비공개 속성 def eat_tteokkuk(self): # 메서드 self.age += 1 instance = ClassName( 'Sunny', 500 ) # 인스턴스 생성 instance.eat_tteokkuk() # 메서드 호출 print( instance.age ) # 어트리뷰트 참조 클래스 클래스는 속성과 메서드들의 묶음이자 인스턴스(개체)의 데이터형이다. 모든 게 객체인 파이썬에서 클래스 정보 역시 클래스라는 클래스의 객체 is.. 2022.07.31. Kim Evergood파이썬 컴프리헨션
파이썬list1 = [ x로나타낸표현식 for x in x가차례로가질값목록이터러블 ] list1 = [ x로나타낸표현식 for x in x가차례로가질값목록이터러블 if 조건 ] list1 = [ x랑y로나타낸표현식 for x in x가차례로가질값목록이터러블 if 조건 for y … ] 리스트, 집합, 딕셔너리 디스플레이에서; 요소를 일일이 나열하는 대신; 반복과 조건으로 계산된 값들을 넣는다. 학교 다닐 때 수학에서 집합을 표시하는 방법이라고 배운 것 중에 원소나열법과 조건제시법이 있었는데; 흔히 쓰는 [1,2,3]은 원소나열법이고 이건 조건제시법 같다. 컴프리헨션 for절: 반복할 요소 이런 식으로; 어떤 규칙이나 공통요소로 나타내지는 멤버들을 나열하고 싶을 때 l = [ 0**2, 1**2, 2**2, 3.. 2022.07.31. Kim Evergood파이썬 함수
파이썬def func(a, b, c='C'): print(a,b,c) func(1,2,3) # 1 2 3 func(1,2) # 1 2 C func(1, b='비', c='씨') # 1 비 씨 l = [1,2,3] func(*l) # 1 2 3 def add(x,y): return x+y print(add(2,3)) # 5 함수 파이썬의 함수 함수호출연산을 적용시킬 수 있는 콜러블형 객체 괄호() 붙여서 실행시킬 수 있다는 뜻. 파이썬의 실행 단위인 코드블럭의 일종 함수 정의 def 함수이름( 매개변수 0개이상 ) : 함수바디 함수 바디는 함수 정의 때 실행되지 않고 호출 때마다 실행된다. 이름이 같은 함수를 정의하면 에러는 안 나고 그냥 나중 것으로 덮어써진다. 변수도 새 값으로 걍 덮어써지잖아 매개변수 기본.. 2022.07.31. Kim Evergood파이썬 while문
파이썬i=0 # 실행 결과 while i < 4: # 0 print(i) # 1 i += 1 # 2 else: # 3 print('ELSE') # ELSE while문 한 번이라도 조건이 틀리기 전까지(표현식이 거짓이기 전까지) 같은 코드를 반복 실행한다. while 표현식: 표현식이 참일 동안 반복 실행될 문장 1개이상 while 표현식: 표현식이 참일 동안 반복 실행될 문장 1개이상 else: 표현식이 거짓일 때 한 번 실행될 문장 1개이상 do-while문은 딱히 없다. while True 해놓고 if 조건: break을 맨 마지막에 하면 그게 그거지 뭐. 파이썬 3.8부터 대입표현식innerLink_38이 생겼다. while 다음에 x := 표현식 식으로 표현식을 즉석에서 변수에 담아 쓸 수도 있습니다.. 2022.07.31. Kim Evergood파이썬 코딩새
파이썬import this 전통적으로 프로그래밍 언어들에서는 단어를 구분할 때 말고는 띄어쓰기나 들여쓰기는 그냥 보기 좋은 꾸밈일 뿐이었는데; 파이썬은 적절한 들여쓰기가 문법적으로 강제될 뿐 아니라 강제되지 않는 부분에서도 “이렇게 하시오” 하고 가이드를 내놓는다. 들여쓰기 개판 치는 놈들은 의자에 묶어놓고 한달동안 파이썬만 시켜야 한다. 아니 그래도 빈줄 개수 정도는 마음대로 하자고~~~~ 줄 기본적으로 한 줄당 한 문장 x = 1 y = x + 10 print(x) 세미콜론으로 한 줄에 여러 문장. 역슬래시로 여러 줄에 한 문장 한 줄에 여러 문장을 적을 때는 문장 구분할 때 세미콜론을 쓴다. x = 1; print(x) 한 문장을 여러 줄에 걸칠 때는 역슬래시를 쓴다. x = 'hello ' + \ 'w.. 2022.07.31. Kim Evergood파이썬 이름, 연결, 스코프
파이썬같이보면 좋은 글: 파이썬 변수innerLink_28 이름과 연결 이름은 이름공간(namespace)이라는 특별한 곳에 저장된다. 이름공간은 이름→객체 매핑이다. 파이썬의 대입은 사실 변수에 값을 저장한다기 보단; 그 값을 가진 객체와 이름 사이의 연결(이름이 객체를 가리킨다)을 만드는 것이다. 변수 사용 범위 코드블럭 파이썬 프로그램은 코드 블럭들로 구성된다. 코드블럭인 것들: 모듈 (최상위 코드블럭) 함수 정의 클래스 정의 if문, for문 등 복합문의 코드도 함수 정의, 클래스 정의와 마찬가지로 들여쓰기를 해서 보기엔 비슷해 보이지만; 얘넨 코드블럭은 아니다. 대화형 명령 하나 이름(변수) 종류 어디서 정의됐냐에 따라 내장이름 파이썬 설치하면 원래부터 있는 내장 함수, 내장 상수 등 전역이름 모듈 .. 2022.07.31. Kim Evergood파이썬 변수
파이썬x = 1 y = func(x) del x 컴퓨터과학이나 다른 언어들에서 변수라는 말을 쓰니까 “파이썬 변수”라고 할 뿐이지; 파이썬에는 변수라기보단 이름과 객체가 있다. 객체 파이썬은 모든 데이터를 객체로서 다룬다. 이름(식별자) 코드에서 그 객체를 쓰려고 부르는 이름 이름과 연결 파이썬에서 변수 x란; x에 해당하는 공간이 메모리에 주어지고 거기에 값이 저장되는 게 아니라; 이름공간 안에 x가 있고 x가 특정 객체를 가리키는 거다. 이름과 연결에 대한 자세한 내용은 여기innerLink_42 이름은 아무 객체나 가리킬 수 있으므로; 결국 언뜻 마치 변수에 자료형이 없는 것처럼 보일 수도 있다. (x=1 했다가 x='hello' 해도 됨) 그러나 객체에는 자료형 즉 클래스가 있는 게 맞다. 당연한 얘기.. 2022.07.31. Kim Evergood파이썬 비교연산
파이썬비교연산# 연산 결과로 논리값인 True, False를 낸다. 값비교 동등비교 A == B A와 B의 값이 같은가? A != B A와 B의 값이 다른가? (A == B의 반대의 결과.) 대소비교 A B A가 B보다 큰가? A B의 반대의 결과.) A >= B A가 B보다 크거나 같은가? (A < B의 반대의 결과.) nan과 수의 값비교는 False이다. 문자열의 값비교는 문자열의 내장함수 ord()를 써서 사전식으로 비교한다. 멤버십검사 A in B A가 B의 멤버인가? A not in B A in B의 반대의 결과. 여기서 not은 논리연산자 not이 아니고; not in이 한 연산자이다. B에는 리스트나 레인지같은 애들을 자주 넣는다. A, B가 문자열인 경우 A.. 2022.07.31. Kim Evergood파이썬 try문
파이썬try: 예외가 발생할지도 모르는 코드 except 예외: 해당 예외 발생 시 실행할 내용 except 예외 as 변수: 해당 예외 발생 시 실행할 내용 근데 예외 내용을 변수에 담는다 except: 아무 예외나 발생 시 실행할 내용 else: 예외 아니 발생 시 실행할 내용 finally: 예외발생 하든 말든 실행할 내용 except절은 여러 개 올 수 있다. 발생한 예외에 맞는 except절이 여럿 있어도 그들 중 첫 한 개만 실행된다. 예외 종류 지정하지 않는 except:는 가장 마지막에 온다. except절이 있어야 else절이 있을 수 있다. except절, finally절 둘 중 하나는 꼭 나와야 한다. 2022.07.31. Kim Evergood파이썬 내장형 시퀀스
파이썬l = [10, 'ABC', (2, 3)] for x in l: print(x) 시퀀스 형 다른 언어들에서의 배열에 해당. 시퀀스형들은 모두 이터러블(멤버를 한 개씩 반환할 수 있는 객체)이다. for문에 for 변수 in 시퀀스 머 이렇게 넣어 쓰면 된다. 같이 보면 좋은 글: for문 리스트 list 가변 시퀀스. 리스트 생성 리스트 생성자 list(), list( 이터러블 ) 인자 이터러블과 같은 멤버와 그 순서인 리스트를 생성하고 반환. 리스트 디스플레이 [ 표현식, 표현식, 표현식, … ] 저것들을 멤버로 하는 리스트 생성 [ 컴프리헨션 ] 컴프리헨션 [] 빈 리스트 튜플 tuple 불변 시퀀스 튜플 생성 튜플 생성자 tuple(), tuple( 이터러블 ) 인자 이터러블과 같은 멤버와 그 순서.. 2022.07.20. Kim Evergood파이썬 논리연산
파이썬논리연산# not A A가 참이면 False, 거짓이면 True를 반환. A and B A가 참이면 B, 거짓이면 A를 반환. A or B A가 참이면 A, 거짓이면 B를 반환. and나 or 연산의 결과는 A, B 중 하나이지, 반드시 True나 False인 건 아니다. not 연산은 True나 False를 반환하는 게 맞다. 공식문서에 따르면 이런 식으로 a가 빈 문자열이면 기본값으로 'hello'를 준다든가 하는 식으로 쓸 수도 있다고 한다. greeting = a or 'hello' 우선순위 비교연산 > not > and > or > 조건표현식 2022.07.20. Kim Evergood
728x90