函数的创建和调用

server/2024/10/11 13:25:47/

自学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.ppmy.cn/server/46548.html

相关文章

电机控制系列模块解析(23)—— 同步机初始位置辨识

一、两个常见问题 为什么感应电机&#xff08;异步机&#xff09;不需要初始位置辨识&#xff1f;&#xff08;因此感应电机转子磁场在定子侧进行励磁&#xff0c;其初始位置可以始终人为定义为0&#xff09; 为什么同步磁阻电机需要初始位置辨识&#xff1f;&#xff08;因为…

kali中切换python版本

kali中切换python版本 在日常使用的过程中&#xff0c;可以通过一些工具来做打靶环境&#xff0c;或者工具的启动&#xff0c;都和python关联&#xff0c;而有时存在工具安装&#xff0c;或者运行的时候出现报错&#xff0c;这时候极大可能是因为我们本地的kali中python的版本不…

WPF Binding对象、数据校验、数据转换

在WinForm中&#xff0c;我们要想对控件赋值&#xff0c;需要在后台代码中拿到控件对象进行操作&#xff0c;这种赋值形式&#xff0c;从根本上是无法实现界面与逻辑分离的。 在WPF中&#xff0c;微软引入了Binding对象&#xff0c;通过Binding&#xff0c;我们可以直接将控件与…

HTML大雪纷飞

目录 写在前面 HTML简介 完整代码 代码分析 运行结果 系列文章 写在后面 写在前面 小编又又又出现啦&#xff01;这次小编给大家带来大雪纷飞HTML版&#xff0c;不需要任何的环境&#xff0c;只要有一个浏览器&#xff0c;就可以随时随地下一场大雪哦&#xff01; HTM…

Pycharm编辑器下自定义模块导入报错:no module named问题

相信很多使用pycharm 社区版编写python 程序的初学者都会遇到这样一个看似简单但是一时半刻找不到解决头绪的问题&#xff1a; 在同个目录下导入自己编写的模块到主程序的过程中&#xff0c;直接import的时候会报错&#xff1a;ModuleNotFoundError。 通过各种方法尝试以后还是…

把Python写的程序打包成exe应用文件

1.python开发程序&#xff0c;是直接运行的&#xff0c;没有生成运行包的过程&#xff0c;如果需要生成运行包&#xff0c;要做额外操作。 2.用pyinstaller这个库生成python写的软件应用程序。 3.打开控制台程序&#xff0c;使用pip指令安装 pip install pyinstaller&#xff0…

计算机毕业设计hadoop++hive微博舆情预测 微博舆情分析 微博推荐系统 微博预警系统 微博数据分析可视化大屏 微博情感分析 微博爬虫 知识图谱

摘 要 随着社交媒体的普及和互联网技术的快速发展&#xff0c;热点舆情事件频发&#xff0c;对于政府、企业和公众来说&#xff0c;及时了解和分析热点舆情&#xff0c;把握舆论走向&#xff0c;已经成为一项重要的任务。然而&#xff0c;传统的数据处理和分析方法在面对海量…

flinksql 回撤流中主键发生变更的影响(group by中的值发生改变)

flinksql 回撤流中,主键发生变更的影响 1 什么是回撤流2 主键变更场景3 实践中发现的比较好的的实时数仓架构1 什么是回撤流 这篇文章主要谈论一个场景,简单来说: 首先我们来简单的说一下什么是回撤流,以及回撤流的底层原理,举个例子: 这个说的不是很清晰 ,其实倒数第…