Python学习笔记(二)函数

函数

定义

def 函数名(参数列表):
    pass#占位符

类型

数据类型转换:int()等。另外可以把函数名赋值给一个变量

数据类型检查用isinstance(变量, (类型列表)),返回布尔值

函数可以无返回值,Python自动返回None;也可以返回多个值,但实际上Python是把它们放在了一个tuple中返回的

参数

默认参数要指向不变对象

可变参数*args。调用函数的时候,参数可以传任意个。也可以直接传入**args,接收的是tuple

关键字参数**kw,接收的是dict,可以用关键字参数扩展函数功能

命名关键字参数使用def f(a, b, *, key1, key2 = value2)传递,其中*之后的参数都是命名关键字参数,调用时必须传入参数名。这样可以限制关键字参数的名字

递归

这里主要记录一个尾递归优化的概念,主要是为了防止栈溢出,在函数return的时候不使用表达式而是调用自身,其实就和循环类似了。不过大多数编程语言没有针对尾递归做优化,Python也是,因此将递归改成尾递归仍然会溢出……

最后给出该教程中递归练习的解答,经典的汉诺塔问题

def move(n,a,b,c):#如果要将A上的n个盘子移动到C
    if n>0:
        move(n-1,a,c,b)#则需要首先将n-1个盘子从A移动到B
        print('%s --> %s' %(a, c))#上一步完成之后才能把A上第n个盘子移动到C
        move(n-1,b,a,c)#然后将n-1个盘子从B移动到C。完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值