이 글은 Python 함수의 매개변수에 대한 자세한 소개를 제공합니다. 이는 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
함수 정의
파이썬의 함수는 def 키워드를 사용하여 다음 형식으로 정의됩니다.
def 函数名(形参): 函数语句块
함수 이름은 문자열, 밑줄, 숫자만 포함할 수 있으며 숫자로 시작할 수 없습니다.
함수의 형식 매개변수는 위치 매개변수, 기본 매개변수(기본값이 있는 매개변수), 동적 매개변수로 구분됩니다.
return은 함수의 결과를 반환하는 데 사용되는 키워드입니다. 함수는 즉시 종료되고 다른 명령문은 실행되지 않습니다.
위치 매개변수
def func(a,b): return a,b print(func(1,2)) #按照位置传入参数,1赋值给a,2赋值给b print(func(a=2,b=3))#按照关键字传入参数,指定a、b的值 print(func(3,b=6))#混合传入,此时注意,位置参数要在前面 #如果不指定实参会报错,因为函数中由位置参数,则调用函数时必须传入参数 #print(func())
출력 결과는 다음과 같습니다.
(1, 2) (2, 3) (3, 6)
return을 쓰지 않거나 return만 쓰고 나중에 다른 내용을 쓰지 않으면 함수가 실행됩니다. return None
return은 모든 데이터 유형의 값을 반환할 수 있습니다. return이 여러 값을 반환하면 튜플로 구성됩니다. 즉, 여러 값이 반환되면 유형이 튜플입니다. 여러 변수를 사용하여 결과를 받을 수 있지만 변수 개수는 반환된 값 개수와 동일해야 합니다. 예시는 다음과 같습니다.
def func(): return 1,'asd',(1,'a',['hello','world']),[1,2,3] print('直接打印结果:',func()) a,b,c,d = func() print('a:',a) print('b:',b) print('c:',c) print('d:',d)
출력:
直接打印结果: (1, 'asd', (1, 'a', ['hello', 'world']), [1, 2, 3]) a: 1 b: asd c: (1, 'a', ['hello', 'world']) d: [1, 2, 3]
기본 매개변수
def func(name,age=20): print('{}已经{}岁啦'.format(name,age)) func('刘小姐')#默认参数可以不传,这时age值为默认的20 func('刘小姐',28)#默认参数传值时则覆盖默认值
刘小姐已经20岁啦 刘小姐已经28岁啦
기본값은 다음과 같습니다. 한 번만 할당됩니다. 이는 기본값이 목록, 사전 또는 대부분의 클래스 인스턴스와 같은 변경 가능한 객체일 때 차이를 만듭니다. 예를 들어, 다음 함수는 후속 호출 중에 (이전) 전달된 매개변수를 누적합니다.
def func(a = []): a.append('x') return a for i in range(6): print(func())
루프가 호출될 때마다 매개변수가 a에 전달되지 않더라도 a에는 빈 목록 []이 할당되지 않습니다. 그 이유는 기본값이 한 번만 할당되므로 출력은 다음과 같기 때문입니다.
['x'] ['x', 'x'] ['x', 'x', 'x'] ['x', 'x', 'x', 'x'] ['x', 'x', 'x', 'x', 'x'] ['x', 'x', 'x', 'x', 'x', 'x']
후속 호출에서 기본값이 누적되는 것을 원하지 않으면 다음과 같이 함수를 정의할 수 있습니다.
def func(a = None): if a is None: #如果a是None a = [] a.append('x') return a for i in range(6): print(func())
['x'] ['x'] ['x'] ['x'] ['x'] ['x']
동적 매개변수
동적 매개변수는 두 가지 유형으로 나뉩니다.
하나는 *args로 표시되며 중복된 위치 매개변수를 균일하게 수신하여 튜플 형식으로 저장합니다.
다른 하나는 **kwargs로 표시됩니다. 중복되는 키워드 매개변수는 일률적으로 수신되어 사전 형태로 저장됩니다
먼저 *args의 예를 살펴보겠습니다
def func(a,b,c,*args): print('*args内容为:',args) sum1 = 0 for i in args: sum1 += i sum1 = sum1 + a +b +c return sum1 print(func(1,2,3,4,5,6,7,8,9,10))
형식 매개변수는 4개뿐이지만 10개를 전달했고, 4~10개는 모두 *args로 수신됩니다 to form elements Group
*args内容为: (4, 5, 6, 7, 8, 9, 10) 55
**kwargs
def func(a,b,*args,c=20,**kwargs): print('*args内容为:',args) print(c) print('**kwargs内容为:',kwargs) sum1 = 0 for i in args: sum1 += i sum1 = sum1 + a +b +c for k in kwargs: sum1 += kwargs[k] return sum1 print(func(1,2,3,4,5,6,7,8,9,10,c=22,x=11,y=33,z=66))
*args内容为: (3, 4, 5, 6, 7, 8, 9, 10) 22 **kwargs内容为: {'x': 11, 'y': 33, 'z': 66} 187
를 살펴보겠습니다. 위의 예에서 다양한 유형의 형식 매개변수가 나타나면 그 순서는 위치 매개변수, 동적 매개변수args, 기본 매개변수여야 함을 알 수 있습니다. , 동적 매개변수 *keargs
기본 매개변수가 args 이전, 즉 func(a,b,c=20,args,*kwargs)라고 가정하기 때문에 매개변수가 전달되면, 형식 매개변수 c의 값은 먼저 실제 매개변수 3 할당으로 대체됩니다(3의 위치가 c에 해당하므로 기본 매개변수가 할당되지 않은 경우 값이 기본값이고 할당 시 기본값을 덮어씁니다). 이때는 c=3인데 나중에 c=20이 나오며 이때 오류가 보고됩니다. 왜냐하면 형식 매개변수 c에 두 번 할당되는 것은 허용되지 않으므로 기본 매개변수는 args 뒤에 순위가 지정되기 때문입니다.
기본 매개변수는kwargs 앞에 위치해야 합니다. 순위가 뒤떨어지면 c=22가 kwargs에서 직접 수신되기 때문입니다. 이러한 기본 매개변수는 의미가 없으며 허용되지 않으며 오류가 보고됩니다
다음은 *args 앞에 기본 매개변수를 배열하는 또 다른 방법입니다. 이 방법도 동일한 결과를 얻지만 호출 시 c 값이 어디에 있는지 주의해야 하며 이 방법이 기본값을 만듭니다. 매개변수는 의미가 없습니다. 기본값인 20은 절대 사용되지 않기 때문입니다.따라서 *args 뒤에 기본 매개변수를 넣는 것이 적절합니다.
def func(a,b,c=20,*args,**kwargs): print('*args内容为:',args) print(c) print('**kwargs内容为:',kwargs) sum1 = 0 for i in args: sum1 += i sum1 = sum1 + a +b +c for k in kwargs: sum1 += kwargs[k] return sum1 print(func(1,2,22,3,4,5,6,7,8,9,10,x=11,y=33,z=66))
*args内容为: (3, 4, 5, 6, 7, 8, 9, 10) 22 **kwargs内容为: {'x': 11, 'y': 33, 'z': 66} 187
*args의 경우 매개변수를 전달할 때 lis 앞에 * 기호를 추가하여 콘텐츠를 직접 전달할 수 있습니다.
def func(*args): return args lis = [1,2,{3,4,5},6,7,[8,9,0,1,23],34,5,(56,67),78,23] print(type(lis)) print(func(*lis))
<class 'list'> (1, 2, {3, 4, 5}, 6, 7, [8, 9, 0, 1, 23], 34, 5, (56, 67), 78, 23)
**kwargs의 경우 전달할 수 있습니다. 매개변수 전달할 때 dic 앞에 **를 추가하면 내용을 바로 입력할 수 있습니다
def func(**kwargs): return kwargs dic = {'name':'超人','age':'500','job':'装逼'} print(func(**dic))
{'name': '超人', 'age': '500', 'job': '装逼'}
위 내용은 Python 함수의 매개변수에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!