函数的创建和调用

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

提到函数,大家会想到数学函数吧,函数是数学最重要的一个模块,贯穿整个数学学习过程。在Python中,函数的应用非常广泛。在前面我们已经多次接触过函数。例如,用于输出的print()函数、用于输入的input()函数及用于生成一系列整数的range()函数,这些都是Python内置的标准函数,可以直接使用。除了可以直接使用的标准函数外,Python还支持自定义函数。即通过将一段有规律的、重复的代码定义为函数,来达到一次编写、多次调用的目的。使用函数可以提高代码的重复利用率。

1  创建一个函数

创建函数也称为定义函数,可以理解为创建一个具有某种用途的工具。使用def关键字实现,具体的语法格式如下:

def functionname([parameterlist]):

    ['''comments''']

    [functionbody]

参数说明:

l  functionname:函数名称,在调用函数时使用。

l  parameterlist:可选参数,用于指定向函数中传递的参数。如果有多个参数,各参数间使用逗号“,”分隔。如果不指定,则表示该函数没有参数,在调用时也不指定参数。

注意:即使函数没有参数,也必须保留一对空的“()”,否则将显示如图1所示的错误提示对话框。

图1  语法错误对话框

l  '''comments''':可选参数,表示为函数指定注释,注释的内容通常是说明该函数的功能、要传递的参数的作用等,可以为用户提供友好提示和帮助的内容。

说明:在定义函数时,如果指定了'''comments'''参数,那么在调用函数时,输入函数名称及左侧的小括号时,就会显示该函数的帮助信息,如图2所示。这些帮助信息就是通过定义的注释提供的。

图2  调用函数时显示友好提示

注意:如果在输入函数名和左侧括号后,没有显示友好提示,那么就检查函数本身是否有误,检查方法可以是在未调用该方法时,先按下快捷键<F5>执行一遍代码。

l  functionbody:可选参数,用于指定函数体,即该函数被调用后,要执行的功能代码。如果函数有返回值,可以使用return语句返回。

注意:函数体“functionbody”和注释“'''comments'''”相对于def关键字必须保持一定的缩进。

说明:如果想定义一个什么也不做的空函数,可以使用pass语句作为占位符。

例如,定义一个过滤危险字符的函数filterchar(),代码如下:

def filterchar(string):

    '''功能:过滤危险字符(如黑客),并将过滤后的结果输出

       about:要过滤的字符串

       没有返回值

       '''

    import re                                       # 导入Python的re模块

    pattern = r'(黑客)|(抓包)|(监听)|(Trojan)'      # 模式字符串

    sub = re.sub(pattern, '@_@', string)           # 进行模式替换

    print(sub)

运行上面的代码,将不显示任何内容,也不会抛出异常,因为filterchar()函数还没有被调用。

2  调用函数

调用函数也就是执行函数。如果把创建的函数理解为创建一个具有某种用途的工具,那么调用函数就相当于使用该工具。调用函数的基本语法格式如下:

functionname([parametersvalue])

参数说明:

l  functionname:函数名称,要调用的函数名称必须是已经创建好的。

l  parametersvalue:可选参数,用于指定各个参数的值。如果需要传递多个参数值,则各参数值间使用逗号“,”分隔。如果该函数没有参数,则直接写一对小括号即可。

例如,调用在6.1.1小节创建的filterchar()函数,可以使用下面的代码:

about = '我是一名程序员,喜欢看黑客方面的图书,想研究一下Trojan。'

filterchar(about)

调用filterchar()函数后,将显示如图3所示的结果。

图3  调用filterchar()函数的结果

场景模拟:第4章的实例01实现了每日一帖功能,但是这段代码只能执行一次,如果想要再次输出,还需要再重新写一遍。如果把这段代码定义为一个函数,那么就可以多次显示每日一帖了。

图标 (35)

  实例01  输出每日一帖(共享版)

