「Python程序设计」模块式编程:函数

news2024/12/24 10:12:40

​小时候,我们都或多或少的玩过一些积木玩具。通过把动物,或者是人物的各个组成部分,一小块,一小块地搭建起来,最终,就组成了我们最终想要的形状。这有点类似于乐高积木,通过把固定的块状物,进行拼接,就可以拼接出各式各样的类型。

我们的程序设计,也是一样的,特别是大的软件项目,还有大的软件工程,都需要进行模块化设计和开发。这有点像是分而治之的思想,把一个大的,很难一次性解决的问题,分解成多个小的,容易解决的部分。然后,把这些小的问题给解决了,全部解决完成之后,我们的大问题,自然也就解决了。

我们这里要探讨的函数,就是把大的软件项目,模块化,分解成小的,可以单独处理的模块。通过搭建这些模块,最终形成我们的整个项目。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

1、函数代码块,以 def 关键词开头,后接函数标识符名称和圆括号 ()。

2、任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

3、函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

4、函数内容以冒号 : 起始,并且缩进。

5、return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

函数定义的结构,如下图所示。

这里,def 关键字紧跟着的函数名称 max,就是函数的入口。return 语句,就相当于函数的出口,也就是结束函数时的操作。

我们来看一个自定义函数的例子。

我们通过自定义一个hello函数,封装了 print 打印过程,这样,我们就可以直接调用hello()函数,实现打印字符串的操作。

我们还可以给函数带上参数,也就是函数内部,需要处理的变量和数据。具体来看一个例子。

这里,我们定义了一个求最大值的函数max,传入了两个参数a和b。通过赋予a和b的值,调用max函数,就可以实现返回最大值的操作。

函数调用

定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。

来看一个函数调用的例子。

从上面的过程可以看到,函数可以多次进行调用。只要修改传入函数的参数值,函数就能对不同的参数,进行处理操作。

匿名函数

Python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

1、lambda 只是一个表达式,函数体比 def 简单很多。

2、lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。

3、lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

4、虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,内联函数的目的是调用小函数时不占用栈内存从而减少函数调用的开销,提高代码的执行速度。

匿名函数的语法

lambda 函数的语法只包含一个语句,如下所示:

lambda [arg1 [,arg2,.....argn]]:expression

我们来看一个匿名函数的例子。

可以看出,匿名函数的结构比较简单,只有一个表达式,也就是定义变量a,并且进行变量a加上10的操作。匿名函数调用,和普通函数一致,传入参数的过程,也一致。

再来看一个匿名函数设置两个参数的例子。

我们可以将匿名函数封装在一个函数内,这样可以使用同样的代码来创建多个匿名函数。

以下实例将匿名函数封装在 myfunc 函数中,通过传入不同的参数来创建不同的匿名函数:

return 语句

return [表达式] 语句用于退出函数,选择性地向调用方,返回一个表达式。不带参数值的 return 语句返回 None,相当于没有返回过程。函数体执行完成之后,自动结束函数。

之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:

以上就是函数部分的所有内容。

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

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

相关文章

Android Launcher3

一、定义与功能 Android Launcher是Android操作系统中的一个重要组件,它负责管理和呈现用户界面,包括桌面、应用程序抽屉和部件。Launcher不仅为用户提供了一个启动应用程序的入口,还允许用户自定义手机的主屏幕、图标、小部件布局以及一些基…

家里有宠物应该用哪款宠物空气净化器?希喂、美的真实测评

养了猫之后,从此我的生活开始有颜色,终于有声音了,每天下班回家终于不是直接就躺在沙发上然后洗洗就睡,现在有猫咪陪着我一起玩,甚至还会和它聊聊天,家里我走到哪它就跟到哪,身后多了一个小跟屁…

智能手机、汽车新应用,星纪魅族幸运星号”卫星即将发射

朋友们!你想象过我们的智能手机和汽车能与卫星直接通信吗? 这听起来像是科幻小说里的情节,但很快,这将成为现实!星纪魅族科技最近宣布了一个振奋人心的消息——他们将与时空道宇合作发射“星纪魅族幸运星号”卫星。这…

专业软件测试服务机构分享:小程序测试步骤和作用

在数字经济飞速发展的今天,小程序因其轻量、便捷的特点受到了广泛关注。作为技术服务的重要组成部分,软件测试成为确保小程序质量的关键环节。 一、小程序测试的定义   小程序测试是指对小程序进行系统性验证和验证的过程,旨在检查其功能、…

身份证实名认证-实名认证API接口文档

1、接口介绍及适用范围 身份证实名认证是指通过验证个人身份证信息的真实性,来确认用户身份的一种安全验证方式。这种认证方式广泛应用于各种需要身份验证的场合,如金融交易、社交媒体注册、网络游戏登录、电子商务平台购物等。 2、接口地址 输入姓名和…

