작성자 홈페이지: 프로그래밍 나침반
저자 소개: Java 분야의 고급 크리에이터, CSDN 블로그 전문가
, CSDN 콘텐츠 파트너, Nuggets 초대 작성자, Alibaba Cloud 블로그 전문가, 51CTO 초대 작성자, 다년간의 건축가 디자인 경험, Tencent 강의실 상주 강사주요 내용 : Java 프로젝트, Python 프로젝트, 프론트 엔드 프로젝트, 인공 지능 및 빅 데이터, 이력서 템플릿, 학습 자료, 면접 문제 은행, 기술 상호 지원
즐겨찾기, 좋아요, 헤매지 마세요 작가님을 팔로우하면 좋아요
기사 끝 부분에서 소스 코드를 얻으십시오.
3. 모듈형 프로그래밍을 실현하는 기능
프로그래밍 언어에서 함수는 주로 관련 코드를 캡슐화하고, 모듈식 프로그래밍을 실현하고, 코드 재사용 가능 설정을 완료하는 데 사용됩니다. Python에는 내장 함수와 사용자 정의 함수가 있습니다.
3.1 함수 정의 및 호출
문법:
def functionname([parameterlist]):
['''comments''']
[functionbody]
* functionname: 函数名
* parameterlist: 参数列表
* comments: 说明
* functionbody : 函数体
예: 위험한 문자를 필터링하는 filterchar() 함수 정의
def filterchar(string):
'''功能说明:过滤指定的字符串,并将过滤后的结果输出
没有返回值
'''
import re #导入Python的re模块
pattern = r'(黑客)|(抓包)|(监听)|(Trojan)' #模式字符串
sub = re.sub(pattern,'@_@',string) #进行模式替换
print(sub)
함수 호출을 위한 기본 구문입니다.
functionname([parametersvalue])
예:
str = '我是一名热爱黑客的程序员,喜欢研究Trojan'
filterchar(str)
함수를 정의한 후 무엇을 해야 할지 모르겠다면 pass를 사용하여 함수 본문을 채우거나 '...'을 사용하여 코드 생략을 나타낼 수 있습니다.
def functionname():
pass
def functionname():
...
3.2 매개변수 전달
매개변수의 역할은 사용할 함수에 데이터를 전달하고 함수 본문에서 해당 데이터 처리를 수행하는 것입니다.
형식 매개변수: 형식 매개변수(formal paramter)로 줄여서 함수를 정의할 때 괄호 안의 매개변수를 의미합니다. 영화 대본 속 인물처럼.
실제 매개변수: 실제 매개변수로 약칭하며, 함수 호출 시 전달되는 실제 매개변수 값을 의미합니다. 영화배우가 연기하는 것처럼요.
실제 매개변수의 종류에 따라 값 전송(유형이 불변 유형)과 참조 전송(유형이 가변 유형)으로 구분됩니다. 둘의 구체적인 차이점은 값으로 전달하는 경우 형식 매개변수의 값이 변경되지만 실제 매개변수의 값은 변경되지 않고, 참조로 전달하는 경우 형식 매개변수의 값이 변경되고 의 값이 변경된다는 점입니다. 실제 매개변수도 변경됩니다.
예:
#值传递和引用传递
def demo(obj):
print("原值:",obj)
obj += obj
#调用函数
print("---------值传递--------")
mot = "唯有在被追赶的时候,你才能真正的奔跑"
print("函数调用前:",mot)
demo(mot)
print("函数调用后:",mot)
print("---------引用传递--------")
list1 = ['邓肯','吉诺比利','帕克']
print("函数调用前:",list1)
demo(list1)
print("函数调用后:",list1)
매개변수를 전달할 때 수량 및 데이터 유형 요구사항은 함수 정의 시 매개변수 요구사항과 일치합니다. 또한 키워드 매개변수를 통해 전달될 수도 있으므로 매개변수 위치를 정의와 일치하게 유지할 필요가 없습니다.
예를 들어:
functionname(height=20,width=30,height=50)
매개변수 기본값: 매개변수에 기본값을 지정할 수도 있으므로 매개변수를 전달하지 않고도 호출할 수 있습니다.
#函数参数默认值
def abc(str='aaa'):
print(str)
abc()
가변 매개변수: 하나는 *매개변수이고 다른 하나는 **매개변수입니다.
*parameter : 튜플에서 허용되는 실제 매개변수 수에 제한이 없음을 나타냅니다.
예:
#定义可变参数
def printplayer(*name): #定义输出我喜欢的NBA球员函数
print('\n 我喜欢的NBA球员有:')
for item in name:
print(item) #输出球员名称
printplayer('邓肯')
printplayer('邓肯','乔丹','大佛')
기존 목록을 매개변수로 사용하려면 목록 이름 앞에 *를 추가하면 됩니다.
param =['邓肯','乔丹','大佛']
printplayer(*param)
**매개변수: 표시 값의 개수에 관계없이 할당할 수 있는 여러 매개변수가 허용되어 사전에 입력됨을 나타냅니다.
#可变参数
def printsign(**sign):
print()
for key,value in sign.items():
print("["+key+"] 的绰号是:"+value)
printsign(邓肯='石佛',罗宾逊='海军上将')
기존 사전을 가변 매개변수로 전달하려면 매개변수 이름 앞에 **를 추가하면 됩니다.
param ={'邓肯':'石佛','罗宾逊':'海军上将'}
printsign(**param)
3.3 반환값
함수가 실행된 후 해당 실행 결과가 반환될 수 있습니다.
예:
#函数返回值
def fun_checkout(name):
nickname=""
if name == '邓肯':
nickname = '石佛'
elif name == '吉诺比利':
nickname = '妖刀'
elif name == '罗宾随逊':
nickname = '海军上将'
else:
nickname = '查无此人'
return nickname
while FutureWarning:
name = input("请输入NBA求员的名称:")
nickname = fun_checkout(name)
print("球 员:",name,"绰号:",nickname)
3.4 변수의 범위
지역변수(Local Variable) : 함수 내부에 정의된 변수를 말하며, 함수 내부에서만 사용할 수 있다.
글로벌 변수: 함수 외부에서 변수를 정의하면 함수 외부나 함수 내부에서 사용할 수 있으며, 함수 본문에 정의된 변수 이름 앞에 global 키워드를 추가하면 이 변수도 글로벌 변수가 될 수 있습니다.
예:
#局部变量
def fun_variable():
var_name = '指南针毕业设计出品'
print(var_name)
fun_variable()
print(var_name) #函数名使用局部变量时,抛出 NameError
예:
#全局变量
var_name = '指南针毕业设计出品'
def fun_variable():
print(var_name)
fun_variable()
print(var_name)
예:
#全局变量
def fun_variable():
global var_name
var_name = '指南针毕业设计出品'
print(var_name)
fun_variable()
print(var_name)
3.5 익명 함수
함수 이름을 지정하지 않으면 일반적으로 일시적인 일회성 호출입니다.
result = lambda[args[,args,..argn]]:expression
* result:用于调用lambda表达式
* [arg1[,arg2,...argn]]:可选参数,用于指定要传的参数列表,多个参数间用,号分隔
* expression:必须参数,用于指定一个实现具体功能的表达式.
예: 원의 반지름 계산
import math
def circlearea(r):
result = math.pi*r*r
return result
r = 10
print("半径为",r,"的圆的面积为:",circlearea(r))
익명 함수를 사용하여 다음을 달성하는 경우:
import math
r = 10
result = lambda r:math.pi*r*r
print("半径为",r,"的圆的面积为:",result(r))