파이썬 기능을 학습 - 매개 변수 유형을

함수 매개 변수

당신은 호출자가 전달 된 매개 변수 값을 줄 인자의 기능을 담당 할 때 파이썬 함수가 호출에서 특정 값을 결정하기 위해, 이러한 매개 변수를 매개 변수를 정의 할 수 있습니다 정의 할 때

함수 매개 변수의 종류

첫째, 위치 매개 변수

또한 매개 변수를 전달합니다라고 주문 매개 변수는 가장 중요하고 매개 변수를 명확하게 함수 호출에 제공해야합니다! 위치 매개 변수가 너무 많이 전달의 수, 시간 순서대로 1-1,하지만를해야합니다!

파이썬 기능을 학습 - 매개 변수 유형을

설명 : A, B가 C를 추가 라인 인자의 함수가 특정 값에만 값 만 전달된다 (X, Y, Z)에 추가되지 않으며, A = X = 1, B = Y = 2, C = 여기서 x, y를, Z는, 호출 인수 (5,7)를 추가하고, (4,5,6,7) 부가 상기 Z = 3, 호출 에러입니다

둘째, 키워드 인자

통화 기능의 파라미터를 파라미터의 이름에 따라 값에 의해 전달되는 파라미터 정의 키워드 시퀀스 파라미터라는 변수를 통하지 않고

파이썬 기능을 학습 - 매개 변수 유형을

설명 :이 세 변수들의 시퀀스가 ​​추가 (0, 3, C = 10) 교환을 자유롭게 통과 할 수 있도록 전송, A = 1, C = 10, B = 3 파라미터 때 지정된 위치 파라미터 모두 및 키워드 변수는 오류 위치 설정 파라미터를 키워드 파라미터 앞에 배치해야있다

파이썬 기능을 학습 - 매개 변수 유형을

셋째, 기본 매개 변수

파라미터에 대한 디폴트 값은,이 파라미터는 디폴트 파라미터를하게되면 시간의 함수의 정의에있어서, 상기 위치 파라미터는 더 이상 없다. 함수를 호출 할 때, 우리는 사용자 정의의 기본 값으로 매개 변수를 전달하거나 기본 값을 사용할 수 있습니다.

파이썬 기능을 학습 - 매개 변수 유형을

설명 : 추가 (0, 3) 값 C 3 개 패스의 기본 값을 전달하지 않습니다

  • 기본 매개 변수 위치에 다시 매개 변수를해야합니다!

    def add(c=2, a, b):此种定义函数的方法是错误的
  • 기본 매개 변수가 동일한 개체를 가리 키도록 시도!

파이썬 기능을 학습 - 매개 변수 유형을

위의 대답을하고는 다르게 생각하고, 왜 수 있습니다? 기본 기능을 정의 할 때 생성 될 경우, 변수는 함수의 본체가 메모리로 읽어 변수이며, 객체의 빈 목록에 포인트의 기본 매개 변수는 메모리 주소는 동일, 모든 함수 호출은 변수 A는로 첨가

동적 매개 변수

정의 : 이름이 암시 하듯이, 호출 함수는 임의의 복수의 파라미터 전달할 수 있도록 매개 변수의 수는 변경 될 수있다
: 동적 파라미터의 두 가지 방법
1. * 인수를 : 별표를 수신하는 임의의 매개 변수를 나타낸다. 라고 할 때, 실제 매개 변수는 튜플 입력 폼 매개 변수로 포장됩니다. 당신이 목록을 전달하면 목록은 전체로 처리됩니다
2 ** kwargs로 :. 두 별 수용 동적 매개 변수 키 - 값 쌍, 임의의 숫자. 통화 시간은 실제 매개 변수 사전에 포장됩니다
. * 인수와 ** 매개 변수는 규칙의 이름입니다 kwargs로, 그것은 쉽게 다른 매개 변수 이름과 같이 쓸 수있다는 명명 규칙과 일치

* 인수 : 예를 들어, 아이를 들어 **

def test(*books):
    print(books)
    for i in  books:
        print(i)

books = [ "西游记", "三国演义", "水浒传" ]

test("西游记", "三国演义", "水浒传" )

test(books)

산출

('西游记', '三国演义', '水浒传')
西游记
三国演义
水浒传
(['西游记', '三国演义', '水浒传'],)
['西游记', '三国演义', '水浒传']

주 : 상기 실시 예는 복수의 파라미터, 인쇄 (서)를 매개 튜플의 수로서 보여 질 수있을 때 가변 매개 변수, 함수 호출이 전송 될 수있다 * 서 정의되어, 도서 목록 전체 전달

질문 : 당신이 그것의 내부 목록을 만들 수 있습니다 ( '서유기', '삼국', '수호전')는 매개 변수로 각각에 전달

답변 : 물론, 경우에 당신이 할 수있는, 즉, 앞에 별표를 추가 전달 된 인수의 목록

def test(*books):
    print(books)
    for i in  books:
        print(i)

books = [ "西游记", "三国演义", "水浒传" ]
test(books)

결과 :

(['西游记', '三国演义', '水浒传'])
西游记
三国演义
水浒传

** kwargs로 : 그림

def func(**kwargs):
    print(type(kwargs))
    for kwg in kwargs:
        print(kwg, kwargs[kwg])

func(k1='v1', k2=[0, 1, 2])

출력 :

<class 'dict'>
k1 v1
k2 [0, 1, 2]

코드가 결과 무엇인지에 대해 생각 :

def func(**kwargs):
    print(type(kwargs))
    for kwg in kwargs:
        print(kwg, kwargs[kwg])

core = {
    "语文": 81,
    "数学": 92

}
func(core)

결과 :

D:\project\test\venv\Scripts\python.exe D:/project/test/venv/monster.py
Traceback (most recent call last):
  File "D:/project/test/venv/monster.py", line 87, in <module>
    func(core)
TypeError: func() takes 0 positional arguments but 1 was given

Process finished with exit code 1

분석 :

때문에 ** kwargs로는 사전 키 - 값 쌍의 값이되지만, 매개 키 - 값 쌍을 통과해야하지만, 사전이 파라미터 위치로 전달 될 때, 다중 방향 키 - 값 쌍으로 사전에 어떤 방법이 있음을 별도로 사전 옮겼다 매개 변수 전달을?

답변 : 전송 사전 앞에 두 개의 별표를 추가

func(**core)

올바른 결과 :

<class 'dict'>
语文 81
数学 92

추천

출처blog.51cto.com/11750513/2426891