파이썬 기초 - 기능 지인 (b)

1 함수 파라미터의 증가에 메타 정보

함수를 작성하고이 기능을 사용하는 방법을 다른 사용자가 정확히 알 수 있도록,이 함수의 매개 변수에 대한 몇 가지 추가 정보를 추가 할.

함수 매개 변수 주석을 좋은 아이디어입니다 사용, 그것은이 기능을 올바르게 사용하는 방법 프로그래머 메시지를 표시합니다. 예를 들어, 다음 함수를 주석있다 :

DEF (: INT, Y : X int)를 추가 -> INT :
     리턴 X + Y

파이썬 인터프리터는 이러한 주석에 대해 어떤 의미를 추가하지 않습니다. 그들은 어떤 런타임 주석의 효과 전에, 검사의 종류되지 않고 틈이 없다. 그러나 소스 코드는 친구의 측면에서 도움이 될 것입니다 읽는 사람들을 위해. 타사

이러한 도구와 프레임 워크는 의미 주석을 추가 할 수 있습니다. 동시에 그들은 또한 문서에 표시됩니다.

도움 (추가) 

기능 추가에 대한 도움말 에서 모듈 __main__ : 

추가 (X : INT, Y : INT) -> INT

모든 유형의 객체는 함수 (예를 들어, 숫자, 캐릭터, 오브젝트 인스턴스 등) 주석을 사용하지만, 일반적으로 문자열 클래스 이상의 포인트의 사용을 말할 수 있지만.

기능 주석 만의 기능에 저장되어있는  __annotations__ 호텔입니다. 예를 들면 :

더하다. __annotations__ 
{ ' X ' : INT, ' Y ' : INT, ' 복귀 ' : INT}

사용에주의 많은이있을 수 있지만, 그들의 주요 목적은 문서입니다. 파이썬은 일반적으로 소스 코드를 읽는 것만으로 말하기 문장의 유형이 아니기 때문에이 함수에 전달해야 매개 변수의 종류 무엇인지 알고 어렵습니다. 이 시간

올바르게 기능을 사용할 수 있도록 사용 주석, 프로그래머에게 더 많은 팁을 제공 할 수 있습니다.

2, 기본 함수 인자가

함수의 선택적 매개 변수가 매우 간단 정의 함수 정의의 매개 변수에 대한 디폴트 값을 지정 지시하고 목록의 마지막의 매개 변수 목록을 넣어.

기본 매개 변수는 목록, 설정이나 사전 등의 수정 가능한 컨테이너 인 경우 다음과 같이 없음의 기본 값으로 사용 할 수 있습니다 :

# 사용 디폴트로 목록 
DEF 스팸에서 (A = B, 없음) :
     IF B는 IS 없음 : 
        B = [] 
    ...

당신이 기본값을 제공하고자, 만 전달 특정 기본 매개 변수에서 테스트하지 않으려면 다음과 같이 쓸 수있다되지 않습니다 :

_no_value = 오브젝트 () 

DEF 스팸 (A = B _no_value)
     경우 b는 이다 _no_value :
         인쇄 ( ' 아니오 b 값이 공급되지 ' ) 
    ...

우리는이 기능을 테스트 :

스팸으로부터. (1) >> 공급하는 값 B 
스팸 (부터 1,2) = A >>. 1, B = 2 
스팸으로부터 ( . 1, 없음). 1 >> A =, B = 없음    #은 전송에 발견 없음이 아닌 값이 될 수있다 두 경우 모두 값만큼 차이가있다

참고 : 기본 매개 변수 지정의 값 기능 만이 생성 될 때 한 번.

X = 20
 데프 스팸 (a, B = X)
     프린트 (a, b) 

스팸 ( 1) >> 1,20 

X = 30 
스팸 ( 1) >> 1,20

우리는 함수 정의의 기본 가치를 발견했을 때 때문에 기본 매개 변수 값은 영향을받지 않습니다 x의 값을 변경합니다.

둘째, 매개 변수는 없음, 참, 거짓, 숫자 또는 문자열로 불변의 객체의 디폴트 값이어야합니다. 특히,이 같은 코드를 작성하지 않습니다

DEF 스팸 (a [])
     패스

그렇게하지 않으면 기본 값이 다른 곳에서 수정 될 때, 당신은 온갖 종류의 문제가 발생합니다. 이 기능은 다음에 호출 할 때 이러한 변경 사항은 기본에 영향을 미칠 것입니다. 예를 들면 :

DEF 스팸 (a, B = [])
     인쇄 (b)
     B 

X = 스팸 (1 )

 >> [] 

x.append ( 10 ) 

, X = 스팸 (1 )

 >> [10]

이 결과는, 이러한 결과를 방지하려면 기본 값이 없음으로 설정하려고 한 다음 함수에서 그것을 확인하기 위해, 우리가 원하는 것이 아니다, 앞의 예는 없음 값을 테스트 할 때 그렇게하는 것입니다, 아주 연산자 중요한 것은,이 작업의 핵심은 다음과 같이 우리는 종종 작성 :

DEF 스팸 (a, B = 없음)
     의 경우  없다 B : 
        B = []

문제는 그 없음의 값이 참 거짓으로 처리 할 수 ​​있도록 작성하지만 거짓으로 처리됩니다 (예 : 길이가 0,리스트, 튜플, 사전 등의 문자열로) 다른 개체가 있지만. 따라서, 위의 코드는 다른 실수의 번호가 입력되지 않는 입력됩니다. 예를 들면 :

스팸으로부터. (1) # 확인 
X = [] 
는 스팸 ( . 1 , X) 위와 # 같은 매개 변수를 자유롭게 변경할 수 
는 스팸 ( . 1 , 0) # 번호 불변 
스팸으로부터 ( . 1 ' ) # 문자열 불변 유형

변수 값을 캡처하는 3, 익명 함수

효과 다음 코드를 살펴 :

X = 10 = 람다 Y, X + Y 
, X = 20 
, B = 람다 Y, X + Y 
A ( 10 ) >> 30 
B ( 20) >> 30


람다 식 x는 자유 변수 바인드 런타임 값과 다른 기능으로 정의 된 파라미터의 디폴트 값이 정의에 결합하지. 람다 식을 호출 할 때 따라서, x의 값은 실행시의 값이다. 예를 들면 :

X = 10 
A ( 10) >> 20 

, X = 20 

, B ( 10) >> 30

다음과 같이이 될 수있는 기본 매개 변수로 정의 할 수있는 매개 변수 값의 값을 캡처 선언 익명 함수를 원하는 경우 :

X = 10 = 람다 Y, X = X, X + Y 
, X = 20 
, B = 람다 Y, X = X, X + Y 
A ( 10) >> 20 
B ( 10) >> 30

루프 또는 목록 유도에서 람다 식의 목록을 작성하고, 기능으로 사용자가 정의 할 때마다 반복 값을 기억 기대할 수있다.

# 오류 기입
 = 람다 X : X + N- 위한 N-  범위 (4. )] 에 대한 F 에서 A : 
    F (0) 이 전단 (F (0))


    

예로 시작하는 모든 상기 기록 출력 (4)는, 함수가 실행되고, n의 값이 최종 값의 반복이다.

상기 파라미터의 디폴트 값의 형태로 함수를 사용하여, 람다 함수를 정의하는 값으로 구속 될 수있다.

A = [ 람다 X, N = N, X + N  N  범위 (4 )] 

에 대한 F 에서 A : 
    F (0) 
    인쇄 (F (0))

----------------

추천

출처www.cnblogs.com/huiyichanmian/p/12103187.html