Python基础篇(五):函数的定义和调用

news2024/9/20 0:49:41

Python基础篇(四):基本数据类型的学习和示例

函数的定义和调用

  • 前言
  • 1. Python 函数示例
  • 2. 自定义函数
    • 2.1 函数语法
    • 2.2 函数示例
    • 2.3 函数调用
  • 3.内置函数
    • 3.1 数学函数
    • 3.2 类型转换函数
    • 3.3 序列操作函数
    • 3.4 输入输出函数
    • 3.5 文件操作函数
    • 3.6 迭代函数
    • 3.7 集合操作函数
    • 3.8 字符串操作函数

前言

函数是Python编程中的重要概念,掌握函数的使用和设计能够提高编程效率和代码质量,函数的作用如下:

  1. 代码重用和模块化:函数使得可以将一段可重用的代码封装成一个函数,可以在程序的不同部分多次调用。这样可以避免重复编写相同的代码,提高代码的可维护性和可读性。函数还支持模块化编程,将程序分解为多个小模块,每个函数负责完成特定的任务,使得程序结构更清晰、易于理解和维护。

  2. 抽象和封装:函数可以将复杂的操作抽象为一个函数调用,隐藏实现细节。这样可以提供更高层次的抽象,使得代码更简洁、易于使用和维护。函数的封装性还可以将一系列操作组合在一起,作为一个单元进行处理。

  3. 参数传递和返回值:函数可以接受参数作为输入,并根据参数的值执行相应的操作。通过函数的参数,可以向函数传递数据和信息,使得函数能够适应不同的输入情况。函数还可以通过return语句返回计算结果或其他需要的值,使得函数能够将结果传递给调用方,在程序的其他部分使用。

  4. 代码可读性和可维护性:将一段代码封装在函数中可以使代码更易读、易于理解。函数的使用可以提供有意义的函数名和适当的注释,从而增加代码的可读性。此外,函数使得程序结构更清晰,易于维护和调试。当出现错误时,只需要检查特定函数而不是整个程序。

  5. 分解复杂任务和可测试性:函数可以将复杂的任务分解为多个小的函数,每个函数负责解决其中的一部分问题。这样可以降低编写复杂代码的难度,使问题更易于管理和解决。函数的模块化特性也使得单元测试更加容易。可以对每个函数进行独立的测试,确保其功能的正确性,而不需要测试整个程序。

1. Python 函数示例

# 这个函数名为 `greet`,它接受一个参数 `name`。函数体内部打印了一条包含参数 `name` 的问候语。
def greet(name):
    """
    这个函数用于向用户打招呼
    """
    print("Hello, " + name + "!")

# 调用函数
greet("CXK")

在这里插入图片描述

2. 自定义函数

2.1 函数语法

在 Python 中,使用 def 关键字来定义函数。函数定义包括函数名、参数和函数体。

def function_name(parameter1, parameter2, ...):
    # 函数体
    # 执行任务
    # 返回结果(可选)
  • function_name 是函数起的名字,应该具有描述性,并符合 Python 命名规范。(喜欢定义方法名为menthod1()或者func()建议自己呼自己
  • parameter1, parameter2, ... 是函数的参数列表。参数是可选的,你可以根据需要定义任意数量的参数。参数可以是必需参数、默认参数或可变参数。
  • 函数体是执行特定任务的代码块。可以包含任意数量的语句。
  • 使用 return 语句返回一个结果。如果函数没有 return 语句,将默认返回 None

2.2 函数示例

def add_numbers(a, b):
    """
    这个函数接受两个参数,并返回它们的和
    """
    result = a + b
    return result

# 调用函数
sum = add_numbers(3, 5)
print(sum)  # 输出 8

函数接受两个参数 ab,并返回它们的和。在函数体内部将 ab 相加,并将结果存储在变量 result 中。使用 return 语句返回 result
在这里插入图片描述

2.3 函数调用

调用函数意味着执行函数体内的代码。要调用函数,只需提供函数名和所需的参数

function_name(argument1, argument2, ...)
  • function_name 是函数的名称
  • argument1, argument2, ... 是函数调用时提供的实际参数值

在上面的示例中,我们调用了 greet("cxk")add_numbers(3, 5),分别传递了不同的参数

3.内置函数

以下为部分常用的内置函数,详细的函数列表可参考Python官方文档

Python中内置函数的根据其功能进行分类及示例:

3.1 数学函数

  • abs(): 返回数值的绝对值。
print(abs(-10))  # 输出:10
  • pow(): 返回数值的指定次幂。
print(pow(2, 3))  # 输出:8
  • round(): 对数值进行四舍五入。
print(round(3.14159, 2))  # 输出:3.14

3.2 类型转换函数

  • int(): 将值转换为整数类型。
print(int("10"))  # 输出:10
  • float(): 将值转换为浮点数类型。
print(float("3.14"))  # 输出:3.14
  • str(): 将值转换为字符串类型。
print(str(42))  # 输出:"42"

3.3 序列操作函数

  • len(): 返回序列对象的长度或元素个数。
print(len("Hello"))  # 输出:5
  • max(): 返回序列对象中的最大值。
print(max([5, 2, 9, 1, 7]))  # 输出:9
  • min(): 返回序列对象中的最小值。
print(min([5, 2, 9, 1, 7]))  # 输出:1
  • sum(): 计算序列对象中所有元素的总和。
print(sum([1, 2, 3, 4, 5]))  # 输出:15

3.4 输入输出函数

  • print(): 打印输出指定的内容。
print("Hello, World!")  # 输出:Hello, World!
  • input(): 从用户输入中读取一行文本。
name = input("Enter your name: ")
print("Hello, " + name)

3.5 文件操作函数

  • open(): 打开文件并返回文件对象。
file = open("example.txt", "r")
  • read(): 读取文件内容。
content = file.read()
  • write(): 将内容写入文件。
file.write("Hello, World!")
  • close(): 关闭文件。
file.close()

3.6 迭代函数

  • range(): 生成一个整数序列。
print(list(range(1, 6)))  # 输出:[1, 2, 3, 4, 5]
  • enumerate(): 枚举序列对象并返回索引和对应的元素。
for index, value in enumerate(['song', 'jump', 'rap']):
    print(index, value)

3.7 集合操作函数

  • set(): 创建一个无序的唯一元素集合。
my_set = set([1, 2, 3, 2, 4, 5])
print(my_set)  # 输出:{1, 2, 3, 4, 5}
  • len(): 返回集合中的元素个数。
print(len(my_set))  # 输出:5
  • union(): 返回两个集合的并集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2))  # 输出:{1, 2, 3, 4, 5}

3.8 字符串操作函数

  • len(): 返回字符串的长度。
print(len("Hello"))  # 输出:5
  • upper(): 将字符串转换为大写。
print("Hello".upper())  # 输出:HELLO
  • lower(): 将字符串转换为小写。
print("Hello".lower())  # 输出:hello
  • split(): 将字符串分割为子字符串列表。
words = "Hello, World!".split(", ")
print(words)  # 输出:['Hello', 'World!']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/676254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#期末考试总结:

