一、形参,实参

def 函数名(形参):
    主题代码

调用: 函数名(实参)

注:形参可有可无,如果函数定义时没有形参,在调用的时候也不用传实参。

def hello():
    print('hello world')


hello()


def add(x, y):  # x, y为形参
    res = x + y
    print(res)


add(1, 2)  # 1, 2 为实参
形参变量,只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元
。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
实参变量,可以是常量,变量,表达式,函数等,无论实参是何种类型的变量,在进行函数调用时,他们都
必须有确定的值,一边把这些值传给形参变量,因此应预先给实参赋值

二、位置参数

在函数调用的时候,实参赋值与形参是一一对应的关系,
是按照位置顺序进行赋值操作,这种参数称为位置参数

def student(name, age, sex):
    print(name, age, sex)


student('Tom', 13, '男')
student('Jerry', 12, '男')
student('Rex', 13, '男')

三、默认参数

  1. 在函数定义的时候,就给形参赋上初值,这个形参就称为默认参数
  2. 在函数调用的时候,默认参数不用赋值,默认是设置的初值
  3. 如果调用时给默认参数赋值了,则用新的值替代默认值
  4. 默认参数在定义时一定要在位置参数之后,否则会有语法错误
def student(name, age, sex='男'):
    print(name, age, sex)


student('Tom', 13, )
student('Jerry', 12, '女')
student('Rex', 13, '女')


# 结果:
# Tom 13 男
# Jerry 12 女
# Rex 13 女

四、关键参数

  1. 关键参数是在函数调用的时候,通过以“形参名”=实参 的方式进行赋值操作
  2. 赋值时,关键参数应放在位置参数之后
  3. 关键参数的赋值顺序可以不按定义时的形参顺序进行赋值,可以任意调整位置,但前提是一定要在位置参数之后
def student(name, age, sex):
    print(name, age, sex)


student('Tom', sex='男', age=50)

# 结果:Tom 50 男

五、不定长参数

  1. 如果不给不定长参数传参,args默认以元组形式呈现,kwargs以字典形式呈现
def student(name, *args, **kwargs):
    print(name, args, kwargs)


student('Tom')  # Tom () {}
  1. 给不定长参数*args传参是以位置参数的方式传进去的,而给不定长参数**kwargs传参是以关键字参数的方式传入的
def student(name, *args, **kwargs):
    print(name, args, kwargs)


student('Tom', 'beijing', 'shanghai', age=12, sex='男')

# 结果:Tom ('beijing', 'shanghai') {'age': 12, 'sex': '男'}

位置参数优于关键字参数, *args就是位置参数,因此前面不能有关键字参数


测试菜鸟
10 声望3 粉丝

测试小白爱测试!!!