<jupyter_start><jupyter_text>Try, except , raise :try :    ..        - except(ZeroDivisionError, OverflowError): 이런 방식으로 두개 같이 처리 가능- 아무것도 쓰지 않을 경우는 모든 에러 처리 하는거- except여러개 쓸 경우 각각의 에러에 따라 다르게 처리해주는거- numpy as np와 같이 as를 사용해서 error의 이름을 정해주는것- raise를 사용하면 에러를 직접 만들 수 있음<jupyter_code>dir(Exception)
type(Exception)
help(Exception)<jupyter_output>Help on class Exception in module builtins:

class Exception(BaseException)
 |  Common base class for all non-exit exceptions.
 |  
 |  Method resolution order:
 |      Exception
 |      BaseException
 |      object
 |  
 |  Methods defined here:
 |  
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  __new__(*args, **kwargs) from builtins.type
 |      Create and return a new object.  See help(type) for accurate signature.
 |  
 |  ----------------------------------------------------------------------
 |  Methods inherited from BaseException:
 |  
 |  __delattr__(self, name, /)
 |      Implement delattr(self, name).
 |  
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |  
 |  __reduce__(...)
 |      helper for pickle
 |  
 |  __repr__(self, /)
 |      Return repr(self).
 |  
 |  __setattr__(self, name, value, /)
 |      Implement setattr(self, name, value).
 |  
 |  __setstate__(...)
 |  
 |  _[...]<jupyter_text>Error- Exception : runtime error ==> 이경우가 더 찾기 힘듦 : Base Exception, Exception이 존재.: 이 경우 실행이 중단되지 않지만, 원하는 결과가 나오지 않음- Error : 구문 자체의 에러임 : 에러가 나올 경우 중간에 실행이 중단됨.<jupyter_code>import numpy
import numpy as np

np.__name__
a = 10
if a > 10 :
    print('a')
else:
    raise Exception # 이 exception으로 switch case 함수를 만들 수 있음
a = 10
try :
    if a>10 :
        print('a')
    else :
        raise Exception('aaa') # exception 괄호 열고 넣어주는게 exception의 이름이 됨, 즉 exception을 세부화 시킬 수 있게 되는 것 
except :
    print(0)
    
def a(a):
    try:
        print('0')
        return 0
    finally :
        print('1')
        return 1
a(3) # try except에는 return 두개 넣어도 됨
# 중간에 값 확인하려고 print하지 말고 assert를 사용 하세요
b =11
assert b==10 # 만약에 원하는 코드와 값이 다르다면 에러가 뜸. 

#이때 값 변화까지 알고싶다면 ?  d<jupyter_output><empty_output><jupyter_text>함수- assert같은거 쓰게 되면서 다들 함수를 열씨미 쓰기 시작했음 - first class function : 함수가 값처럼 사용할 수 있는 경우 - high order function : 함수의 인자로 함수가 들어갈 수 있고, 함수의 결과값으로 함수가 나올 수 있음<jupyter_code>a =[1,2,3]
sum(a)
문근영 = sum
문근영(a)
a=[str.upper,str.lower]
a[0]('abc') #함수가 값이 할 수 있는 애들이 다되는거 : first class fuction이니까
def a (func) : 
    print(func('abc'))
    
a(str.upper) # 함수를 인자로 넣은거 
b=a(str.title)
b('abc')
import keyword
dir(keyword)
keyword.kwlist

#false는 값 0, type 은 bool, numeric, 
True == None
False ==None
if None:
    print('a')
else :
    print('b')
a = None

if a is not None : 
    print('a')
else :
    print('b')
a = lambda x : x+1 # x를 받으면 입력이 x, return값이 x+1
     
a(1)
 b = lambda : 3
b()
c = lambda x,y : x+y+3
c(2,3)
def add_x_y () : 
    """문근영은 예쁘다""" #이렇게 넣으면 shift tab 넣으면 docstring으로 참조할수 있음
    pass
    return 0  #이 때 return None하면 아무것도 반환안하는 거임
dir(add_x_y()) #이때 call이 있으면 
1+add_x_y()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1373501781665047, 'fraction_numerical': 0.010366051182377713, 'mean_word_length': 2.586527293844367, 'pattern_counts': {'":': 0, '<': 12, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '198482', 'license': 'MIT', 'n_tokens_mistral': 1480, 'n_tokens_neox': 1702, 'n_words': 381, 'path': '0703_afternoon_python.ipynb', 'repo_name': 'song20607/Bigdata-X-Campus', 'size': '3087'}