지구정복

[Python] 3/8 | 반복문(while), 함수(기본사용, 내장함수사용), Class(멤버변수, 생성자) 본문

카테고리 없음

[Python] 3/8 | 반복문(while), 함수(기본사용, 내장함수사용), Class(멤버변수, 생성자)

nooh._.jl 2021. 3. 8. 12:44
728x90
반응형

복습 및 배울내용

 

-파이썬의 자료형
	모두 객체 형태
		프로퍼티
		메서드

-단일값 자료형
	Boolean
	Number
	String
-집합 자료형
	List
	Tuple
	Dicttionary
	Set
*형변환하는법 
	자료형이름()
	dir() : 내장함수들 무엇이있는지 출력
	type() : 타입확인하기

-제어문
	1)
	if 조건 :
		내용
	elif :
		내용
	
	2)
	if 조건 :
		내용
	elif :
		내용
	else :
		내용

-반복문for
	for 변수 in ( 집합자료형 ) :
		내용

	for 변수, 변수, ... in ( 리스트(튜플) ) :
		내용

	for 변수 in range( 시작값, 끝값, 증가값 ) :
		내용

1. 반복문 (While)

더보기

1. 기본 사용

treeHit = 0
while treeHit <= 10 :
    treeHit = treeHit + 1
    print( '나무를 %d번 찍었습니다.' % treeHit )
    if treeHit == 10 :
        print( '나무가 넘어갑니다.' )

 

구구단 만들기(while문 이용하기)

x = 1
y = 1
while x < 10 :
    while y < 10 :
        print( x,'X',y,'=',(x*y), '\t', end='' )
        y = y + 1
    print( '' )
    x = x + 1
    y = 1

2. 함수

더보기

1. 함수의 정의

함수선언은 def로 시작해 콜론(:)으로 끝내고, 함수싀 시작과 끝은 들여쓰기로 구분
def는 함수 객체를 만들겠다는 키워드이다. return은 함수를 종료하고 값을 전달하는데 사용한다.
함수 안에 내용없이 정의하려면 pass라고 입력한다.

print( '시작' )

#함수 내용없이 정의하기
def func1():
    pass

def func2():
    print( 'func2 호출' )
    
func2()

print( '끝' )

 

2. 함수사용하기

함수 인자 받아들이기

print( '시작' )

#함수 내용없이 정의하기
def func1():
    pass

def func2():
    print( 'func2 호출' )
    
def func3( a ):
    print( 'func3 호출', a )

def func4( a, b ):
    print( 'func4 호출', a )
    print( 'func4 호출', b )
    
func2()
func3( 10 )
func4( 20, 30 )

print( '끝' )

 

지역변수와 전역변수

#함수 안에 a와 밖의 a는 다르다.
#함수 a는 지역변수
#바깥 a는 전역변수
a = 1
def func( a ):
    a = a + 1
    print( 'a1 :', a )
    
func(a)
print( 'a2 :', a )

 

지역변수값을 리턴하면 전역변수에서 사용가능

#함수 안에 a와 밖의 a는 다르다.
#함수 a는 지역변수
#바깥 a는 전역변수
a = 1
def func( a ):
    a = a + 1
    print( 'a1 :', a )
    return a
    
a = func(a)
print( 'a2 :', a )

 

혹은 globla명령어를 함수 안에서 사용하면 된다.

a = 1
def func():
    global a
    a = a + 1
    print( 'a1 :', a )
    
func()
print( 'a2 :', a )

 

def func( a, b ):
    print( 'a :', a )
    print( 'b :', b )
    
func( a=100, b=200 )

#뒤집어도 가능
func( b=200, a=100 )

 

애초에 인자의 초기값 설정

def func2( a, b, c=True ):
    print( 'a :', a )
    print( 'b :', b )
    print( 'c :', c )
    
func2( 10, 20 )    
func2( 10, 20, False )

 

함수의 인자가 정해지지 않았을 경우 정의할 때( 가변인자 )

def func( *args ):
    print( 'args :',args )
    print( 'length :', len( args ) )
    
func()
func( 10 )
func( 10, 20 )

 

가변인자 출력시키기

def func( *args ):
    print( 'args :',args )
    print( 'length :', len( args ) )
    
def func2( *args ):
    for arg in args :
        print( arg, end=' ' )

func2( 10, 20 )

 

함수 리턴값으로 변수 정의

def func1():
    return 10

def func2():
    return 10, 20

a = func1()
print( 'a :', a )

b, c = func2()
print( 'b :', b )
print( 'c :', c )

 

정의된 함수를 변수처럼 사용가능

def func1() :
    print( 'func1 호출' )

#함수의 참조 주소 호출
print( func1 )

