Python 基础学习笔记 8 —— 函数参数的处理


一、定义形参的默认值

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

def func1(x, y, z=10):  # 定义一个函数,包含 x、y、z 三个形参。其中 z 的默认值为 10
# 注意!设置了默认值的形参需要放在没设置默认值形参的后面
    print('变量 x 的值是:%d' % x)
    print('变量 y 的值是:%d' % y)
    print('变量 z 的值是:%d' % z)

print('调用函数时没有为 z 赋值')
func1(1, 2)
print('')
print('调用函数时为 z 赋值')
func1(1, 2, 3)

运行结果

调用函数时没有为 z 赋值
变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:10

调用函数时为 z 赋值
变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3

二、赋值时指定形参名

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

def func2(x, y, z):
    print('变量 x 的值是:%d' % x)
    print('变量 y 的值是:%d' % y)
    print('变量 z 的值是:%d' % z)

func2(y=2,x=1,z=3)  # 直接指定要赋值的形参名,这样的话可以不按顺序赋值

运行结果

变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3

三、多余实参的搜集

3.1 搜集为元组

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

def func3(x, y, z, *others):  # 将多余的实参收集到元组 others 中
# 注意!多余实参收集元组或要放在末尾
    print('变量 x 的值是:%d' % x)
    print('变量 y 的值是:%d' % y)
    print('变量 z 的值是:%d' % z)
    print('多余的实参值:', others)

func3(1, 2, 3, 4, 5, 6)

运行结果

变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3
多余的实参值: (4, 5, 6)

3.2 搜集为字典

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

def func4(x, y, z, **others_dict):  # 将多余的、指定了形参名的实参收集到字典 others_dict 中
# 注意!多余实参收集字典要放在末尾
    print('变量 x 的值是:%d' % x)
    print('变量 y 的值是:%d' % y)
    print('变量 z 的值是:%d' % z)
    print('多余的实参字典:', others_dict)


func4(x=1, y=2, z=3, xx=4, yy=5, zz=6)

运行结果

变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3
多余的实参字典: {'xx': 4, 'yy': 5, 'zz': 6}

3.3 组合使用

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

def func5(x, y, z, *others, **others_dict):  # 将多余的、未指定形参名的实参收集到元组 others 中;多余的、指定了形参名的实参收集到字典 others_dict 中
# 注意!多余实参元组要放在多余实参字典前面
    print('变量 x 的值是:%d' % x)
    print('变量 y 的值是:%d' % y)
    print('变量 z 的值是:%d' % z)
    print('多余的实参值:', others)
    print('多余的实参字典:', others_dict)


print('没有多余实参的情况:')
func5(1, 2, 3)
print()

print('仅有多余未指定形参名的实参:')
func5(1, 2, 3, 4)
print()

print('仅有多余指定形参名的实参:')
func5(1, 2, 3, xx=4)
print()

print('两者均有:')
func5(1, 2, 3, 4, 'aaa', yy=5, zz=6)

运行结果

没有多余实参的情况:
变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3
多余的实参值: ()
多余的实参字典: {}

仅有多余未指定形参名的实参:
变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3
多余的实参值: (4,)
多余的实参字典: {}

仅有多余指定形参名的实参:
变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3
多余的实参值: ()
多余的实参字典: {'xx': 4}

两者均有:
变量 x 的值是:1
变量 y 的值是:2
变量 z 的值是:3
多余的实参值: (4, 'aaa')
多余的实参字典: {'yy': 5, 'zz': 6}

发表评论

电子邮件地址不会被公开。