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에서는 프로그램의 변수 예, 액세스 권한은 변수가 할당된 위치에 따라 다릅니다.