Python-自定义函数

声明

本篇内容是记录廖雪峰老师的python教程笔记。
原教程网址为:https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888#0

定义函数

使用def定义函数,格式如下:

def f_name(f_para1,f_para2,…):
#此处缩进4格书写函数体

调用函数

  • 同一py文件下的,可以通过f_name(参数)调用
  • 调用另一py文件下的函数,使用from 文件名(无py) import f_name

空函数

def empty():
pass

函数返回值

  • return
    返回None
  • return x
    返回x
  • return x1,x2,x3,…
    返回一个tuple(x1,x2,x3,…)

函数参数

默认参数

def test(x,y=2)
此时默认y的值为2,在调用函数时,可以同时传入两个数分别赋给x,y,例如:test(3,3)
也可只传一个参数,赋给x,y此时取默认值2 ,例如:test(3)

默认参数必须指向不变对象(不变对象一旦创建,对象内部的数据就不能修改,减少了由于修改数据导致的错误)

可变参数

在参数前面加入==*==号,表示传入参数个数不确定,可以传入任意个参数,包括0个参数。
这些可变参数,在函数调用时自动组装为一个tuple。

关键字参数

允许传入0/人一个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
在参数前面加入==**==号,表明这是一个关键字参数。

命名关键字参数

闲置关键字参数的名字,例如只接受city和job作为关键字参数,定义的函数如下:
def person(name, age, , city, job):
*后面的参数被视为命名关键字参数。
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符
了。
命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:
命名关键字参数可以有缺省值,从而简化调用;

参数组合

5种参数可以组合使用,但是,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数

递归函数

递归优化–尾递归

为了防止栈溢出,将递归优化为尾递归,在return时不返回表达式,仅返回递归函数本身。
遗憾的是,大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化,所以,即使把上面的fact(n)函数改成尾递归方式,也会导致栈溢出。

递归的优缺点

优点:逻辑简单清晰
缺点:过深调用会导致栈溢出

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值