Python基础知识9(# 函数的定义 )

本文详细介绍了Python编程中的函数概念,包括函数的作用、如何定义函数、参数的使用(位置参数、默认参数、关键字参数、不定长参数*args和**kwargs)、函数的递归实现(阶乘和斐波那契数列)、以及lambda表达式和匿名函数的应用。通过实例展示了函数在提升代码模块性和可维护性方面的重要性。
摘要由CSDN通过智能技术生成

# 函数:

# 组织好的, 可复用的, 提升代码的模块性, 可维护性

# def func1()

def func1(x, y):

    l = x + y  #None

#没有 return 的时候 返回值是None  

例如:

s = func1(10, 20)

print(s) #None  

# 参数是对应的。

def func2(x, y):

    print(x,y)

func2(5,6)

func2(6, 5)

# 默认参数

# def func3(a, c,b=10): #b为默认参数

#     return a + b +c

# print(func3(1,2)) #13

# def func3(a, c, b):

#     return a + b +c

# print(func3(1,2)) # TypeError: func3() missing 1 required positional argument: 'b'

#关键字参数 # 可以不按照顺序

def func4(x, y, z):

    return x*y*z

print(func4(y=2, x=3, z=5))

# 不定长参数(*args)

# def sum(x,y):

#     return x + y

# def sum(x,y,z):

#     return x + y + z

上述 sum(x,y)和 sum(x,y,z)中,参数都是固定的,例如sum(x,y),只能输入x,y两个参数

def sum3(*args):

    return sum(args)

    # print(args)

print(sum3(1,2,32,45,5,1,23,12,312,41,1))

sum3(*args):传入*args不定长参数,此时函数sum3(*args)可以接收任意长度参数

# **kwargs (接收键值对参数)

例如:

# def func5(**kwargs):

#     print(kwargs)

# func5(b=5, c=6, d=7)

# 函数的递归

# 自己调用自己

例如:阶乘

# 1! = 1

# 2! = 2*1!

# 3! = 3*2!

# .....

#

函数代码如下:

def factorial(n):

    if n == 1:

        return 1

    return n * factorial(n-1) #自己调用自己

# factorial(4) => 4 * factorial(3) =>4 * 3 * factorial(2) => 4 * 3 * 2 * factorial(1) =>4 * 3 * 2 * 1

# factorial(n-1) => return (n-1)*factorial(n-2)

# factorial(n-2) => return (n-2)*factorial(n-3)

print(factorial(4))

斐波那契数列:

# 1 2 3 5 8 13 21 34.....  后一个数等于前两个数之和 斐波那契数列

def fibonacci(n):

    if n == 1:

        return 1

    if n == 2:

        return 2

    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(35))

# 1 3 4 7 11 18 f-lucas数列

函数中return的作用

def func6(x,y):

    print(x,y)

    return  #见到 return 这个函数就执行完毕了,结束了。 这里没有 return值。 返回的是默认的NONE

    print(y,z)

func6(1,2)

# s = sum([1,2,32,23])

# print(s)

# 函数起名的时候一定要注意,不要覆盖掉Python里默认的函数

def sum(x, y):

    return x + y

# s = sum([1,2,32,23]) #TypeError: sum() missing 1 required positional argument: 'y'

# print(s)

# 函数里定义的变量,在函数外是无法被访问的

def func7():

    x = 1

# print(x) # NameError: name 'x' is not defined

def func8(x:str, y:list): #(x:str, y:list)告诉 python 参数的类型。

    pass

# lamda函数,匿名函数,一般和key= lamda e:e一起使用

lambda x,y: x + y

lam = lambda x,y: x + y

def lam2(x,y):

    return x + y

def myFunc(e):

    return e['year']

cars = [

    {

        'car': 'Ford',

        'year': 2005

    },

    {

        'car': 'VW',

        'year': 2009

    },

    {

        'car': 'FT',

        'year': 2015

    },

    {

        'car': 'BYD',

        'year': 2025

    },

]

cars.sort(key= lambda e: e['year'])#key= lambda e: e['year'] 直接返回函数,不需要上述先定义myFunc(e)函数,再调用myFunc(e)

print(cars)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值