Day10 귀속 함수, 모듈, 교체기, 생성기
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
의 오류를 던진다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.