Python - Comprehension / Function
JAVA(자바), Python(파이썬) 기반의
AI 활용 응용 소프트웨어 개발자 양성 과정
찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요
74일차 수업
========복습========
기본 문법
블록{}을 사용하지 않고 들여쓰기로 구분
탭과 공백을 섞어 쓰지 않는 것을 권장
들여쓰기를 통해서 각 수행할 문장들을 하나의 부속으로 만듬
조건식 다음은 콜론(:)을 사용하고, 괄호 사용하지 않음
if condition1:
code1
elif condition2:
pass # 조건에 대한 실행문 생략
else:
code3
for target in iterableObject: # 객체의 종류로는 튜플, 문자열, 딕셔너리 등
code1
else: # 반복의 조건이 만족하지 않을 때 실행하는 부분
code2
while condition:
code1
else:
code2
range()
반복문 사용시 집합객체가 필요해 매번 만들어야하는 불편함을 개선하기 위해
범위를 지정해주면 해당되는 범위 만큼의 배열을 만들어주는 함수
인자는 (시작값, 종료값, 증감값)로 구성되어있고, 시작값이상 종료값 미만의 배열을 생성해줌
======== 끝 ========
74일차 수업
pythonic code
파이썬만의 세련된 코드형태, 특유의 문법
기존 프로그래밍 언어는 연산 속도를 기준으로 코딩을 해왔지만
파이썬은 프로그래머에 맞춰서 효율적으로 코딩을 할 수있도록 개발된 언어
복잡한 코드를 간결하게 작성해, 코드의 가독성이 증가해서 더 빠르고 효율적으로 코딩이 가능
unpacking
배열의 형식을 띈 객체의 각 요소를 분해하여 추출하는 방법
요소의 개수와 변수의 개수가 일치해야함
msg = “프로그래머”
m1,m2,m3,m4,m5 = msg
print(m1) # output “프”
# “*” 할당받지 못한 값들을 모아 리스트에 담는 기능
s1,s2*,s3 = msg
print(s2) # output “로그래”
zip()
여러 집합 객체를 인자로 받아서 각 객체가 담고있는 요소를 차례로 접근할 수 있도록 튜플의 형태로 반환해주는 함수
print(list(zip([1,2],[3,4],[5,6]))) # output [(1,3,5),[2,4,6]]
enumerate()
데이터를 열거하는 함수
user_list = [“개발”, “프로그래머”, “전문가”]
for index, value in enumerate(user_list):
print(index, value) # output 0 개발 \n 1 프로그래머 \n 2 전문가
comprehension
하나 이상의 iterator로 부터 파이썬의 자료 구조를 만드는 방법
간단한 구문으로 반복문과 조건 테스트를 결합
[표현식 for 항목 in 순회 가능 객체]
list = [n for n in range(7) if n != 3]
print(list) # output [0,1,2,4,5,6]
함수
반복적으로 작성된 코드를 하나의 블록으로 감싸서 코드의 반복을 줄이는 도구
유지보수 편하고, 가독성 상승
def 함수명(매개변수):
실행문
def add(a,b):
return a+b
print(add(1,2)) # output 3
# 파이썬에서는 쉼표(,)로 구분하여 리턴이 여러 개가 가능, 튜플의 형태로 반환
def add2(a,b):
return a,b,a+b
def greeting(hello= “안녕”, name): # 매개변수에 기본값을 지정할 수 있음
print(f“{hello} {name}”)
# 위치 인자
greeting(“잘가”, “스폰지밥”) # output “잘가 스폰지밥”
# 키워드 인자
greeting(name=“스폰지밥”) # output “안녕 스폰지밥”
배열 파라미터
함수가 호출이 될 때 파라미터 배열을 선언하고 시스템에 저장, 디폴트(단 한번만 실행)
함수가 호출이 될 때마다 배열을 이용하고, 배열을 인자로 넘겨준다면 넘겨준 배열을 사용
def buggy(arg, result=[]):
result.append(arg)
print(result)
buggy(“가”) # output [“가”]
buggy(“나”) # output [“가”, “나”]
buggy(“다”, [1,2]) # output [1,2,“다”]
args, kwargs
*파라미터명 : 파라미터에 작성하지 않은 인자가 들어올 경우 튜플의 형태로 저장해 받아주는 기능
**파라미터명 : dictionary 형태로 받아주는 기능
def func1(*args):
sum= 0
for I in args:
sum += i
return sum
print(func1(1,2,3,4,5)) #output 15
def func2(**kwargs):
sum=0
for key in kwargs:
sum+=kwargs[key]
return sum
print(func2(math=7,eng=8,kor=9)) # output 24
함수2
지역변수 : 함수 안에 있는 변수 (제어문 기준 아님)
js와 동일하게 호이스팅 현상이 있음
# 객체로 사용할 수 있음, 변수화 가능
def case1():
print(“case-1”)
def case2():
print(“case-2”)
f = {“case1”:case1, “case2”:case2}
f[“case1”]() # output “case1”
a = case2
a() # output “case2”
# 람다, 권장하지 않음
func = lambda x,y : x*y
print(func(2,3)) # output 6
module
함수 : 파일 내에서 일정한 작업을 수행하는 코드블록
모듈 : 함수, 클래스들의 파일
패키지 : 여러 모듈을 모아놓은 디렉토리
# from 모듈명 import 함수명, 혹은 import 모듈명으로 전체 불러오기도 가능
from random import choice as cho # 모듈명에 파일형식은 작성하지 않고, alias 설정 가능
def get_whether():
today = [“맑음”, “비”,“눈”,“흐림”]
return cho(today)
print(get_whether()) # output “눈”(랜덤)