#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/3/14 14:38 # @Author : banzhu # @File : parameter passing.py """ 函数参数的传递:通过赋值来传递 函数:func """ # 函数参数的定义方式 # 方式1:func(arg1,arg2,...) # 一个函数可以定义任意个参数,每个参数间用逗号分割, # 用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等的值(实际参数), # 而且顺序必须相同。第一个形参对应着第一个实参 def a(x,y): print(x,y) # 方式2:func(arg1,arg2=value2,...) def a(x,y=3): print(x,y) a(1,2) # 用该函数,a(1, 2)同样还是x取1,y取2,但是如果a(1),则不会报错了,这个时候x还是1,y则为默认的3 # 这块设计python的默认参数,定义有默认参数的函数时,默认值参数位置必须都在非默认值参数后面。 # 调用时提供默认值参数值时,使用提供的值,否则使用默认值。 # 方式3:func(*args) # *args是可变参数(位置参数),args接收的是一个tuple,可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple def a(*x): if len(x)==0: print('None') else: print(x) a(1,2,3) # 方式4:func(**kwargs) # **kwargs是关键字参数,参数在函数内部将被存放在以形式名为标识符的dictionary中, # 这时调用函数的方法则需要采用arg1=value1, arg2=value2这样的形式 # kw接收的是一个dict,关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw) # 函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数: person('Michael', 30) # 输出结果:name: Michael age: 30 other: {}