在IDLE中创建一个名称为function_tips.py的文件,然后在该文件中创建一个名称为function_tips的函数,在该函数中,从励志文字列表中获取一条励志文字并输出,最后再调用函数function_tips(),代码如下:

def function_tips():

    '''功能:每天输出一条励志文字

    '''

    import datetime                                     # 导入日期时间类

    # 定义一个列表

    mot = ["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择",

           "今天星期二:\n含泪播种的人一定能笑着收获",

           "今天星期三:\n做对的事情比把事情做对重要",

           "今天星期四:\n命运给予我们的不是失望之酒,而是机会之杯",

           "今天星期五:\n不要等到明天,明天太遥远,今天就行动",

           "今天星期六:\n求知若饥,虚心若愚",

           "今天星期日:\n成功将属于那些从不说“不可能”的人"]

    day = datetime.datetime.now().weekday()           # 获取当前星期

    print(mot[day])                                    # 输出每日一帖

# *****************************调用函数***********************************#

function_tips()                                       # 调用函数

运行结果如图4所示。

图4  调用函数输出每日一帖

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

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

相关文章

深入解析 YOLOv8 中的 `conv.py`(代码图文全解析-下)

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《yolov8》系列专栏&…

【linux软件基础知识】与调度相关的进程描述符

进程描述符 每个进程描述符都包括几个与调度相关的字段,如下代码所示: //include/asm-arm/thread_info.h /** low level task data that entry.S needs immediate access to.* __switch_to() assumes cpu_context follows immediately after cpu_domain.*/ struct thread_in…

6.1Java方法

1、方法定义&#xff1a; 方法是一种语法结构&#xff0c;它可以把一段代码封装成一个功能&#xff0c;以便重复调用 方法的完整格式&#xff1a; 修饰符 返回类型 方法名(形参列表){ 方法体代码(需要执行的功能代码) return 返回值; } package com.define;public class …

面向对象编程 (OOP):深入理解继承、多态和抽象

1. 简介 面向对象编程 (OOP) 是一种强大的编程范式&#xff0c;它通过将程序组织成对象的集合来简化软件设计和开发。与传统的程序设计方法相比&#xff0c;OOP 提供了一种更自然、更易于理解和维护的方式来构建复杂的软件系统。OOP 的核心概念包括&#xff1a;对象、类、继承、…

Java进阶学习笔记31——日期时间

Date&#xff1a; 代表的是日期和时间。 分配Date对象并初始化它以表示自标准基准时间&#xff08;称为纪元&#xff09;以来的指定毫秒数&#xff0c;即1970年1月1日00:00:00。 有参构造器。 package cn.ensource.d3_time;import java.util.Date;public class Test1Date {pu…

Java—异常处理

异常的结构图 异常知识点 异常分类&#xff1a; 按照在程序编译阶段是否被检查&#xff0c;异常分为编译时异常&#xff08;Checked Exception&#xff09;和运行时异常&#xff08;Unchecked Exception&#xff09;。编译时异常是指必须进行显式处理的异常&#xff0c;例如IOE…

【Linux】写一个日志类

文章目录 1. 源代码2. 函数功能概览3. 代码详细解释3.1 头文件和宏定义3.2 Log类定义3.3 打印日志的方法3.4 操作符重载和析构函数3.5 可变参数函数的原理 4. 测试用例 1. 源代码 下面代码定义了一个 Log 类&#xff0c;用于记录日志信息。这个类支持将日志信息输出到屏幕、单…

Java扩展机制:SPI与Spring.factories详解

一、SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不…

戴尔科技:一盆冷水浇醒了AIPC

这年头&#xff0c;只要沾上英伟达的公司&#xff0c;不论美股还是大A,都跟着鸡犬升天几轮过&#xff0c;但昨晚英伟达蒸发1064亿美元&#xff0c; 跟着遭罪的也不少&#xff0c;有没有一夜惊魂梦醒的感觉&#xff1f; 今天我们来说说——戴尔科技。 昨晚戴尔科技大跌5.18%&a…

