当前位置: 首页 > news >正文

21天Python计划:函数简单介绍

文章目录

    • 前言
    • 一、函数知识体系
    • 二、函数基础
      • 函数的定义和调用
      • 函数参数
    • 三、函数对象、函数嵌套、名称空间与作用域、装饰器
      • 函数对象
      • 函数嵌套
      • 名称空间与作用域
      • 装饰器
    • 四、迭代器、生成器、面向过程编程
      • 迭代器
      • 生成器
      • 面向过程编程
    • 五、三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
      • 三元表达式
      • 列表推导式
      • 生成器表达式
      • 递归
      • 匿名函数
      • 内置函数
    • 六、函数草稿
    • 结语

前言

Python是一种强大且易于学习的编程语言。通过这个21天的计划,我们将逐步深入函数简单介绍。无论你是初学者还是有一定基础的开发者,这个计划都将帮助你巩固和扩展你的Python知识。

在学习本篇之前,我们先复习一下前面的内容:
21天Python计划:Python下载和开发工具介绍
21天Python计划:数据类型、字符编码、文件处理
21天Python计划:基础语法与课外练习

一、函数知识体系

在Python编程中,函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。函数的使用可以提高代码的复用性和可维护性,使代码结构更加清晰。Python中的函数知识体系主要包括函数的定义、调用、参数传递、返回值等基础内容,以及函数对象、嵌套函数、名称空间与作用域、装饰器等高级特性,还有迭代器、生成器、面向过程编程等相关概念,以及一些特殊的表达式和编程技巧,如三元表达式、列表推导式、生成器表达式、递归、匿名函数和内置函数等。

二、函数基础

函数的定义和调用

在Python中,使用def关键字来定义函数,函数定义的基本语法如下:

# 定义一个简单的函数,用于打印问候语
def greet():
    """
    这是一个简单的函数,用于打印问候语
    """
    print("Hello, World!")

# 调用函数
greet()

在这里插入图片描述

函数参数

函数可以接受参数,参数分为位置参数、默认参数、可变参数和关键字参数。

# 定义一个带有位置参数的函数
def add(a, b):
    """
    计算两个数的和
    :param a: 第一个数
    :param b: 第二个数
    :return: 两数之和
    """
    return a + b

# 调用函数并传入参数
result = add(3, 5)
print(result)

# 定义一个带有默认参数的函数
def power(x, n=2):
    """
    计算x的n次方
    :param x: 底数
    :param n: 指数,默认值为2
    :return: x的n次方
    """
    return x ** n

# 调用函数时可以不传入默认参数
print(power(3))
# 也可以传入新的参数值
print(power(3, 3))

# 定义一个带有可变参数的函数
def sum_numbers(*numbers):
    """
    计算多个数的和
    :param numbers: 可变参数,接收多个数值
    :return: 所有数的和
    """
    total = 0
    for num in numbers:
        total += num
    return total

# 调用函数时可以传入任意数量的参数
print(sum_numbers(1, 2, 3, 4))

# 定义一个带有关键字参数的函数
def person_info(name, age, **kwargs):
    """
    打印个人信息
    :param name: 姓名
    :param age: 年龄
    :param kwargs: 关键字参数,接收其他信息
    """
    print(f"Name: {name}, Age: {age}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# 调用函数时可以传入关键字参数
person_info("Alice", 25, city="New York", job="Engineer")

在这里插入图片描述

三、函数对象、函数嵌套、名称空间与作用域、装饰器

函数对象

在Python中,函数也是对象,可以赋值给变量,也可以作为参数传递给其他函数,还可以作为返回值返回。

# 定义一个函数
def say_hello():
    print("Hello!")

# 将函数赋值给变量
greet_func = say_hello
# 调用变量指向的函数
greet_func()

# 定义一个高阶函数,接收一个函数作为参数
def call_function(func):
    func()

# 调用高阶函数,传入函数对象
call_function(say_hello)

在这里插入图片描述

函数嵌套

函数内部可以定义另一个函数,这就是函数嵌套。

def outer_function():
    print("This is the outer function.")
    def inner_function():
        print("This is the inner function.")
    # 调用内部函数
    inner_function()

# 调用外部函数
outer_function()

在这里插入图片描述

名称空间与作用域

名称空间是Python中存储变量名和对象之间映射关系的地方,作用域则决定了变量的可见性和生命周期。Python中有全局作用域和局部作用域。

# 全局变量
global_variable = 10

def test_scope():
    # 局部变量
    local_variable = 20
    print(f"Global variable: {global_variable}")
    print(f"Local variable: {local_variable}")

# 调用函数
test_scope()
# 尝试访问局部变量会报错
# print(local_variable)

在这里插入图片描述

装饰器

装饰器是一种特殊的函数,用于修改其他函数的行为。

# 定义一个装饰器函数
def my_decorator(func):
    def wrapper():
        print("Before function call")
        func()
        print("After function call")
    return wrapper

# 定义一个被装饰的函数
@my_decorator
def say_hi():
    print("Hi!")

# 调用被装饰的函数
say_hi()

在这里插入图片描述

四、迭代器、生成器、面向过程编程

迭代器

迭代器是一个可以记住遍历位置的对象,使用iter()和next()函数可以实现迭代器。

# 定义一个列表
my_list = [1, 2, 3, 4, 5]
# 创建迭代器对象
my_iterator = iter(my_list)
# 使用next()函数获取迭代器的下一个元素
print(next(my_iterator))
print(next(my_iterator))

在这里插入图片描述

生成器

生成器是一种特殊的迭代器,使用yield关键字来定义。

# 定义一个生成器函数
def my_generator():
    yield 1
    yield 2
    yield 3

# 创建生成器对象
gen = my_generator()
# 遍历生成器
for num in gen:
    print(num)

在这里插入图片描述

面向过程编程

面向过程编程是一种以过程为中心的编程思想,将问题分解为一个个步骤,通过函数来实现这些步骤。

# 定义一个函数用于计算圆的面积
def calculate_circle_area(radius):
    import math
    return math.pi * radius ** 2

# 调用函数计算圆的面积
radius = 5
area = calculate_circle_area(radius)
print(f"The area of the circle with radius {radius} is {area}")

在这里插入图片描述

五、三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

三元表达式

三元表达式是一种简洁的条件判断语句。

# 传统的条件判断
x = 10
if x > 5:
    result = "x is greater than 5"
else:
    result = "x is less than or equal to 5"

# 使用三元表达式
result = "x is greater than 5" if x > 5 else "x is less than or equal to 5"
print(result)

在这里插入图片描述

列表推导式

列表推导式是一种简洁的创建列表的方法。

# 传统的创建列表的方法
squares = []
for i in range(1, 6):
    squares.append(i ** 2)

# 使用列表推导式
squares = [i ** 2 for i in range(1, 6)]
print(squares)

在这里插入图片描述

生成器表达式

生成器表达式与列表推导式类似,但使用圆括号,返回一个生成器对象。

# 使用生成器表达式
gen_expr = (i ** 2 for i in range(1, 6))
# 遍历生成器
for num in gen_expr:
    print(num)

在这里插入图片描述

递归

递归是指函数调用自身的编程技巧。

# 定义一个递归函数,用于计算阶乘
def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n - 1)

