5. 自定义功能单元(一)
5.1 使用函数
5.1.1 声明函数
1 2 3 |
def <函数名> (参数1,参数2,参数列表): <函数语句> return <返回值> |
参数列表和返回值不是必须的。return 缺省返回 None。
圆括号和冒号“:”不能省略。
注意,参数列表不需要声明参数类型,只要函数可以计算参数,那就可以调用它。
5.1.2 调用函数
直接输入函数名+参数调用。
参数列表没有声明数据类型,不代表任何数据都可以调用,这要取决于函数内部的算法计算的是什么类型的数据,否则会出错。也就是说,一旦出现问题,只有在程序运行时才能被发现。因此,这就需要慎重处理参数列表,必要的话最好做个强制类型转换。
5.2 深入函数
5.2.1 默认值参数
1 2 3 |
def <函数名>(参数1=默认值1,参数2=默认值2): <函数语句> return <返回值> |
不传递参数时,参数就用函数定义里的默认值。类似于C语言。
5.2.2 参数传递
两种传递方法:
- 按照声明函数时参数的位置顺序进行传递,即位置参数
- 按照参数名传递参数值,即提供关键字参数
比如:
1 2 3 4 5 6 7 |
def hello(hi='你好', name='李雷'): print("%s, %s" % (hi, name)) hello() #没有参数传过来,默认输出“你好,李雷” hello(hi='Hello') #只给hi传递了参数,输出“Hello,李雷” hello(name='韩梅梅') #只给name传递了参数,输出“你好,韩梅梅” hello('韩梅梅来啦') #按照位置,给hi传递参数,输出“韩梅梅来啦,李雷” hello('杰瑞','汤姆') #按照位置依次传递两个参数,输出“杰瑞,汤姆” |
运行后得到:
你好, 李雷
Hello, 李雷
你好, 韩梅梅
韩梅梅来啦, 李雷
杰瑞, 汤姆
5.2.3 可变数量参数传递
在参数名前加一个星号“*”,表示该参数为可变参数。比如*a,则参数a为可变参数。可变参数的意思是,调用一次函数之后,函数定义中的参数的默认值就成为刚才调用时传递给它的那个参数值。
举例: