주요 기능 파이썬을 작성하는 방법

확실히 작지 main () 함수에서 작성된 프로그램 학습 과정의 각 프로그래머가, 파이썬 프로그래머도 예외는 아니다. 이 문서는 파이썬 귀도 반 로섬 (Guido van Rossum) 기능을 권장 표현의 아버지를 공유하는 것입니다 크게이 기능의 유연성을 향상시킬 수 있습니다.
일반적으로, 파이썬 프로그래머 아마) (주 기능 쓰기 :
"" ". 모듈의 문서화 문자열을
. 긴 사용은 메시지에서 언급 역할을합니다 이것은
" ""
가져 오기 SYS
가져 오기 getopt는
) (DEF 주 :

명령 줄 옵션을 구문 분석

try:
    opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
except getopt.error, msg:
    print msg
    print "for help use --help"
    sys.exit(2)
# process options
for o, a in opts:
    if o in ("-h", "--help"):
        print __doc__
        sys.exit(0)
# process arguments
for arg in args:
    process(arg) # process() is defined elsewhere

경우 이름 == " "
주 ()
귀도는 main () 함수가 자신을 쓰기 전에 구조와 유사하다는 것을 인정하지만, 쓴 복잡한 명령 줄 옵션이 특히 필요가 해결 될 때 유연성이 충분히 높지 않다. 이를 위해, 그는 당신에게 몇 가지 제안을 제시.
선택적인 파라미터는 argv 추가
: 우선 main () 함수를 수정하여, 그 옵션 파라미터는 argv 지원 전화 대화식 쉘이 함수 얻어
DEF 본체 (ARGV = 없음)
: 없음 ARGV IS 경우
는 argv = SYS. ARGV

등의 getopt는 () 호출과는 argv sys.argv에 교체.

이 과정에서 우리는 동적 변수는 argv 값을 제공하므로 다음과 같은보다 더 유연하게 쓸 수 있습니다 :
DEF 주 (변수는 argv = sys.argv에) :

기타

당신이 함수를 호출 할 때, sys.argv에의 값이 다를 수 있기 때문입니다; 옵션 기본 매개 변수는 main () 함수에 정의되어 계산이 좋았다.
하지만 지금 sys.exit () 함수 호출에 문제가 발생합니다 주 () 함수를 호출 sys.exit ()가, 대화 형 인터프리터를 시작합니다 때! 이 솔루션은 main () 함수의 반환 값은 종료 상태 (종료 상태)를 표시하도록하는 것입니다. 따라서,이 코드의 최후 행이된다 :
IF 이름 == " 메인 "
sys.exit (주 ())
와, (n)의 모두가 N을 반환 sys.exit에서 main () 함수를 호출 .
사용법 () 예외 정의
: 더 개선, 기능이 절 예외를 제외하고 마지막 캡처) (주 될 수있다, () 이상 사용법을 정의하는 것입니다
가져 오기 SYS
가져 getopt에의
클래스 사용법 (예외) :
DEF 초기화를 (자체, MSG)
self.msg의 MSG =
DEF 본체 (argv와 = 없음)
argv와 아무도없는 경우 :
argv와 = sys.argv에
은 try :
은 try :
OPTS, 인수 = getopt.getopt (argv와의 [. 1, "H", [ " )] "도움말
getopt.error, MSG 제외 :
사용법 인상 (MSG)

더 많은 코드, 변경

except Usage, err:
    print >>sys.stderr, err.msg
    print >>sys.stderr, "for help use --help"
    return 2

IF 이름 == " ":
sys.exit (주 ())
main () 함수는 하나의 출구 점 (종료)이되도록,이 방법은 이전의 두 출구 지점보다 낫다. 또한,이 재구성 쉽게 구문 분석 매개 변수도 : 보조 기능의 사용에 약간의 문제가 발생 AxiTrader 리베이트 www.kaifx.cn/broker/axitrader.html을하지만, 복귀 2의 사용은하지만, 조심 처리 문제는 값이 전달 반환 .
== '이름으로 파이썬 에서의 역할
고전적인 영어 설명 : 스크립트를 가져올 수와 실행 모두 확인
중국어 설명 : 스크립트가 직접 가져 호출 할 수 있고 실행할 수있는
일을 직접 실행

고양이 test_fun.py

데프 재미 () :
인쇄 ( 이름 )
인쇄 ( '이 재미')
의 경우 이름 == ' '
재미 ()
( '이 메인이다') 인쇄
파이썬은 test_fun.py

이 재미
이 주요 인
, 2被调用수입

test_fun 오기
test_fun.fun ()
test_fun
이 재미되어
통화를 도입했을 때의 출력은 여기에서 "주"가 표시되지 않고, 즉 = '주'다음 코드가 실행되지 않는다 모듈 이름, 주요 기능이 수행되지 않는다.
이 기능은 또한 유용하다 : 외부 모듈은 우리의 코드 디버깅을 수행하지 않는 경우 "이름 == '주'가"우리가 전화를 할 수있는 코드를 디버깅, 우리는 몇 가지 디버깅 코드를 추가 할 수 있지만 우리는 문제를 해결하려면 때 모듈 파일을 직접 구현의 문제, 디버그 코드를 제대로 실행하기!
 파이썬 해석 스크립트 언어이고, C / C ++ 다른 언어, C / C ++ 프로그램은 주요 기능의 처음부터 끝까지 프로그램 실행 파이썬 시퀀스는 실행을 시작한다. 다른 기능 께 미안 내부 C / C ++ 기능과 유사한 구성 입구, 전화 모듈 (기능)이 자신의 별도의 (디버깅) 수행하자 당량 효과 파이썬의 주요 기능을 요약한다.
한편 : 우리는 자신의 실행 (디버그)를 원하는 혼자
#의 : 여기에 우리가 실제 디버깅을보고 (이 파일이 test.py이라고 가정)
test.py의
인쇄 ( '헬로 월드!')
DEF의 AAA () :
인쇄 ( '는이 메시지입니다 AAA 기능의 발 ')
DEF의 main ()
인쇄 ('는이 주 기능으로 메시지 인 ')
IF 이름 ==' '
의 main ()
인쇄 ( '지금 이름 % % S IS' 이름 )
파이썬 test.py 출력을 실행합니다
! 헬로 월드
은이 메인 함수의 메시지입니다
지금 이름 입니다
우리는 AAA 기능이 실행되지 정의하는 것을 볼 여기에, 그리고 내부의 주요 기능 콘텐츠가 나타내는 실행 IF 이름 == ' '이 문) (주에서 판정 조건을 수행함으로써 결정된다 
반면 : 임포트 기능 명령은 다른 평 파일 내부에 사용될 수있다 우리 call.py로 모듈 (기능) test.py, 동일한 폴더에 test.py call.py 주목된다
#의 call.py
테스트 수입에서의 AAA
AAA ()
인쇄 ( "자 이름 이며 S % '% 이름 )
파이썬 call.py 출력을 수행 :
! 헬로 월드
AAA의이 메시지는 함수
지금 이름 IS메인은
우리가 평 파일을 쓸 때 그래서, 당신은 ~ 내부 함수를 테스트하기 때문에 기능 검사가 자신의 친구를 쓰기 호출 할 수있는 주요 기능 항목을 구성 할

추천

출처blog.51cto.com/14511863/2437797