>백엔드 개발 >파이썬 튜토리얼 >Python 함수의 매개변수에 대한 자세한 소개

Python 함수의 매개변수에 대한 자세한 소개

不言
不言앞으로
2018-10-09 16:33:173006검색

이 글은 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 &#39;list&#39;>
(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제