Post

오토에버 클라우드 2기 2일차

오토에버 클라우드 2기 2일차

파이썬 데이터 형변환은 int, float, bool, str 함수를 이용한다

실수를 정수로 변환한다면

1
2
3
4
5
a = 12.7
c = 12.3
print(int(a)) #12
print(int(c)) #12
# 파이썬은 무조건 내림

모두 소수점을 버린다

 

문자열에서 숫자로 강제 형변환

1
2
b = "d"
print(int(b))

파이썬에서는 에러 발생

 

문자열 생성시 주의

문자열 문자열 더하기는 자원의 낭비 문자열은 immutable이기 때문에 복사가 되서 작업이 된다

1
print("hello" + "world" + "!")# 메모리 낭비

문자열이 hello,helloworld, helloworld! 이렇게 3개가 생성되기 때문에 한번에 생성하거나 join을 이용해서 문자열을 구성하는게 낫다

 

파이썬 블록

파이썬을 하다보면 블록으로 작성해야 하는게 많다 들여쓰기를 할때 탭과 띄어쓰기 4번을 할 수 있는데 띄어쓰기를 권장한다고 한다

그 이유는

PEP 8 – 파이썬 공식 스타일 가이드

파이썬 커뮤니티의 공식 스타일 가이드인 PEP 8에서는 다음과 같이 명시되어 있습니다:

“Spaces are the preferred indentation method.” (스페이스가 권장되는 들여쓰기 방식입니다.)

또한,

“Tabs should be used solely to remain consistent with code that is already indented with tabs.”

즉, 기존 코드가 탭으로 되어 있지 않다면, 스페이스를 사용하라는 것이 공식 방침입니다.

또한 에디터 마다 띄어쓰기와 탭을 구분해서 사용하는 경우가 존재하기도 하지만 요즘 코드 에디터들이 자동으로 prettier를 수행해서 신경 쓰지 않았다 그래도 조심해야겠다

 

파이썬에서 CASE

파이썬에서 케이스문이 과거에는 없어서 딕셔너리로 직접 구현했다

1
2
3
4
5
6
a = {0:'',1:'',2:''}

x = int(input('입력하세요: '))

print(a.get(x,'잘못된 입력입니다'))
print(a.get(4,'잘못된 입력입니다')) #잘못된 입력입니다 출력

 

3.10부터 match-case 문이 추가

1
2
3
4
5
6
7
8
9
10
11
a = int(input())

match a:
    case 1:
        print('1입니다다')
    case 2:
        print('2입니다다')
    case 3:
        print('3입니다다')
    case _: #위 케이스에 모두 부합하지 않을 때
          print('이상한값')

여기다가 조건을 2개 이상 걸어줄 수 있다

1
2
3
4
5
6
7
8
9
10
11
12
a = int(input())
b = int(input())

match a,b:
    case 1,3:
        print('1,3입니다다')
    case 2,3:
        print('2,3입니다다')
    case 3,_:
        print('3,_입니다다')
    case _: #위 케이스에 모두 부합하지 않을 때
          print('이상한값')

모든 값을 허용할때 는 _를 사용하면 된다

 

while else

while은 많이 사용했지만 else를 같이 사용해본적은 없었다 뒤에 나오는 else는 반복문이 정상적으로 종료된 경우 -> 조건이 false가 된 경우(중간에 break를 만나지 않음) 수행하는 내용이다

1
2
3
4
5
6
7
8
9
i = 0
while i < 5:
    print('ddd')
    i += 1

else:
    print('반복문 종료 이 구문은 정상적으로 종료 된 경우')

print('반복문 종료 이 구문은 언제나 실행')

위 코드는 2개 모두 출력되지만 break를 만나게 된다면 마지막 구문만 출력된다

 

for-else 구문 역시 정상적으로 종료(break를 안만남)라면 else 구문이 실행된다

 

파이썬의 함수는 일급객체

먼저 일급 객체란 OOP에서 사용되는 개념 중 하나로 아래의 조건을 만족하는 객체를 의미한다

1. 변수 혹은 데이터 구조(자료구조) 안에 담을 수 있어야 한다.

2. 매개변수로 전달할 수 있어야 한다.

3. 리턴값으로 사용될 수 있어야 한다.

함수가 하나의 자료형, runtime에 생성 하는게 가능하고 함수를 다른 함수의 매개변수로 사용가능, 함수를 리턴 할 수 도 있다

파이썬에서 함수는 하나의 자료형이다

 

최근 함수

원래 파이썬에서 함수를 작성할 때 자료형을 명시하지 않았지만 자료형을 명시하는 경우도 많아졌다

1
2
def add(a:int,b:int) -> int:
    return a+b

위 결과를 직접 구현해서 사용했는데 매개변수로 int말고 float를 넣어도 정상적으로 실행된것을 보아 표시만 할 뿐 직접적인 함수에 관여는 없다

 

순수 함수

순수함수와 비순수함수가 존재하는데 순수함수는 함수의 실행이 외부 상태에 영향을 주지 않고 같은 입력에 대해서 같은 결과가 나오는 함수 부수 효과가 없어야 한다

1
2
3
4
def add(a, b):      # 함수 실행이 외부 상태에 영향을 끼치지 않음
    return a + b
 
print(add(1, 2))
1
2
3
4
5
6
7
#비순수 함수
number_list = [1, 2, 3]
 
def append_number(n):        # 함수 실행이 외부 상태에 영향을 끼침
    number_list.append(n)    # 함수 외부에 있는 number_list의 상태가 바뀜
 
append_number(4)

 

매개변수의 unpacking

매개변수가 여러개인 함수를 호출할 때 *를 이용해서 값을 하나씩 대입할 수 있다 가능한 종류는 list,tuple,set

1
2
3
4
5
6
def newone(a,b):
    print(a)
    print(b)

newone(1,2)
newone(*[2,5]) #정상작동

**언패킹 딕셔너리 이용

1
2
3
4
5
6
def info(a,b,c):
    print(f"이름 {a}, 나이 {b} 성별{c}")
 
arg = {'a':'minjeong','b':'ss','c':'m'}

info(**arg)

또한 *,**를 함수의 매개변수 선언에 적용해서 가변 매개변수를 만들 수 있다

 

함수의 도움말 만들기

함수를 만들고 __doc__속성에 작성해도 되고 함수 내부 """ """에 작성해도 된다

내용을 보기 위해서는 help를 사용하면 된다

 

lambda

파이썬을 배울 때마다 이부분을 보는데 자주 사용하지 않아 까먹는다

이름 없는 한줄짜리 함수로 동적으로 생성이 가능한 함수

lambda 매개변수 나열 : 함수, 매개변수 대입

실제 사용은 함수를 매개변수로 받는 함수에서 사용한다 map, filter, reduce와 같은 함수를 매개변수로 사용한다

1
2
3
4
5
6
7
8
9
nums = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, nums))
print(squared)  # [1, 4, 9, 16, 25]

square = lambda x: x ** 2
print(square(5))  # 출력: 25

print((lambda x, y: x + y)(3, 7))  # 출력: 10

This post is licensed under CC BY 4.0 by the author.