#타입확인하기
print( type( func1 ) )

#똑같은 주소값 출력
func2 = func1
print( func2 )

func2()

#함수의 정확한 주소값 출력
print( id( func2 ) )

 

함수에서 다른함수 호출하기

def subfunc() :
    print( 'subfunc 호출' )

def mainfunc( sub ) :
    sub()

mainfunc( subfunc )

 

리턴값으로 다른 함수 호출하기

def subfunc() :
    print( 'subfunc 호출' )

def mainfunc2( sub ) :
    return sub

result = mainfunc2( subfunc )
result()

 

람다함수 사용하기
자바스크립트의 화살표함수와 비슷하다.

쓰는형태는 다음과 같다. lambda 인자값 : 리턴값

def func11( a ) :
    return a

print( 'result :', func11(1) )

#위의 예시를 람다로 사용해보자.
func12 = lambda a : a
print( 'result :', func12(1) )

 

인자가 두 개일 때

func22 = lambda a, b : a+b
print( 'result :', func22(1, 2) )

 

3. 내장함수 사용하기

all함수

all(x)는 반복가능한(iterable) 자료형 x를 입력인수로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다.

#반복가능한 자료형중에 0 또는 공백이 있는지 여부를 출력
#0 또는 공백이 없으면 True
print( all( [] ) )
print( all( [0] ) )
print( all( [''] ) )
print( all( [1, 2] ) )

 

any함수

 

any(x)는 반복가능한 자료형 x를 입력인수로 받고 이 x의 요소 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False를 돌려준다.

#반복가능한 자료형중에 0 또는 공백이 있는지 여부를 출력
#0 또는 공백이 없으면 True
print( any( [] ) )
print( any( [0] ) )
print( any( [''] ) )
print( any( [1, 2] ) )

 

enumerate

#반복가능한 자료형의 순서값과 값 모두 출력하려면
#enumerate() 함수를 사용한다.
for i, name in enumerate( ['body', 'foo', 'bar'] ):
    print( i, name )
    

 

eval

문자열을 코드화 시켜서 실행시켜주는 함수

 

filter함수

양수만 추출하는 함수를 정의해보자.

#양수만 추출(필터)하는 함수 정의
def positive( lists ) :
    result = []
    for i in lists :
        if i > 0 :
            result.append(i)
    return result

print( positive( [1, -3, 2, 0, -5, 6] ) )

 

위 함수를 filter함수로 간단하게 작성할 수 있다.

def positive2( x ) :
    return x > 0

print( list( filter( positive2, [1, -3, 2, 0, -5, 6] ) ) )

 

 


3. Class 사용하기

더보기
class Cookie :
    pass

c1 = Cookie()

print( type(c1) )
print( id(c1) )

 

클래스 안에 프로퍼티 정의 및 출력

class Cookie:
    a = 10
    b = 20
    
c1 = Cookie()

print( c1.a )

 

클래스 안에서 함수를 정의할 때는 자기참조인자를 써주어야한다.
self

class Cookie :
    #self 는 this와 같이 자기 참조이다.
    def func1(self):
        print( 'func1 호출', self )

c1 = Cookie()
c1.func1()

 

함수의 인자추가

class Cookie :
    #self 는 this와 같이 자기 참조이다.
    def func1(self):
        print( 'func1 호출', self )
    def func2(self, a, b):
        print( 'func2 호출:', a )
        print( 'func2 호출:', b )

c1 = Cookie()
c1.func1()
c1.func2(10, 20)

 

클래스 안에 멤버변수 선언 및 초기화하기

class Cookie :
    #self 는 this와 같이 자기 참조이다.
    def func1(self):
        #동적으로 a라는 변수가 자동으로 선언 및 초기화까지 된다.
        self.a = 10
        print( 'slef.a :', self.a )
    def func2(self):
        print( 'slef.a :', self.a )

c = Cookie()
c.func1()
print( c.a )
c.a = 100
c.func2()

 

매개변수로 멤버변수 초기화하기

class Cookie :
    #캡슐화하기 = setter 메서드와 같다.
    def func1(self, a):
        self.a = a
    def func2(self):
        print( 'self.a :', self.a )

c = Cookie()
c.func1( 10 )
c.func2()

 

생성자 선언하기

생성자는 __init__로 사용한다.

class Cookie:
    #생성자
    def __init__(self):
        print( '__init__ 호출' )

c = Cookie()

 

생성자에서 멤버변수 초기화 및 선언하기

class Cookie:
    #생성자
    def __init__(self, first, second):
        self.first = first
        self.second = second
    
    def add(self):
        return self.first + self.second

c = Cookie( 10, 20 )
print( c.add() )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments