/ LECTURE

Python - Comprehension / Function

이 페이지는 다음에 대한 공부 기록입니다

JAVA(자바), Python(파이썬) 기반의

AI 활용 응용 소프트웨어 개발자 양성 과정

2021.11.10. ~ 2022.05.18.

찾으시는 정보가 있으시다면
주제별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 “눈”(랜덤)