从零开始学Python(三)函数与lambda表达式

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于Python的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.函数

1.函数与方法的区别

2.函数的定义

3.函数的传参

4.函数的返回值

5.函数的运用

二.lambda表达式


一.函数

1.函数与方法的区别


  1. 函数是独立的代码块,可以在任何地方调用。方法是与对象相关联的,只能通过对象调用

  2. 函数可以接受任意数量的参数,包括可选参数和默认参数。方法通常只接受一个参数,即对象本身

  3. 函数可以返回任何类型的值,包括None。方法通常返回与对象相关的值

  4. 函数可以定义在模块级别或类级别。方法只能定义在类级别

⭐⭐总之,函数是独立的代码块,可以在任何地方调用,而方法是与对象相关联的,只能通过对象调用(直接调用的是函数 通过对象点出来的是方法)


2.函数的定义

语法:

def function_name(parameters):
    """docstring"""
    # function body
    return value

#function_name是函数的名称
#parameters是函数的参数列表,可以是任意数量的参数,用逗号分隔
#函数体是由缩进的代码块组成,可以包含任意数量的语句
#return语句用于返回函数的结果,可以省略,如果省略,则函数返回None

演示:

#定义函数
def add(x, y):
    """Return the sum of x and y."""
    return x + y


#调用函数
result = add(2, 3)
print(result)  # Output: 5

3.函数的传参

  1. 位置参数传递:按照函数定义时参数的顺序,依次传入参数值

    def add(x, y):
        return x + y
    
    result = add(1, 2)  # 位置参数传递
    print(result)  # 输出 3
  2. 关键字参数传递:通过指定参数名来传递参数值,可以不按照函数定义时参数的顺序传递参数

    def add(x, y):
        return x + y
    
    result = add(y=2, x=1)  # 关键字参数传递
    print(result)  # 输出 3
  3. 默认参数传递:在函数定义时为参数指定默认值,调用函数时可以不传递该参数,使用默认值

    def add(x, y=2):
        return x + y
    
    result1 = add(1)  # 默认参数传递
    result2 = add(1, 3)  # 位置参数传递
    print(result1)  # 输出 3
    print(result2)  # 输出 4
  4. 可变参数传递:在函数定义时使用*args语法,可以接收任意数量的位置参数,将它们作为元组传递给函数

    def add(*args):
        result = 0
        for arg in args:
            result += arg
        return result
    
    result1 = add(1, 2, 3)  # 可变参数传递
    result2 = add(1, 2, 3, 4, 5)
    print(result1)  # 输出 6
    print(result2)  # 输出 15
  5. 关键字可变参数传递:在函数定义时使用**kwargs语法,可以接收任意数量的关键字参数,将它们作为字典传递给函数

    def print_info(**kwargs):
        for key, value in kwargs.items():
            print(f"{key}: {value}")
    
    print_info(name="Alice", age=18)  # 关键字可变参数传递
    # 输出:
    # name: Alice
    # age: 18
     

4.函数的返回值

①返回值不限类型,所以不需要指定返回类型

②使用 return 关键字

③可以通过元组的形式返回多个值

5.函数的运用

①函数嵌套

#题目需求:定义求和函数,在求和函数上完成平均值函数


def sum_numbers(numbers):
    """求和函数"""
    result = 0
    for number in numbers:
        result += number
    return result

def average_numbers(numbers):
    """平均值函数"""
    sum_result = sum_numbers(numbers)
    return sum_result / len(numbers)

numbers = [1, 2, 3, 4, 5]
sum_result = sum_numbers(numbers)
average_result = average_numbers(numbers)
print(sum_result)  # 输出 15
print(average_result)  # 输出 3.0

②变量的作用域区分

全局变量是在函数外部定义的变量,可以在程序的任何地方访问

        

x = 10  # 全局变量

def print_x():
    print(x)  # 可以访问全局变量x

print_x()  # 输出 10

#变量x是在函数外部定义的,因此它是全局变量。在print_x函数中,我们可以直接访问全局变量x

局部变量是在函数内部定义的变量,只能在函数内部访问

        

def print_x():
    x = 10  # 局部变量
    print(x)  # 可以访问局部变量x

print_x()  # 输出 10

#变量x是在print_x函数内部定义的,因此它是局部变量。在函数外部无法访问局部变量x

🔺需要注意的是,如果在函数内部使用了与全局变量同名的变量,那么该变量会被视为局部变量,而不是全局变量

        

x = 10  # 全局变量

def print_x():
    x = 20  # 局部变量,与全局变量同名
    print(x)  # 访问局部变量x

print_x()  # 输出 20
print(x)  # 输出 10,访问全局变量x

#虽然全局变量x的值为10,但是在print_x函数内部我们定义了一个同名的局部变量x
#因此在函数内部访问的是局部变量x的值,而不是全局变量x的值
#在函数外部访问x时,仍然访问的是全局变量x的值

二.lambda表达式

定义:相当于匿名函数,可以简化目前的函数,在 java 中的流式操作与函数接口有体现

使用场景及示例:

排序:lambda表达式可以作为sorted函数的key参数,用于指定排序规则

              使用lambda表达式按照字符串长度对列表进行排序

words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # 输出 ["date", "apple", "banana", "cherry"]

②过滤:ambda表达式可以作为filter函数的第一个参数,用于指定过滤规则

               使用lambda表达式过滤出列表中的偶数

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出 [2, 4, 6]

③映射:lambda表达式可以作为map函数的第一个参数,用于指定映射规则

               使用lambda表达式将列表中的元素平方

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 输出 [1, 4, 9, 16, 25]

④函数传参:lambda表达式可以作为函数的参数,用于指定函数的行为

def apply_operation(operation, x, y):
    return operation(x, y)

result = apply_operation(lambda x, y: x + y, 1, 2)
print(result)  # 输出 3

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊   

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是辉辉啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值