# 调用递归函数
print(factorial(5))

在这里插入图片描述

匿名函数

匿名函数是一种没有名称的函数,使用lambda关键字定义。

# 定义一个匿名函数
add = lambda a, b: a + b
# 调用匿名函数
print(add(3, 5))

在这里插入图片描述

内置函数

Python提供了许多内置函数,如len()、sum()、max()等。

my_list = [1, 2, 3, 4, 5]
# 使用内置函数计算列表的长度
length = len(my_list)
# 使用内置函数计算列表的和
total = sum(my_list)
# 使用内置函数找出列表中的最大值
maximum = max(my_list)
print(f"Length: {length}, Sum: {total}, Max: {maximum}")

在这里插入图片描述

六、函数草稿

在实际编程中,我们可能会先编写一些函数草稿,用于测试和验证想法。以下是一个简单的函数草稿示例:

# 这是一个函数草稿,用于计算两个数的乘积
def multiply(a, b):
    return a * b

# 测试函数
result = multiply(4, 6)
print(result)

在这里插入图片描述

结语

通过这个21天的Python计划,我们涵盖了函数简单介绍。希望这些内容能帮助你更好地理解和使用Python。继续学习和实践,你将成为一名优秀的Python开发者!

http://www.dtcms.com/a/98392.html

相关文章:

  • PCBB印刷电路板缺陷检测YOLO数据集分享
  • LeetCode hot 100—两两交换链表中的节点
  • Redis场景问题1:缓存穿透
  • 用python压缩图片大小
  • 算法-广度优先搜索
  • WSL系统找不到指定的文件
  • 接口自动化——初识pytest
  • (头歌作业—python)3.2 个人所得税计算器(project)
  • 智能发光斑马线:点亮城市道路安全之光
  • DDR(Double Data Rate)详解
  • 云边端协同
  • vue 脚手架解决跨域问题
  • 2022年12月青少年软件编程(图形化)等级考试三级编程题
  • 在树莓派5(8G版)上运行Ollama + LLM
  • NG-ZORRO中tree组件的getCheckedNodeList怎么使用
  • 26考研——排序_选择排序_选择排序的基本思想 简单选择排序(8)
  • 每天一篇目标检测文献(六)——Part One
  • 小林coding-12道Spring面试题
  • 自然语言处理(17:(第五章2.)梯度消失和LSTM(详细拆解))
  • WebSocket通信的握手阶段
  • 基于 WebAssembly 的 Game of Life 交互实现
  • ArrayList和LinkedList比较
  • 使用 Python 进行链上数据监控:让区块链数据触手可及
  • 深入解析音频:格式、同步及封装容器
  • SQL Server:sys.dm_hadr_physical_seeding_stats
  • 2023第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组(真题题解)(C++/Java题解)
  • [项目]基于FreeRTOS的STM32四轴飞行器: 十六.激光测距定高功能
  • 【Web前端】解锁JavaScript中Web存储API的秘密
  • LoRA 模型微调框架核心原理及实现步骤
  • 第7期:生成式AI伦理边界——当技术撞上道德与法律的防火墙