본문 바로가기

웹_프론트_백엔드/Python

2020.01.28

1. lec05_map_lambda.py

# -*- coding: utf-8 -*-
#map(),lambda함수
#map() : 순회가능한객체(iterable) 전체 각각에 함수적용
#lambda : 익명함수(함수의 이름이 없는 함수) lambda expression 
#lambda를 사용하는 이유: 한번만 필요한 함수를 굳이 정의할 필요가 없음. 

def double (x) :
    return x*2

print(double(3))
list_a= [1,2,3,4,5]
#list_a에 있는 원소들에게 모두 double() 적용하여 새로운 리스트 만들기
#1. for문 사용
list_b=[]
for a in list_a :
    list_b.append(double(a))
print(list_b)

#2. map()사용. 
# 형식 : map(함수, 순회가능한 객체(리스트))
print(list(map(double, list_a)))

#3. lambda expression (표현식) 사용
# 형식 : lambda 매개변수 : 반환값(반환식)
print(list(map(lambda x:x*2, list_a)))

#Quiz : texts에 있는 단어를 모두 소문자로 변환하라. 
texts=['I', 'like', 'banana', 'I', 'like', 'Apple']
print(list(map(lambda x: x.lower() ,texts)))

#sorted() :정렬,  각각의 원소에 적용할 수 있는 함수 지정
print(sorted(texts)) # 소문자, 대문자 섞여 있음. 
#소문자로 바꾼 다음에 sorting
print(sorted(texts, key=lambda x:x.lower())) # 정렬만 소문자로 바꾼다음에

list_num=[1,3,2,6,8]
#sorting: reverse로 큰숫자가 먼저 나오게. 
print(sorted(list_num, reverse=True))
print(sorted(list_num, key=lambda x: -x))

2. lec01_class.py

# -*- coding: utf-8 -*-
# 객체란 ? object:속성을 갖고 있는 실체(instance) (홍길동)
# 속성(attribute)란 ? 속성값(property, 변수)와 행동(behaviour,메서드)
# 클래스란? class : 객체의 종류를 정의. 개념적인 의미 (사람). 사용자가 정의한 타입
# 추상화 : 클래스를 만드는 작업
# 내장클래스(파이썬이 제공) : int
# 파이썬은 모든 것이 객체임. 

#1이라는 int type의 객체를 만들어서 그 주소를 변수 num에 대입. 
num=1
print(type(num))  #변수가 가리키는 객체의 타입
print(type(1)) #1의 타입

num='a'
#동적타이핑. 대입되는 객체의 타입에 의해서 그때그때 결정. 
print(type(num)) #변수가 가리키는 객체의 타입
print(type('a')) #str 타입

#빈클래스 
#형식 : 
#class 클래스이름 () : 
#    body (블럭이므로 들여쓰기가 되어야함. )
class Book() :
    pass

#객체 생성
num = Book() 

#class 정의
class Student():
    #생성자 (객체가 생성될 때 자동으로 호출)
    def __init__(self, name, major) :
        #property 변수
        #self: 자기자신의 객체 (instance)
        # 객체변수 
        self.name= name; 
        self.major = major; 
        print('객체 생성')
    def goto_school(self) : #메서드에 항상 객체를 첫번째 매개변수로 넣어줘야 함. 
        name =self.name  # name: 지역변수 
        print(name , '이 학교에 갑니다')
    def learn(self) :
        print(self.major, '를 배웁니다')

#객체 생성
student = Student("홍길동", "컴공")
#객체의 속성(멤버변수, 멤버메서드)에 접근하는 방법 : .으로 접근, 읽고쓰기 다 됨 
student.goto_school()
student.learn()
print(student.name)
print(student.major)
student.name='shinsangrim'
student.goto_school()

#객체 생성 
student = Student("김광길", "과학")
student.goto_school()

3. lec05_namespace.py

# -*- coding: utf-8 -*-
#namespace란 ? 네임스페이스. 변수이름이 유일한 공간. 
# 네임스페이스가 다르면 변수이름이 같아도 됨. 
#네임스페이스에 따른 변수의 종류
#1. 전역변수(global) : 네임스페이스 : 파일전체  
#2. 지역변수(local)  : 네임스페이스 : 지역변수가 선언된 함수

#전역변수 (파일내에서 다 통용)
global_a='I am a global'

#네임스페이스 규칙#1 : 네임스페이스가 다르면 참조가 안됨. 
def func_1():
    local_a = 1 #지역변수
    print('func_1():', local_a)

    #네임스페이스 규칙#2 : 네임스페이스의 안쪽영역(함수영역)에서는 
    #바깥쪽 네임스페이스(파일영역)의 변수를 참조(read)할 수 있음. 
    print('func_1():', global_a)

#print(local_a) ERROR! 지역변수이므로 함수내에서만 인식
func_1()
print(global_a) 

#네임스페이스 규칙#3 : 네임스페이스의 안쪽영역(함수영역)에서 
#바깥쪽 네임스페이스(파일영역)의 변수를 변경은 못함. 
def func_2():
    global_a=19 #지역변수를 새로 만든 결과임. 글로벌변수인 global_a와 아무관계가 없음. 
    local_a = 1 #지역변수
    print('func_2():', local_a)
    print('func_2():', global_a) 

func_2()
print(global_a) 

def func_3():
    local_a = 1 #지역변수
    print('func_3():', local_a)
    print('func_3():', global_a) # 전역변수
    #global_a=19  #전역변수 ERROR! 전역변수로 인식. 
    #지역변수를 대입전에 사용하려고 한다고 인식 

func_3()
print(global_a) 

#네임스페이스 규칙#4 :  네임스페이스의 안쪽영역(함수영역)에서 글로벌변수 변경방법
def func_4():
    local_a = 1 #지역변수
    global global_a # 글로벌 변수를 사용한다고 명시적으로 선언. 
    print('func_4():', local_a)
    print('func_4():', global_a) # 전역변수
    global_a=19

func_4()
print(global_a) 

'웹_프론트_백엔드 > Python' 카테고리의 다른 글

2020.01.30  (0) 2020.01.30
2020.01.29  (0) 2020.01.29
2020.01.23  (0) 2020.01.23
2020.01.22  (0) 2020.01.22
2020.01.21  (0) 2020.01.22