Python 기본 입문 튜토...login
Python 기본 입문 튜토리얼
작가:php.cn  업데이트 시간:2022-04-18 16:14:50

파이썬 함수


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

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


함수 정의

원하는 함수로 함수를 정의할 수 있습니다. 다음은 간단한 규칙입니다.

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

  • 들어오는 매개변수와 인수는 모두 괄호 안에 넣어야 합니다. 매개변수는 괄호 안에 정의할 수 있습니다.

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

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

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


구문

def functionname(매개변수):
"Function_docstring"
function_suite
return [ 표현식]

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

다음은 문자열을 입력 매개변수로 가져와 이를 표준 디스플레이 장치에 인쇄하는 간단한 Python 함수입니다.

def printme(str):
"수신 문자열을 표준 디스플레이 장치에 인쇄합니다."
print str
return

함수 호출

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

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

다음 예에서는 printme() 함수를 호출합니다.

#!/usr/bin/python
# -*- 코딩: UTF-8 -*-

# 함수 정의
def printme(str):
"들어오는 문자열 인쇄"
print str;
return;

# 함수 호출
printme( "사용자 정의 함수를 호출하고 싶습니다!");
printme("Call the same function again");

위 예제의 출력 결과:

사용자 정의 함수를 호출하고 싶어요!
같은 함수를 다시 호출

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

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

#!/usr/bin/python
# -*-coding: UTF-8 -*-

# 쓰기 가능한 함수 설명
defchangeme (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]]
함수 외부 값 function: [10, 20, 30 , [1, 2, 3, 4]]

매개변수

다음은 다음과 같은 경우에 사용할 수 있는 형식 매개변수 유형입니다. 함수 호출:

  • 필수 매개변수

  • 키워드 매개변수

  • 기본 매개변수

  • 가변 길이 매개변수

필수 매개변수

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

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

#!/usr/bin/python
# - *- 코딩 : UTF-8 -*-

#쓰기 가능한 함수 설명
def printme(str):
"들어오는 문자열 인쇄"
print str;
return

#printme 함수 호출
printme();

위 예의 출력 결과:

추적(가장 최근 호출 마지막):
파일 "test.py", 11번째 줄, <module>
printme();
TypeError: printme()는 정확히 1개의 인수를 사용합니다(0개 제공)

키워드 매개변수

키워드 매개변수는 함수 호출과 밀접한 관련이 있습니다. 함수 호출은 키워드 매개변수를 사용하여 전달된 매개변수 값을 결정합니다.

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

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

#!/usr/bin/python
# -*- 코딩: UTF-8 -* -

#쓰기 가능한 함수 설명
def printme(str):
"들어오는 문자열 인쇄"
print str;
return;

#printme 호출 function
printme(str = "My string");

위 예제 출력 결과:

My string

The 다음 예는 키워드 매개변수의 순서가 중요하지 않음을 더 명확하게 보여줄 수 있습니다:

#!/usr/bin/python
# -*- 코딩: UTF-8 -*-

#쓰기 가능한 함수 설명
def printinfo(name, age):
"들어오는 문자열 인쇄"
print "Name: ", name;
print "Age " , age;
return;

#Call printinfo function
printinfo(age=50, name="miki");

위 출력 결과 예시:

이름: miki
50세

기본 매개변수

함수 호출 시 기본 매개변수의 값이 전달되지 않으면 기본값. 다음 예에서는 나이가 전달되지 않은 경우 기본 나이를 인쇄합니다:

#!/usr/bin/python
# -*- 코딩: UTF-8 -*-

#쓰기 가능한 함수 설명
def printinfo(name, age = 35):
"들어오는 문자열 인쇄"
print "Name: ", name;
print "Age " , age;
return;

#printinfo 함수 호출
printinfo(age=50, name="miki");
printinfo(name="miki");

위 예제의 출력 결과:

이름: miki
Age 50
이름: miki
Age 35

무한 길이 매개변수

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

def functionname([formal_args,] *var_args_tuple):
"Function_docstring"
function_suite
return [expression]

별표(*)가 있는 변수 이름은 이름이 지정되지 않은 모든 변수 매개변수를 저장합니다. 더 많은 매개변수를 전달하지 않도록 선택할 수도 있습니다. 다음 예:

#!/usr/bin/python
# -*- 코딩: UTF-8 -*-

# 쓰기 가능한 함수 설명
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

익명 함수

파이썬은 익명 함수를 생성하는 람다.

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

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

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

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

구문

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

lambda [arg1 [,arg2,. ... .argn]]:expression
다음 예:

#!/usr/bin/python
# -*- 코딩: UTF- 8 -*-

# 쓰기 가능한 함수 설명
sum =lambda arg1, arg2: arg1 + arg2;

# sum 함수 호출
print "더해진 값: " , sum ( 10, 20 )
print "더해진 값은 : ", sum( 20, 20 )
위 출력 예의 결과:

Add 추가 후 값: 30
추가 후 값: 40

return 문

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

#!/usr/bin/python
# -*- 코딩: UTF -8 -*-

# 쓰기 가능한 함수 설명
def sum(arg1, arg2):
# 2개 매개변수의 합을 반환합니다. "
total = arg1 + arg2
" 함수 내 인쇄: ", total
return total;

# 합계 함수 호출
total = sum(10, 20);
print "함수 외부: ", total

위 예제의 출력 결과:

함수 내부: 30
함수 외부: 30

변수 범위

프로그램의 모든 변수에 모든 위치에서 액세스할 수 있는 것은 아닙니다. 액세스 권한은 변수가 할당된 위치에 따라 다릅니다.