ElasticSearch-集群读写

ES跨集群搜索(CCS)分片的设计和管理 算分不准 dfs_query_then_fetch如何设计分片数 ES底层读写工作原理 ES写入数据的过程ES读取数据的过程写数据底层原理 提升集群的读写性能 提升集群读取性能提升集群写入性能 ES跨集群搜索(CCS&#xff0…

git管理历险记

本篇文章主要是记录一下公司内git管理策略的变更,又如何因地制宜的磨合出适合团队的方法论,以便未来的职业生涯遇到类似的问题可以稍微触类旁通下。 传统git策略 dev -> test -> pre -> main 这也是比较经典的一个环境对应一个分支&#xff…

[pytorch] --- pytorch基础之模型验证套路

利用已经训练好的模型,拿出训练集中的部分数据进行测试 下面给出完整的示例代码: # -*- coding: utf-8 -*- # 作者:小土堆 # 公众号:土堆碎念 import torch import torchvision from PIL import Image from torch import nnimage…

游戏行业社招上岸指南

鉴于游戏行业的蓬勃发展,游戏领域的各大头部企业每年仍然有大量用人需求。即将到来的“金九银十”可谓是招聘者与应聘者的双向奔赴。 然而除了校招之外,社招同样是秋招中不可忽视的组成部分。因此,这份社招求职指南也终于千呼万唤始出来&…

FPGA第 9 篇,Verilog 中的关键字和基数

前言 在 Verilog 中,关键字(Keywords)和基数(Radix)是语言的重要组成部分,它们有助于描述和定义硬件设计。上期分享了 Verilog 的基本使用,以及数据类型、逻辑值和算数运算符的简单应用&#x…

服务器安装pytorch-阿里云-centos7

原文阅读:【巨人肩膀社区专栏分享】服务器安装pytorch-阿里云-centos7 1、创建一个虚拟环境 conda create -n pytorch python3.10 安装成功:   但是使用上面的命令会失败(疑问?&#xf…

Apache Guacamole 安装及配置VNC远程桌面控制

文章目录 官网简介支持多种协议无插件浏览器访问配置和管理应用场景 Podman 部署 Apache Guacamole拉取 docker 镜像docker-compose.yml部署 PostgreSQL生成 initdb.sql 脚本部署 guacamole Guacamole 基本用法配置 VNC 连接 Mac 电脑开启自带的 VNC 服务 官网 https://guacam…

编程式路由跳转

点击左侧的导航栏,会跳转到相应的页面。可以在导航栏上定义一个点击事件,在vue-router中解构useRouter,把useRouter赋给router,使用***router.push()***就可以实现编程式路由跳转。 路由跳转有:to,push,replace push模式在浏览器上有历史记录&#xff…

【华为】测试工程师面试题汇总,你可知道华为的高薪技术岗有多香~

华为一直是求职者重点投递的热门企业,面对丰厚的薪资福利,无数985、211的学子挤破脑袋都想占据一席之地。 华为2021年发放工资、薪金及其他福利方面的费用达1371亿元人民币,按华为19.5万员工计算,华为员工人均年薪为70.3万&#…

[每日一题]3174. 清除数字

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

Vue Router 入门指南:基础配置、路由守卫与动态路由

Vue Router 入门指南:基础配置、路由守卫与动态路由 简介: Vue Router 是 Vue.js 官方的路由管理工具,用于在 Vue 应用中实现页面导航。掌握 Vue Router 的基本配置、路由守卫以及动态路由和懒加载是构建复杂 Vue 应用的基础。本文将详细介绍…

web前端-HTML标签

一、HTML语法规范 1.基本语法概述 &#xff08;1&#xff09;HTML标签是由尖括号包围的关键词&#xff0c;例如<html> &#xff08;2&#xff09;HTML标签通常是成对出现的,例始<html>和</html>&#xff0c;我们称为双标签。标签对中的第一个标签是开始标…

STM32(一)简介

一、stm32简介 1.外设接口 通过程序配置外设来完成功能 2.系统结构 3.引脚定义 4.启动配置 5.最小系统电路

解决:axios 请求头url传参数组时发生400错误

一、前言 axios封装的网络请求&#xff0c;url传参时&#xff0c;数组作为参数传递&#xff0c;发生400错误请求时数组参数转url会保留 [] 二、原因 RFC3986&#xff1a;除了 数字 字母 -_.~ 不会被转义&#xff0c;其他字符都会被以百分号&#xff08;%&#xff09;后跟两位…

QT:动态库与静态库的生成和使用

目录 一.动态库和静态库 1.动态链接&#xff08;Dynamic Linking&#xff09; 2.静态链接&#xff08;Static Linking&#xff09; 3.选择依据 二.库的创建 1.新建文件和项目中&#xff0c;选择Library中C库 2.新建一个名为libtest库 3.打印一个qDebug&#xff0c;用于…