Python3 함수


함수는 단일 또는 관련 기능을 구현하는 데 사용되는 체계적이고 재사용 가능한 코드 세그먼트입니다.

함수는 애플리케이션 모듈성과 코드 재사용을 향상시킬 수 있습니다. 여러분은 Python이 print()와 같은 많은 내장 함수를 제공한다는 것을 이미 알고 있습니다. 그러나 사용자 정의 함수라고 하는 자신만의 함수를 만들 수도 있습니다.


함수 정의

원하는 기능으로 함수를 정의할 수 있습니다. 간단한 규칙은 다음과 같습니다.

  • 함수 코드 블록은 def 키워드로 시작하고 그 뒤에 함수 식별자 이름과 괄호가 옵니다. ().

  • 들어오는 매개변수와 독립변수는 반드시 괄호 안에 넣어야 하며, 괄호 사이의 공백을 이용해 매개변수를 정의할 수 있습니다.

  • 함수의 첫 번째 줄에서는 선택적으로 함수 설명을 저장하는 데 사용되는 문서 문자열을 사용할 수 있습니다.

  • 함수 내용은 콜론으로 시작하고 들여쓰기됩니다.

  • return [expression] 함수를 종료하고 선택적으로 호출자에게 값을 반환합니다. 표현식 없이 반환하는 것은 None을 반환하는 것과 같습니다.


Syntax

Python은 def 키워드를 사용하여 함수를 정의하며 일반적인 형식은 다음과 같습니다.

def 函数名(参数列表):
    函数体

기본적으로 매개변수 값과 매개변수 이름은 함수 선언에 정의된 순서대로 일치합니다.

함수를 사용하여 "Hello World!"를 출력해 보겠습니다.

>>> def hello() :
   print("Hello World!")

   
>>> hello()
Hello World!
>>>

함수에 매개 변수 변수가 있는 더 복잡한 응용 프로그램:

#!/usr/bin/python3

# 计算面积函数
def area(width, height):
    return width * height
 
def print_welcome(name):
    print("Welcome", name)

print_welcome("php")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))

위 예의 출력 결과:

Welcome php
width = 4  height = 5  area = 20

함수 호출

정의 함수: 함수에 이름을 부여하고 함수에 포함된 매개변수와 코드 블록의 구조를 지정합니다.

이 함수의 기본 구조가 완성되면 다른 함수 호출을 통해 또는 Python 명령 프롬프트에서 직접 실행할 수 있습니다.

다음 예에서는 printme() 함수가 호출됩니다.

#!/usr/bin/python3
 
# 定义函数
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");

위 예의 출력 결과:

我要调用用户自定义函数!
再次调用同一函数

값으로 매개변수 전달 및 참조로 매개변수 전달

Python에서는 모든 매개변수(변수)가 전달됩니다. 참고로. 함수에서 매개변수를 변경하면 이 함수를 호출하는 함수에서도 원래 매개변수가 변경됩니다. 예:

#!/usr/bin/python3
 
# 可写函数说明
def changeme( mylist ):
   "修改传入的列表"
   mylist.append([1,2,3,4]);
   print ("函数内取值: ", mylist)
   return
 
# 调用changeme函数
mylist = [10,20,30];
changeme( mylist );
print ("函数外取值: ", mylist)

함수에 전달된 개체와 마지막에 새 콘텐츠를 추가하는 개체는 동일한 참조를 사용합니다. 따라서 출력 결과는 다음과 같습니다.

函数内取值:  [10, 20, 30, [1, 2, 3, 4]]
函数外取值:  [10, 20, 30, [1, 2, 3, 4]]

Parameters

다음은 함수 호출 시 사용할 수 있는 형식 매개변수 유형입니다.

  • 필수 매개변수

  • 키워드 매개변수

  • 기본 매개변수

  • 가변 길이 매개변수

필수 매개변수

필수 매개변수는 올바른 순서로 함수에 전달되어야 합니다. 호출 시 수량은 선언 시 수량과 동일해야 합니다.

printme() 함수를 호출할 때 매개변수를 전달해야 합니다. 그렇지 않으면 구문 오류가 발생합니다.

#!/usr/bin/python3
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme();

위 예의 출력 결과:

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    printme();
TypeError: printme() missing 1 required positional argument: 'str'

키워드 매개변수

