Day10 귀속 함수, 모듈, 교체기, 생성기

4274 단어

1. 귀속 함수


1. 귀속 함수는 무엇입니까
함수에서 함수 자체를 호출하는 함수는 귀속 함수다.
def func1():
    print('=======')
    func1()

func1()

2. 귀속 작용
순환은 할 수 있는 대로 할 수 있다
a = 0
def func2():
    global a
    if a < 3:
        print("aaa")
        a += 1
        func2()

func2()

3. 귀속 함수를 어떻게 쓰는가
첫 번째 단계: 임계값 - 순환이 끝나는 조건을 확정하고 임계값이 있는 곳에서 함수를 끝내야 합니다!
두 번째 단계: 관계 찾기 - 다음 순환과 지난 순환의 관계 찾기;
f(n)와 f(n-1)의 관계를 찾다
3단계: 함수의 기능이 이미 실현되었다고 가정하고 f(n-1)를 통해 f(n)의 기능을 실현한다
예: 구1+2+3+...+n
#  :
n = 100
print(sum(range(n+1)))

#  :
n = 100
sum1 = 0
for x in range(n+1):
    sum1 += x
print(sum1)

#  :
def my_sum(n):
    # 1、 
    if n == 1:
        return 1
    # 2、  my_sum(n) my_sum(n-1) 
    # my_sum(n) : 1+2+3+...+n
    # my_sum(n-1) : 1+2+3+...+n-1
    # my_sum(n) = my_sum(n-1) + n
    return my_sum(n-1) + n
print(my_sum(100))

예:
def fab(n):
    if n == 1 or n == 2:
        return 1
    return fab(n-1) + fab(n-2)

print(fab(5))

4. 순환적으로 할 수 있는 일은 귀속으로 하지 마라
귀속의 단점: 귀속의 가독성이 비교적 낮고 함수 호출은 창고(stack)라는 데이터 구조를 통해 이루어진다. 한 함수 호출에 들어갈 때마다 창고는 창고 프레임을 추가하고 함수가 돌아올 때마다 창고는 창고 프레임을 줄인다.창고의 크기가 무한하지 않기 때문에, 귀속 호출 횟수가 너무 많으면 창고가 넘칠 수 있습니다.권장하지 않습니다.

2. 모듈의 사용


1. 모듈
Python에서 py 파일 하나가 모듈입니다.
a, 시스템 모듈(표준 라이브러리) - Python 시스템에서 제공하는 모듈
해석기를 설치할 때 이미 해석기에 가져왔고, 사용할 때 코드에서 직접 가져옵니다.
import random #  
import math #  
import json #  json 
import re #  
import sockey #  python 
import time #  
import threading # 

b, 사용자 정의 모듈 - 프로그래머가 만든py 파일
자체 작성 모듈
다른 사람이 쓴 모듈 - 제3자 라이브러리 (해석기에 먼저 다운로드한 다음 코드에 가져올 수 있음)
표준 라이브러리와 제3자 라이브러리는 일반적으로 모듈을 통해 변수, 함수, 클래스를 제공한다
2. 모듈 사용 방법
import 모듈 이름
프로그램에서 지정한 모듈을 직접 가져오면 모듈의 모든 전역 변수를 사용할 수 있습니다.가져온 후 모듈 이름. 변수를 통해 모듈의 내용을 사용합니다.
from 모듈명 import 변수 1, 변수 2...
지정된 모듈을 가져옵니다.가져오면 import 뒤에 있는 변수만 사용할 수 있습니다.가져온 후 변수를 직접 사용합니다. 앞에'모듈 이름'을 넣지 않아도 됩니다.
모듈 이름에서 import*
모듈을 모두 가져오고 안에 있는 모든 전역 변수를 직접 사용할 수 있습니다.
3. 도입 모듈의 실질
a,import를 사용하든fromimport를 사용하든지 모듈을 가져올 때 모듈의 모든 코드를 실행합니다.
b,python의 모듈은 여러 번 가져오지 않습니다. 가져올 때 시스템이 현재 모듈이 이미 가져왔는지 자동으로 검사하기 때문입니다.
4. 모듈의 내용이 실행되는 것을 어떻게 막는가
이if문장에 적힌 코드는 다른 모듈에서 실행되지 않습니다.
if __name__ == '__main__':

다른 모듈에서 실행하지 않으려는 코드를 위의if문장에 넣으십시오.다른 모듈에 사용되기를 원하는 코드는if문장 밖에 두십시오.일반 함수의 성명은if의 바깥쪽에 놓여 있습니다.
원리:
모듈마다 __name__속성, 대표 모듈 이름.기본적으로py 파일의 파일 이름입니다.현재 모듈이 실행 중인 경우 (직접 실행) 모듈 속성 __name__값이'_ _ 이 됩니다.main__'
5, 이름 바꾸기
모듈을 가져올 때 모듈이나 모듈의 내용을 다시 명명할 수 있습니다.
import   as   #  , 

from   import name as new_name #  

3. 교체기


1. 교체기가 무엇입니까 (iter)
python에서 제공하는 용기형 데이터 형식입니다.교체기 원소를 얻을 때는 뒤로 가는 원소에서만 얻을 수 있고, 그 원소는 교체기에 존재하지 않는다.
2. 교체기의 자면량
교체기에는 고정된 형식의 글자 양이 없습니다.
교체기는 용기로서 안의 원소는 다른 서열을 통해 변환되거나 생성기만 생성할 수 있다.
교체기의 요소는 모든 종류의 데이터가 될 수 있다.
iter1 = iter('hello')

3. 요소 가져오기
교체기의 요소는 검사만 지원하고 삭제는 지원하지 않습니다
교체기는 넥스트 함수를 통해 단일 원소를 가져오고, for-in은 하나하나 원소를 가져옵니다.얻은 원소만 있으면 원소는 교체기에 존재하지 않는다.
a、next
next( ) #  ( )

예:
iter1 = iter('abc')
print(next(iter1)) # a
print(next(iter1)) # b
print(next(iter1)) # c

교체기에서 데이터를 다 찾으면 StopIteration 오류가 발생합니다.
b、for-in
for x in iter1:
    print(x)

4. 생성기


1. 생성기가 무엇입니까
생성기는 교체기다.교체기가 반드시 생성기는 아니다.
2. 생성기가 어떻게 원소를 생성하는가
yield 키워드가 있는 함수를 호출하면 생성기를 얻을 수 있습니다.
yield가 없는 함수 (있는 것만 보기): 호출할 때 함수체를 실행하고 되돌아오는 값을 가져옵니다.
yield가 있는 함수: 호출할 때 함수체를 실행하지 않고 되돌아오는 값을 가져오지 않고 생성기를 생성합니다. (함수 호출 표현식은 생성기)
def func1():
    yield
print(func1()) # 

3. 생성기 안의 원소
생성기의 원소도next나for-in을 통해 가져옵니다.
생성기는 원소를 얻는다. 실질은 생성기에 대응하는 함수를 실행하는 것이다. 매번 yield 문장까지 실행하고 yield 뒤의 값을 다음에 얻은 원소로 삼는다.다음에 원소를 가져올 때 지난번에 끝난 위치를 뒤로 하고 다음 yield까지 함수가 끝날 때까지 유추합니다.
generator는 알고리즘을 저장하여 매번 호출next(g)할 때마다 g의 다음 원소의 값을 계산하여 마지막 원소까지 계산하고 더 많은 원소가 없을 때 StopIteration의 오류를 던진다.

좋은 웹페이지 즐겨찾기