함수의 가장 중요한 목적은 동일한 프로그램을 쉽게 재사용할 수 있도록 하는 것입니다.
일부 작업을 함수에 연결합니다. 나중에 동일한 작업을 구현하려면 모든 문을 반복하지 않고 함수 이름만 호출하면 됩니다.
함수 정의
먼저 이 함수의 기능을 설명하기 위해 함수를 정의해야 합니다.
def square_sum(a,b): c = a**2 + b**2 return c
이 함수의 기능은 두 숫자의 제곱의 합을 구하는 것입니다.
우선 def, 이 키워드는 Python에게 다음과 같이 알려줍니다. 함수를 정의하고 있습니다. square_sum은 함수 이름입니다.
괄호 안의 a와 b는 함수의 매개변수이자 함수의 입력입니다. 매개변수는 여러 개일 수도 있고 전혀 없을 수도 있습니다(그러나 괄호는 유지해야 함).
루프와 선택에서 소속을 나타내는 콜론과 들여쓰기를 이미 살펴보았습니다.
c = a**2 + b**2 # 这一句是函数内部进行的运算 return c # 返回c的值,也就是输出的功能。Python的函数允许不返回值,也就是不用return。return可以返回多个值,以逗号分隔。相当于返回一个tuple(定值表)。 return a,b,c # 相当于 return (a,b,c)
Python에서 프로그램이 return을 실행하면 프로그램은 함수의 나머지 명령문 실행을 중지합니다. 반환이 필요하지 않거나 반환 후 반환 값이 없으면 함수는 자동으로 None을 반환합니다. None은 Python의 특수 데이터 유형으로, C의 NULL과 동일하게 아무것도 나타내지 않는 데 사용됩니다. None은 키워드 인수 전달의 기본값으로 주로 사용됩니다.
함수 호출 및 매개변수 전달
함수 정의 후 후속 프로그램에서 이 함수를 사용할 수 있습니다.
print square_sum(3,4)
Python 3이 함수 정의의 첫 번째 매개변수 a에 해당하고 4가 위치를 통해 두 번째 매개변수 b에 해당한다는 것을 알고 매개변수를 square_sum 함수에 전달합니다.
(Python에는 키워드 전송, 테이블 전송, 사전 전송 등을 포함한 풍부한 매개변수 전송 방법이 있습니다. 기본 튜토리얼에서는 위치 전송만 다룹니다.)
함수 계산 후 반환 값 25입니다. 이 25는 인쇄물로 인쇄됩니다.
다음 두 가지 예를 살펴보겠습니다.
a = 1 def change_integer(a): a = a + 1 return a print change_integer(a) print a #===(Python中 "#" 后面跟的内容是注释,不执行 ) b = [1,2,3] def change_list(b): b[0] = b[0] + 1 return b print change_list(b) print b
첫 번째 예에서는 정수 변수를 함수에 전달하고 function 동작하지만 원래의 정수변수 a는 변하지 않습니다.
두 번째 예에서는 함수에 테이블을 전달하고 함수가 작동하며 원래 테이블 b가 변경됩니다.
기본 데이터 유형의 변수의 경우 변수가 함수에 전달된 후 함수는 메모리에 새 변수를 복사하므로 원래 변수에는 영향을 미치지 않습니다. (우리는 이것을 값 전달이라고 부릅니다.)
그러나 테이블의 경우 테이블은 포인터로 함수에 전달됩니다. 포인터는 함수 내에서 테이블의 시퀀스 위치를 가리킵니다. 원래 메모리에 저장되므로 원래 변수에 영향을 미칩니다. (우리는 이것을 포인터 전달이라고 부릅니다)
요약
def function_name(a,b,c): statement return something # return不是必须的
함수의 목적: 프로그램의 반복성을 향상시키는 것입니다.
return None
위치별로 매개변수를 전달합니다.
기본 데이터 유형의 매개변수: 값으로 전달
매개변수로 테이블: 포인터로 전달