【Python 课堂】第67课—— 函数的参数传递

    作者:在线学习平台更新于: 2014-10-28 10:24:17

    大神带你学编程,欢迎选课

    本篇面向读者:有一点点 Python 基础
    关键字:函数,参数,默认值
     
    先说下上次课最后留的那题,我自己的解法:
    print ';'.join([str(i) for i in range(1,101) if i % 2 == 0 and i % 3 == 0 and i % 5 == 0])
     
    另外,关于上次说的 List Comprehension,我在文中称之为“列表综合”,这是引自《简明 Python 教程》的翻译视频教程。也有同学表示叫做“列表解析”或“列表表达式”。都是一个意思,其实在写这课之前,我从来都不去“叫”它,只知道这么用而已。
     
    ===================
     
    我们曾经讲过 Python 中函数的参数传递(见第21课)。最基本的方式是:
     
    定义
    def func(arg1, arg2):
    print arg1, arg2
     
    调用
    func(3, 7)
     
    我们把函数定义时的参数名(arg1、arg2)称为形参,调用时提供的参数(3、7)称为实参。
     
    这种方式是根据调用时提供参数的位置进行匹配,要求实参与行参的数量相等,默认按位置匹配参数。调用时,少参数或者多参数都会引起错误。这是最常用的一种函数定义方式。
     
    在调用时,也可以根据形参的名称指定实参。如:
     
    func(arg2=3, arg1=7)
     
    但同样,必须提供所有的参数。看看和func(3, 7)的运行结果有什么不同。
     
     
    Python 语言还提供了其他一些更灵活的参数传递方式,如:
     
    func2(a=1, b=2, c=3)
    func3(*args)
    func4(**kargs)
     
    今天我们先说说func2这种方式。
     
    这种方式可以理解为,在一般函数定义的基础上,增加了参数的默认值。这样定义的函数可以和原来一样使用,而当你没有提供足够的参数时,会用默认值作为参数的值。
     
    例如:
     
    定义
    def func(arg1=1, arg2=2, arg3=3):
    print arg1, arg2, arg3
     
    调用
    func(2, 3, 4)
    func(5, 6)
    func(7)
     
    输出为
    2 3 4
    5 6 3
    7 2 3
     
    提供的参数会按顺序先匹配前面位置的参数技能培训,后面未匹配到的参数使用默认值。
     
    也可以指定其中的部分参数,如:
     
    func(arg2=8)
    func(arg3=9, arg1=10)
     
    输出为
    1 8 3
    10 2 9
     
    或者混合起来用:
     
    func(11, arg3=12)
     
    输出为
    11 2 12
     
    但要注意,没有指定参数名的参数必须在所有指定参数名的参数前面,且参数不能重复。以下的调用都是错误的:
     
    func(arg1=13, 14)
    func(15, arg1=16)
     
     
    定义参数默认值的函数可以在调用时更加简洁。大量 Python 模块中的方法都运用了这一方式,让使用者在调用时可以提供尽可能少的参数。
     
    接下来的几次课在线学习,我会继续介绍其他的参数传递方式。

课课家教育

未登录

1