키워드 매개변수는 함수 호출과 밀접하게 관련되어 있습니다. , 함수 호출은 주요 Word 매개변수를 사용하여 전달된 매개변수 값을 결정합니다.

키워드 인수를 사용하면 함수가 선언되었을 때와 다른 순서로 호출될 수 있습니다. Python 인터프리터가 매개변수 이름과 매개변수 값을 일치시킬 수 있기 때문입니다.

다음 예에서는 printme() 함수를 호출할 때 매개변수 이름을 사용합니다.

#!/usr/bin/python3
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme( str = "php中文网");

위 예의 출력 결과:

php中文网

다음 예에서는 지정된 순서를 사용하지 않고 함수 매개변수를 사용하는 방법을 보여줍니다.

#!/usr/bin/python3
 
#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="php" );

출력 결과 위 예의 경우:

名字:  php
年龄:  50

기본 매개변수

함수를 호출할 때 매개변수가 전달되지 않으면 기본 매개변수가 사용됩니다. 다음 예에서는 age 매개변수가 전달되지 않으면 기본값이 사용됩니다.

#!/usr/bin/python3
 
#可写函数说明
def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="php" );
print ("------------------------")
printinfo( name="php" );

위 예의 출력 결과:

名字:  php
年龄:  50
------------------------
名字:  php
年龄:  35

가변 길이 매개변수

보다 더 많은 매개변수를 처리할 수 있는 함수가 필요할 수 있습니다. 원래 선언했을 때. 이러한 매개변수를 가변 길이 매개변수라고 합니다. 위의 두 매개변수와 달리 선언 시 이름이 지정되지 않습니다. 기본 구문은 다음과 같습니다.

def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

별표(*)가 있는 변수 이름은 이름이 지정되지 않은 모든 변수 매개변수를 저장합니다. 함수가 호출될 때 매개 변수가 지정되지 않으면 빈 튜플입니다. 이름이 지정되지 않은 변수를 함수에 전달할 수도 없습니다. 다음 예:

#!/usr/bin/python3
 
# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   for var in vartuple:
      print (var)
   return;
 
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

위 예의 출력 결과:

输出:
10
输出:
70
60
50

익명 함수

python은 람다를 사용하여 익명 함수를 만듭니다.

소위 익명이란 함수를 정의하기 위해 더 이상 def 문의 표준 형식을 사용하지 않는다는 의미입니다.

  • lambda는 단지 표현식일 뿐이고 함수 본문은 def보다 훨씬 간단합니다.

  • 람다의 본문은 코드 블록이 아니라 표현식입니다. 제한된 논리만 람다 식에 캡슐화할 수 있습니다.

  • lambda 함수에는 자체 네임스페이스가 있으며 자체 매개변수 목록 외부 또는 전역 네임스페이스에 있는 매개변수에 액세스할 수 없습니다.

  • 람다 함수는 한 줄만 쓸 수 있는 것처럼 보이지만 C나 C++의 인라인 함수와는 다릅니다. 후자의 목적은 스택 메모리를 차지하지 않고 작은 함수를 호출하여 작업 효율성을 높이는 것입니다. .

Grammar

lambda 함수 구문에는 다음과 같이 하나의 문만 포함됩니다.

lambda [arg1 [,arg2,.....argn]]:expression

다음 예:

#!/usr/bin/python3
 
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

위 예의 출력 결과:

相加后的值为 :  30
相加后的值为 :  40

return 문

return [표현식] 명령문이 사용됩니다. 함수를 종료하고 선택적으로 호출자에게 표현식을 반환합니다. 매개변수 값이 없는 return 문은 None을 반환합니다. 이전 예제에서는 값을 반환하는 방법을 보여주지 않았습니다. 다음 예제에서는 return 문의 사용을 보여줍니다.

#!/usr/bin/python3

# 可写函数说明
def sum( arg1, arg2 ):
   # 返回2个参数的和."
   total = arg1 + arg2
   print ("函数内 : ", total)
   return total;

# 调用sum函数
total = sum( 10, 20 );
print ("函数外 : ", total)

위 예제의 출력 결과:

函数内 :  30
函数外 :  30

Variable range

Pyhton에서는 프로그램의 변수 예, 액세스 권한은 변수가 할당된 위치에 따라 다릅니다.