자바 프로그래머 의 python 길 (함수)

13680 단어 pythonpython 의 길
전편
앞의 두 글 은 숫자, 문자열, 목록, 모듈, 집합 과 사전, 그리고 if else 와 순환 while, for 의 사용 을 판단 하 는 python 의 데이터 형식 을 간단하게 소개 합 니 다.그리고 우 리 는 이미 이러한 기능 으로 작은 프로그램 을 만 들 수 있 지만, 이러한 기능 만 있다 면, 비교적 큰 프로그램 을 만 드 는 것 은 매우 힘 들 것 이다.프로그램 을 쓰 는 과정 에서 우 리 는 공공 알고리즘 과 논 리 를 만 날 수 밖 에 없다. 다음 의 작은 예 를 보 자.
#           ,     10 20    。
a = 10
b = 20
result = a ** 2 + b ** 2
print(result)

   :500

지금 우 리 는 하나의 수 요 를 증가 시 키 고 다른 두 수의 제곱 합 을 계산 해 야 한다. 그러면 우 리 는 이렇게 할 수 밖 에 없다.
a = 10
b = 30
result = a ** 2 + b ** 2
print(result)

   :1000

상기 두 단락 의 프로그램 을 비교 해 보면 우 리 는 사실 두 단락 의 프로그램 이 기본적으로 같다 는 것 을 알 수 있다. 나 는 단지 다시 한 번 복 사 했 을 뿐 이 고 두 개의 값 을 바 꿨 을 뿐이다.설마 두 개의 값 을 바 꿀 때마다 프로그램 을 다시 써 야 합 니까?물론 그렇다면 프로그래머 는 욕 을 한다.그래서 함수 가 생 겨 났 습 니 다.쉽게 말 하면 함 수 는 하나의 알고리즘 으로 고정된 논 리 를 밀봉 했다.우 리 는 자주 사용 하 는 알고리즘 을 하나의 함수 로 통합 시 켰 다. 이 알고리즘 을 사용 할 때 우 리 는 중복 되 는 코드 를 다시 쓰 지 않 아 도 된다. 이것 은 코드 의 이 용 률 을 높 였 다.예 를 들 어 print 는 하나의 함수 로 인쇄 출력 의 논 리 를 실현 합 니 다. 우 리 는 인쇄 할 때마다 print 함수 만 호출 합 니 다.
함수 의 구조
우 리 는 자신의 함 수 를 정의 할 수 있 습 니 다. 함수 의 구 조 는 다음 과 같 습 니 다.
def functionName(arg1,arg2,....):
       
    return result
  • def: 함 수 를 정의 하 는 키워드 입 니 다. 컴퓨터 에서 이 키 워드 를 보면 뒤의 내용 이 함수 라 는 것 을 알 수 있 습 니 다.
  • functionName: 우리 가 정의 하 는 함수 의 이름
  • 괄호 안에 있 는 것 은 함수 의 매개 변수 이 고 매개 변 수 는 비어 있 습 니 다. 우 리 는 이곳 의 매개 변 수 를 형 삼
  • 이 라 고 부 릅 니 다.
  • 함수 체: 함수 의 논리 알고리즘
  • return: 함수 의 반환 값 입 니 다. 함 수 는 기본적으로 None 로 돌아 갑 니 다.함 수 를 정의 한 것 은 사용 하기 위 한 것 이다.함 수 를 어떻게 사용 합 니까? 함수 이름과 매개 변 수 를 직접 사용 합 니 다. (여기 있 는 매개 변 수 는 실제 인삼 이 라 고 합 니 다) 아래 와 같이 우 리 는 함수 호출 이 라 고 합 니 다.
  • functionName(arg1,arg2,....)

    첫 번 째 함수
    지금 우 리 는 두 개의 제곱 합 을 계산 하 는 함 수 를 쓰 는데 다음 과 같다.
    #    
    def squareSum(num1,num2):
        print(num1,num2)
        return num1 ** 2 + num2 ** 2
    
    #     
    result = squareSum(10,20)
    print(result)
    result = squareSum(10,30)
    print(result)
    
       :
    10 20
    500
    10 30
    1000

    우 리 는 def 를 사용 하여 하나의 함수 이름 을 squareSum 이 라 고 정 의 했 습 니 다. 두 개의 매개 변수 num 1 과 num 2 가 있 고 함수 체 는 두 개의 매개 변 수 를 출력 하 며 두 값 의 제곱 합 을 되 돌려 줍 니 다.그 후에 우 리 는 이 방법 을 마음대로 호출 하여 함수 에 적당 한 매개 변수 값 을 전달 하고 반환 값 은 result 참조 에 부여 할 수 있 습 니 다.
    전달 매개 변수
    매개 변수 전달 은 두 가지 가 있 는데 하 나 는 값 전달 이 고 하 나 는 인용 전달 이다.값 전달 의 원 리 는 현재 매개 변수의 사본 을 부여 한 다음 에 함수 에 전달 하 는 것 입 니 다. 인용 전달 은 인용 이 가리 키 는 메모리 주 소 를 전달 하 는 것 입 니 다. 먼저 python 의 가 변 대상 과 가 변 대상 을 토론 해 야 합 니 다.문자열, 원본, 숫자 는 모두 가 변 대상, 목록, 집합 과 사전 은 가 변 대상 입 니 다.python 의 매개 변수 전달 은 간단하게 값 전달 이 라 고 생각 할 수 있 습 니 다. (이것 은 자바 와 같 습 니 다) 가 변 하지 않 는 대상 이 라면 대상 값 의 사본 을 전달 합 니 다. 함수 에서 이 매개 변수 값 을 수정 하면 원래 의 값 에 영향 을 주지 않 습 니 다.가 변 대상 을 전달 하면 인용 한 사본 을 전달 합 니 다. 원래 인용 한 사본 인용 은 같은 메모리 주 소 를 가리 키 기 때문에 함수 에서 가 변 대상 의 내용 을 수정 하면 원래 인용 한 값 에 영향 을 줄 수 있 습 니 다.아래 의 예 를 보십시오.
    num = 1
    def update(num):
        num = 2
        print(num)
    
    update(num)
    print(num)
       :
    2
    1

    함수 중의 num 과 함수 밖의 num 은 num 참조 가 아니 라 복사 본 일 뿐 함수 에서 num 의 값 을 수정 하 는 것 은 함수 에 영향 을 주지 않 습 니 다.다음 의 이 예 를 보십시오.
    list = [1,2,3,4]
    def updateList(list):
        list = [5,6,7,8]
        print(list)
    
    updateList(list)    
    print(list)    
       :
    [5, 6, 7, 8]
    [1, 2, 3, 4]

    이 예 는 위의 예 와 이치 가 같 습 니 다. 변 경 된 것 은 복사 본 이 인용 한 값 일 뿐 원래 의 인용 에 영향 을 주지 않 습 니 다.다음 의 예 를 계속 보 세 요.
    list = [1,2,3,4]
    def updateList(list):
        list.append(5)
        print(list)
    
    updateList(list)    
    print(list)   
       :
    [1, 2, 3, 4, 5]
    [1, 2, 3, 4, 5]

    출력 결과 에서 우 리 는 함수 안의 수정 이 원래 의 인용 에 영향 을 미 친 것 을 보 았 다.인용 이 아니 라 인용 이 가리 키 는 대상 의 내용 을 수정 하기 때문이다.원래 의 인용 과 사본 인용 은 모두 같은 대상 을 가리 키 기 때문에 반드시 원래 의 인용 에 영향 을 줄 것 이다.
    매개 변수
    python 의 함 수 는 이 몇 가지 유형 이 있 습 니 다. 고정 매개 변수, 키워드 매개 변수, 기본 매개 변수, 길 어 지 는 매개 변수, 고정 매개 변 수 는 매개 변수 가 정의 하 는 순서에 따라 매개 변 수 를 전달 해 야 하고 매개 변수 개수 가 적어 서 는 안 됩 니 다. 예 를 들 어:
    def myFunction(name,age,sex):
        print(name,age,sex)
    myFunction("a",20,1)

    키워드 매개 변 수 는 함 수 를 호출 할 때 키워드 로 매개 변 수 를 지정 하 는 값 을 말 합 니 다. 그러면 매개 변수의 순서에 따라 매개 변 수 를 전달 할 필요 가 없 지만 매개 변수의 개 수 는 적어 서 는 안 됩 니 다. 예 를 들 어:
    def myFunction(name,age,sex):
        print(name,age,sex)
    myFunction(sex = 1, age=20, name="a")    

    기본 매개 변 수 는 함 수 를 정의 할 때 매개 변수 에 기본 값 을 주 는 것 을 말 합 니 다. 이렇게 함 수 를 호출 할 때 이 매개 변 수 는 기본 값 을 생략 하고 사용 할 수 있 습 니 다.예 를 들 면:
    def myFunction1(name,age,sex=1):
        print(name,age,sex)
    myFunction1("a",20)

    주의해 야 할 것 은 기본 매개 변 수 를 사용 할 때 잘못된 뜻 이 생기 지 않도록 주의해 야 한 다 는 것 이다.아래 함수 보 세 요.
    def myFunction2(name,age=1,sex):
        print(name,age,sex)

    이 함수 가 실 행 될 때 오류 가 발생 할 수 있 습 니 다. 이 함수 가 호출 될 때 오류 가 존재 하기 때 문 입 니 다. 만약 에 my Function 2 ("a", 1) 를 이렇게 호출 하면 컴퓨터 를 매우 헷 갈 리 게 할 것 입 니 다. 당신 은 인자 sex 를 적 게 전 달 했 습 니까?아니면 1 을 sex 에 게 전달 해 야 하나 요?따라서 기본 매개 변수 가 아 닌 기본 매개 변수 뒤에 나타 날 수 없습니다.길 어 지 는 매개 변 수 는 이 매개 변 수 를 여러 값 으로 받 아들 일 수 있 는 것 을 말 합 니 다. 다음 과 같 습 니 다.
    def myFunction3(name,age,sex,*str):
        print(name,age,sex)
        for s in str:
            print(s)
    myFunction3("a",20,1,"a","b","c") 

    익명 함수
    python 은 lambda 를 사용 하여 익명 함 수 를 만 듭 니 다.익명 이란 def 문 구 를 사용 하지 않 는 다 는 표준 형식 으로 함 수 를 정의 하 는 것 입 니 다. 구 조 는 다음 과 같 습 니 다.
    lambda arg1,arg2,....:expression

    예 는 다음 과 같다.
    sum = lambda num1,num2: num1 + num2
    print(sum(1,2))
        :
    3

    변수 역할 영역
    python 변수의 역할 영역 은 4 중 입 니 다.
  • L: 국부 작용 역
  • E: 폐쇄 함수 밖의 함수 중
  • G: 전역 작용 역
  • B: 내 건 작용 역
  • x = int(2.9)  #      
    g_count = 0  #      
    def outer():
        o_count = 1  #          
        def inner():
            i_count = 2  #      

    L 은 E 보다 작 고 G 보다 작 으 며 B 보다 작다.python 에 서 는 이 순서에 따라 변 수 를 찾 습 니 다.python 에 서 는 모듈 (module), 클래스 (class) 및 함수 (def, lambda) 만 새로운 역할 영역 을 도입 할 수 있 습 니 다. 다른 코드 블록 (예 를 들 어 if / elif / else /, try / except, for / while 등) 은 새로운 역할 영역 을 도입 하지 않 습 니 다. 즉, 이 구문 에서 정 의 된 변 수 는 외부 에서 도 접근 할 수 있 습 니 다. 다음 코드:
    if 1 == 1:
        msg = "hello"
    print(msg)   
        :
    hello

    python 에 블록 급 역할 영역 이 없 기 때문에 msg 는 if 블록 에서 정 의 된 변수 이지 만 그 는 여전히 전역 적 인 변수 입 니 다.다음 의 이 예 를 보십시오.
    def function1():
        name = "name"
    print(name) 

    실행 오류:
    Traceback (most recent call last):
      File "E:\workspace-python\firstpython\src\first.py", line 4, in <module>
        print(name)    
    NameError: name 'name' is not defined

    name 은 국부 변수 이기 때문에 전역 에서 찾 을 수 없습니다.예 를 하나 더 보 자.
    name = "name"
    def function2():
        print(name)
      :
    name

    함수 에서 먼저 부분 에서 name 변 수 를 찾 았 습 니 다. 찾 지 못 한 다음 에 전체 역할 도 메 인 을 계속 찾 아 name 변 수 를 찾 습 니 다.다음 의 예 를 계속 보 세 요.
    name = "name"
    def function3():
        name = "aaa"
        print(name)
    
    function3()    
    print(name)
      :
    aaa
    name

    함수 중의 name 은 부분 변수 입 니 다. 함수 밖의 name 은 전체 변수 입 니 다. 두 이름 은 같 지만 같은 변수 가 아니 므 로 혼동 할 수 없습니다. 함수 에서 전체 변수의 값 을 바 꾸 려 면 global 을 사용 해 야 합 니 다. 다음 과 같 습 니 다.
    name = "name"
    def function4():
        global name
        name = "aaa"
        print(name)
    function4()   
    print(name)

    출력 결과:
    aaa
    aaa

    global 지정 후 함수 에서 name 에 대한 수정 은 전역 변수 name 입 니 다.

    좋은 웹페이지 즐겨찾기