5G无线标准演进综述及新技术引入

摘 要 随着经济和社会的发展&#xff0c;5G业务越来越丰富多彩&#xff0c;1080P高清视频、裸眼3D、网联汽车、云手机等新业务、新终端对网络的要求也越来越高&#xff1b;另一方面&#xff0c;5G标准持续演进&#xff0c;在MIMO、载波聚合、移动性管理、uRLLC、切片、定位等方…

模仿库实现priority_queue

1 priority_queue 1.1 概念 优先级队列&#xff0c;一种大/小堆(默认为大堆) 1.2 大堆和小堆 一种完全二叉树&#xff0c;大堆根节点一定比子字节大 小堆根节点一定比子字节小 向下调整 从根节点开始比较与子节点的大小不断向下 向上调整 找到最后一个非叶子节点&#xf…

mac多媒体影音库:Emby for Mac 中文版

Emby软件是一款功能强大的媒体服务器软件&#xff0c;旨在为用户提供丰富的多媒体体验。以下是关于Emby软件的详细介绍&#xff1a; 下载地址&#xff1a;https://www.macz.com/mac/7964.html?idOTI2NjQ5Jl8mMjcuMTg2LjE1LjE4Mg%3D%3D 主要功能 媒体管理&#xff1a;Emby允许用…

代码随想录-Day25

216.组合总和III 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输…

Python OCR 图片转文字进阶:读光OCR之行检测模型+行识别模型

Python OCR 图片转文字进阶&#xff1a;读光OCR之行检测模型行识别模型 介绍阿里云文字识别OCR&#xff08;读光OCR&#xff09;前置条件模型1&#xff1a;行检测模型模型1&#xff1a;行识别模型 代码&#xff1a;main.py 介绍 什么是OCR&#xff1f; OCR是“Optical Charac…

德人合科技——@天锐绿盾 | -文档透明加密系统

天锐绿盾文档透明加密系统是一种先进的数据安全解决方案&#xff0c;旨在保护企业和组织的敏感信息&#xff0c;防止未经授权的访问和泄漏。 PC地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是该系统的一些关键特点和功…

[C++11/14新特性] tuple元组介绍

C11 标准新引入了一种类模板&#xff0c;命名为 tuple&#xff08;中文可直译为元组&#xff09;。tuple 最大的特点是&#xff1a;实例化的对象可以存储任意数量、任意类型的数据。tuple 的应用场景很广泛&#xff0c;例如当需要存储多个不同类型的元素时&#xff0c;可以使用…

3D目标检测入门:探索OpenPCDet框架

前言 在自动驾驶和机器人视觉这两个飞速发展的领域中&#xff0c;3D目标检测技术扮演着核心角色。随着深度学习技术的突破性进展&#xff0c;3D目标检测算法的研究和应用正日益深入。OpenPCDet&#xff0c;这个由香港中文大学OpenMMLab实验室精心打造的开源工具箱&#xff0c;…

【用Python画画】六一儿童节画爱心

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、代码示例三、知识点梳理四、总结 一、前言 本文介绍如何使用Python的海龟画图工具turtle&#xf…

堆排序的实现

在上一篇博客中&#xff0c;介绍了堆的实现&#xff0c;现在来介绍一下堆排序。 一.打印有序&#xff1a; 现在先给一个无序的数组&#xff0c;现在我们利用我们实现的堆的功能先完成一下打印排序&#xff1a; 在for循环里是一个建堆的过程&#xff0c;每来一个数据就放入堆中…

linux进程的加载和启动过程分析

我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,那么当我们在终端敲下指令$ ./a.out argv1 argv2 后,操作系统是怎么将我们的可执行文件加载并运行的呢? 首先知道,计算机的操作系统的启动程序是写死在硬件上的,每次计算机上电时,都将自动加载启动程序,之后…