考点1:内插字符串$(使用方法:$"........{变量名}.....",作用:可读性增强,本身个也是一个字符串,可以作为一个变量赋值,有利于字符串的生成 考点2:强类型语言 考点3&…

【Unity之IMGUI】—自定义常用控件的封装(即拿即用)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

为什么有了HTTP,还需要WebSocket协议?

目录 WebSocket是什么? WebSocket怎样建立连接? WebSocket的实际用途 WebSocket 与 HTTP 的选择 HTTP是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,是半双工通信。 通常,打开某个网…

基于Java海鲜自助餐厅系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

【Syncfusion系列】开篇简介

背景 准备开个新坑,分享下Syncfusion(UI框架)的使用,之前用的handycontry,目前是两者结合起来用。Syncfusion真的是非常的强大,我必须记录一下。 Syncfusion 简介 Syncfusion 是一家软件公司,专…

华为手机内存不足?别焦虑,这里有迁移数据的超实用技巧!

1、usb线缆连接电脑和手机。 2、使用C:\Program Files (x86)\HiSuite\HiSuite.exe工具导出照片和视频。 步骤1:下载和安装HiSuite.exe工具 前往华为官网下载并安装HiSuite.exe工具。安装完成后,通过USB线将你的华为手机连接到电脑上。 步骤2&#xff…

centos 安装elasticsearch8.7.0, 并设置密码访问

访问下载网站 Elasticsearch 8.7.0 | Elastic 进入centos , 创建目录es mkdir /opt/es cd /opt/es wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-linux-x86_64.tar.gz 3、解压目录 es870 tar -zxvf elasticsearch-8.7.0-linux-x86_64.tar…

NFC CE运行模式

NFC CE运行模式使得携带NFC芯片的设备能充当智能卡(例如信用卡)使用。该运行模式所支持的应用场景极具吸引力,例如用支持该功能的Android智能手机来完成购票、支付,甚至充当门禁卡,汽车钥匙、公交卡等。 图8-19为CE运…

如何使用SQL语句创建触发器

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

MySQL的版本从5.7跳到了8.0有哪些原因?

MySQL的版本从5.7跳到了8.0的原因? 一、引言1.1、MySQL是什么?1.2、MySQL 5.7和8.0的历史背景 二、MySQL 8.0的新功能2.1、更好的安全性2.2、更高的性能2.3、更好的可扩展性2.4、JSON支持 三、MySQL 8.0的重要改进3.1、更严格的数据类型检查3.2、其他重要…

第三章 处理机调度

目录 一、调度的概念、层次 2.1 调度的基本概念 2.2 调度的三个层次 2.2.1 高级调度 2.2.2 低级调度 2.2.3 中级调度 2.2.3.1 进程的挂起态 2.2.4 三层调度的联系、对比 二、进程调度的时机、切换与过程、方式 2.1 进程调度的时机 2.2 进程调度的方式 2.2.1 非抢占…

MFC的main函数

-- 我们走得太远,忘掉了来时路。 MFC程序的main在哪里? MFC的main是_tWinMain(),有的版本是WinMain(),AfxWinMain(),总之会有Main字样。 作为C/C…

【Spring】Spring有什么用?Spring核心与设计思想之IOC与DI

文章目录 1 何为 Spring?2 什么是容器?3 理解Spring的 IOC3.1 传统开发的缺陷3.2 基于 IOC 思想的开发3.3 再谈Spring中的 IOC 4 理解Spring中的 DI写在最后 1 何为 Spring? Spring是一个开源的、轻量级的、面向企业级的Java应用框架。它提供…

(秋招)vins中的光流法

vins中的光流法 说到光流法,首先介绍其假设条件: 1.亮度恒定,就是同一点随着时间的变化,其亮度不会发生改变。这是基本光流法的假定(所有光流法变种都必须满足),用于得到光流法基本方程。就是…

【CSS3系列】第七章 · 过渡和动画

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

可视化计算机科学论文库DBLP,高效整理文献,生成领域趋势图、词云图

Github项目链接:https://github.com/yaunsine/getDBLP Http克隆方式:git clone https://github.com/yaunsine/getDBLP.git SSH克隆方式:git clone gitgithub.com:yaunsine/getDBLP.git 作者:yaunsine dblp网站相信大家都不陌生&am…

模拟电路系列文章-ADC驱动电路

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 模数转换器(Analog to Digital Convertor,ADC)将模拟量转变成数字量,是电学测量、控制领域—个极为重要的部件。 一个模拟电压信号,在进入A…

统信UOS系统开发笔记(六):提取在线安装软件后,提取其安装包,部署目标机使用离线软件包方式安装软件

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131348876 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

数据库底层物理存储层 的管理方案

​专栏内容: postgresql内核源码分析 手写数据库toadb 并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 数据库的物理存储层 简介 数据库的数据,在物理介质上…

【二叉树part04】| 110.平衡二叉树、257.二叉树的所以路径、404.左叶子之和

目录 ✿LeetCode110.平衡二叉树❀ ✿LeetCode257.二叉树的所有路径❀ ✿LeetCode404.左叶子之和❀ ✿LeetCode110.平衡二叉树❀ 链接:110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为&…