제 열두 파이썬의 기초 - 고급 기능의 기능, 가치 방문 (흰색 piao 점유율)

# 기능의 허용 매개 변수의 수를 쓰기
우리는 매개 변수의 수를 수용 할 수있는 기능을 쓰고 싶어 #을

용액 번호는 :
위치 파라미터들의 임의의 수의 약제 학적 기능을 제조 #, 파라미터의 시작 부분에 사용될 수있다 *
DEF AVG (우선 REST *)
. 창 ((제 + SUM (REST)) / (1 + LEN ( 나머지)))

인쇄 (AVG (1,2)) # 1.5
인쇄 (AVG (1,2,3,4)) # 2.5

다음 코드를 계산하는 것은 순서로 처리 할 것입니다 #rest 모든 전달 된 위치 매개 변수를 포함하는 튜플입니다
당신이 키워드 매개 변수의 번호로 시작하는 데 사용될 수있다 동의 할 경우 # ** 파라미터 :
오기 HTML
DEF의 make_element (이름, 값, kwargs로 **)
key_values = '% S = "% S"'kwargs.items의 상품 항목 % ()]
kwarg_str = '.join (key_values)
ELE = '<attrs에 이름이 {{}}> {값} </ 이름} {>'. 형식 (NAME = 이름, 바인드합니다 = kwarg_str, html.escape 값 = (값))
ELE를 반환

STR1 make_element = ( '항목', 'Albatatross'크기 = '큰'량 = 6)
인쇄 (STR1) #Albatatross
STR2 make_element = ( 'P', '')
인쇄 (STR2) #

<스팸>

여기 # kwargs로는 건너 모든 주요 매개 변수 (선택 사항)를 포함하는 사전입니다
당신이 함수가 동료 임의의 수의 위치 매개 변수 및 키워드 매개 변수를 허용 할 경우 결합 된 사용 * 및 ** 할 수있는 한, #을 .

와 함수 정의에서 #, 매개 변수는 마지막 인수 표시되는 위치에서 시작하고, 매개 변수는 마지막 매개 변수로 표시 **로 시작.
#에서
뒷면 여전히 발생할 수있는 다른 매개 변수는이 매개 변수를 키워드 전용 매개 변수라고하며,이 있습니다

# 기본 매개 변수와 함수를 정의,
우리가 선택적 매개 변수와 함수를 정의 할 #은 매우 간단합니다 - 그냥 매개 변수 정의를 복사하고 기본 매개 변수가 마지막에 표시 할 수 있도록.
# 기본값 인 경우 변수 컨테이너, 다음, 예를 들어, 목록, 설정 또는 사전을 위해, 기본으로 아무도해야
# 참고 : 만 할당의 기본 매개 변수 바인딩을하지 않을 때 한 번 함수 정의! ! ! ! ; 항상 이어 기본 매개 변수 할당 불변의 객체의
# (예 : 없음, 참, 거짓, 문자열, 숫자 등)
짧은 # 마십시오 쓰지 코드 :
DEF FUNC (A, LT = []) :
인쇄 (LT)
반환 LT
X = FUNC. (1) # []
인쇄 (X) # []
x.append (99)
x.append ( 'YOW! YOW! qeknow')
FUNC (2) # 99 'YOW! 아뿔싸! 결국 기본 매개 변수 값으로 이어질 것입니다] qeknow은 수정할 수 계속! ! !

A = ...
인쇄 (A, 타입 (A)) # 생략 부호 <클래스 '생략'>

# 콜백 함수에 추가 상태를 수행
우리는 콜백 함수를 사용하는 데 필요한 코드를 작성 #,하지만 콜백 함수 내부 콜백 함수에 사용하기 위해 추가로 상태를 수행 할 수 있기를 바랍니다

해결책 # :
# 다음 함수를 정의 콜백 함수를 호출합니다 :
#해야의 콜백 함수에 모든 초점
DEF funcCallBack (FUNC, 인수, *, 콜백) :
RES = FUNC가 (* 인수)
콜백 (RES를 )

데프 추가 (A, B) :
A +의 B를 반환

DEF my_print (고해상도)
인쇄 (. '결과 = {}'형식 (고해상도))

funcCallBack (ADD, (1,2), 콜백 = my_print) # 결과 = 3

# 콜백 방법의 상세 내용은 휴대용 방법 결합 (결합 된 메소드)를 사용하는 대신 일반적인 기능의
예 아래 # 예, 각각의 호출, 인쇄 매수는 함수 호출 콜백 :

클래스 CallBackFuncClass () :
DEF 초기화하기 (자기)
self.count = 0
DEF 처리기 (자기, 결과) :
self.count + = 1
잉크 ( '[{}, {} = 결과'형식 (self.count. 결과))
R = CallBackFuncClass ()

범위 X (3) :
funcCallBack (ADD, (2,3), 콜백 = r.handler)
# [1] = 5 결과
# [2] = 5 결과
# [3] 결과 = 5

# 완전한 내부 정의 된 함수를 사용하여 다른 클래스로
DEF CallBackFuncClass ()
COUNT = 0
DEF 처리기 (결과) :
비 로컬 COUNT의
. + = 1 COUNT
인쇄 ( "{} 결과 = {}"형식 (COUNT. , 결과))
핸들러를 돌려줍니다

핸들러 CallBackFuncClass = ()

funcCallBack (ADD, (2,3) = 콜백 핸들러) # 1 결과 = 5
funcCallBack (ADD, (2,3), 콜백 CallBackFuncClass = ()) # 1 결과 = 5

# 마지막으로 중요한 것은, 추가 매개 변수는 () 콜백 함수에 부분의 문제를 해결하기 위해 매개 변수의 다음 수를 상태를 수행 할 수 있습니다

클래스 서열 () :
데프 초기화하기 (자기) :
self.sequence = 0

DEF 핸들러 (입술, 서열 서열)
seq.sequence + = 1
인쇄 ( "{} 입술 {}"형식 (seq.sequence, 고해상도)).

F 등 수입 functools
서열 = 서열 ()
funcCallBack (ADD, (2,3), 콜백 = f.partial (처리기 서열 = 서열)) # 1 고해상도 5

# 통로가 폐쇄 변수의 내부에 정의
우리는 함수에 의해 폐쇄 연장 할 # 같은 내부 폐쇄 정의 된 변수를 액세스 및 수정 될 수 있음

솔루션 번호 :
외부 세계에 내부 변수의 폐쇄에 #주의를 기울이 완전히 격리.
# 기능과 내부지지 변수에 폐쇄에 대한 액세스를 제공하는 특성의 함수로 기록을 액세스 할 수있다

) (DEF 샘플 :
N = 0
데프 FUNC () :
인쇄 ( 'N', N)은
DEF) (get_n :
창 N
DEF set_n (값) :
로컬이 아닌 N
N = 값

func.get_n = get_n
func.set_n = set_n
return  func

F = 샘플 ()
F () * N : 0
f.set_n (10)
F () * N : 10
인쇄 (f.get_n ()) # 10

发布了17 篇原创文章 · 获赞 1 · 访问量 353

추천

출처blog.csdn.net/weixin_43520503/article/details/104557654