Python学习笔记(2)

本文详细介绍了Python中函数的各种类型及用法,包括默认参数、可变参数、关键字参数等,并通过具体示例展示了这些函数的应用场景。此外,还探讨了递归函数以及经典汉诺塔问题的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:以下代码为看视频记录下来的,仅供学习参考

# 函数定义和默认参数
def func(x, y = 500):
    print(x, y)

func(150)
func(100, 200)
func(y = 300, x = 100)

# 可变参数
def func(name, *numbers):
    print(name)
    print(numbers)

func('Tom', 1, 2, 3, 4)

# 关键字参数
def func(name, **kvs):
    print(name)
    print(kvs)

func('Jack', china = 'Beijing', uk = 'London')

# 命名关键字参数
def func(*, china, uk): # *用于和普通参数做分割,*args一样效果
    print(china, uk)

func(china = 'Beijing', uk = 'London')  # 必须传入参数名

# 复杂情况
def func(a, b, c = 0, *args, **kvs):
    print(a, b, c, args, kvs)

func(1, 2)
func(1, 2, 3)
func(1, 2, 3, 'a', 'b')
func(1, 2, 3, 'a', 'b', china = 'Beijing', uk = 'London')
func(1, 2, 3, *('a', 'b'), **{'china':'Beijing', 'uk':'London'})

# 递归的经典例子!
def fib(n):
    if n < 1:
        raise ValueError
    elif (n == 1) or (n == 2):
        return 1
    else:
        return fib(n - 1) + fib(n - 2)

print(fib(1))
print(fib(2))
print(fib(3))
print(fib(4))
print(fib(5))
print(fib(6))

以下是结果
150 500
100 200
100 300
Tom
(1, 2, 3, 4)
Jack
{'china': 'Beijing', 'uk': 'London'}
Beijing London
1 2 0 () {}
1 2 3 () {}
1 2 3 ('a', 'b') {}
1 2 3 ('a', 'b') {'china': 'Beijing', 'uk': 'London'}
1 2 3 ('a', 'b') {'china': 'Beijing', 'uk': 'London'}
1
1
2
3
5
8

汉诺塔问题:

def move(n, source, target, helper):
    if n == 1:
        print source + ' -> ' + target
    else:
        move(n - 1, source, helper, target)
        print source + ' -> ' + target
        move(n - 1, helper, target, source)

move(4, 'A', 'B', 'C')

'''
A -> C: [2, 3, 4], [], [1]
A -> B: [3, 4], [2], [1]
C -> B: [3, 4], [1, 2]
A -> C: [4], [1, 2], [3]
B -> A: [1, 4], [2], [3]
B -> C: [1, 4], [], [2, 3]
A -> C: [4], [], [1, 2, 3]
A -> B: [], [4], [1, 2, 3]
C -> B: [], [1, 4], [2, 3]
C -> A: [2], [1, 4], [3]
B -> A: [1, 2], [4], [3]
C -> B: [1, 2], [3, 4], []
A -> C: [2], [3, 4], [1]
A -> B: [], [2, 3, 4], [1]
C -> B: [], [1, 2, 3, 4], []
'''


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值