简单Python:什么是函数(python函数有什么作用)
off999 2024-10-18 07:59 57 浏览 0 评论
关注精彩内容,要先点击这里哦~
温馨提示:本文全长2212字,大约需要五分钟
No.1
什么是函数
在我们之前的文章中曾经多次提过函数这个概念,也多次在程序中用过函数,比如print(),input()等,这些可以在Python中拿来直接用的函数成为内建函数,也就是不需要额外定义,Python已经封装好了我们可以直接拿来用的函数。
那么问题来了:如果我们想自己创建一个函数,实现其他功能呢?
No.2
函数的定义与调用
在Python中,函数是这样定义的:
def?helloPrint(name):
print(‘hello’+name)通过def关键字可以让解释器知道我们现在是在定义一个函数,函数名称是helloPrint,也是建议驼峰式。
函数名后括号中的内容称为参数,用于接收用户自定义的值,括号中的后面的冒号和缩进我们之前也讲过,代表函数的代码块区域。
另外关于缩进,单独敲四个空格或者直接按一下tab键是一样的(大部分情况下编辑器会帮助你回车直接缩进到正确位置)现在我们定义好了一个helloPrint()函数,要怎么使用它呢?
在Python中,可以直接使用helloPrint(‘zhishi’)这种形式调用函数,如果自定义的函数不需要参数或者有默认参数也可以不填括号中的内容。
这个时候有一个问题,当下面这个程序执行的时候,会先输出那一句?
有的同学可能还记得我之前说过,Python解释器是按照从上到下的顺序解析代码的,所以是不是应该先输出helloName的内容?
很遗憾并不是,程序先输出了helloZhishi的结果,为什么会这样?
程序当然还是按照顺序执行的,但是这个顺序并不是我们看到的函数定义的顺序,而是下面的函数调用顺序。
换句话说,就像鲜花店先后包好了两束不同的鲜花,但是却不一定先配送第一个包好的这束,而肯定是先配送要的最急的客户。
No.3
返回值
上面的例子中,我们定义了简单的函数执行一些输出操作,但是更多的情况是我们需要把函数中的参数进行一系列运算后得出一个值,或者是进行一些判断,最终要得到一个结果,这个结果还可能用于其他地方的运算或者判断。这么说好像有点绕,我们先来看一个简单的例子
这次定义的autoPlus函数直接执行不会输出任何内容,因为我们并没有给它写print语句,但是它需要一个数值参数,而且这个函数的作用就是把这个传进去的数值加个1,然后再把最后得出的结果给丢给需要用到这个最终值的函数中去。
这个过程就是返回,而这个值就是返回值,其关键字为return
return可以接受一个值,也可以接收一个表达式
比如这样结果和之前是一样的。
No.4
局部变量和全局变量
变量我们之前就讲过,就是可能发生改变的量。在函数定义中也是一样的作用,但是有一点不同,即函数中的变量有一定的适用范围。
以这段程序为例
提问:这段代码中number作为变量出现了几次?
答案是13次!
但是为什么输出的结果却不一样?是程序出错误了吗?但是输出结果却是对的?
程序没出错,它清醒的很。
我们来一点点分析每一个number代表的不同含义。
两个函数结构差别很小,这里就以autoPlus这个函数解释一下函数中的这些变量执行了那些操作。
首先autoPlus函数需要一个number参数,这样才可以作为运算主体参与+1运算。然后在函数中我们定义了一个number变量并且给它赋值为用户传进来的number参数+1后的结果,然后使用return关键字将这个结果返回给函数调用方。
有点迷?
我们从调用那里开始看,也就是22行中的autoPlus(5),可以看到我们给他传了一个5作为number参数,此时autoPlus接收到的信息是这样的:number = 5 ,接着它开始执行自己的语句,也就是number = number + 1,把5换进去就是number = 5 + 1,所以最终这个函数会返回一个6。
可能有的同学还是会有点迷惑,为什么把5换进去的时候不是5 = 5 + 1,因为这样不合逻辑,很明显5 != 6。
这也引出了另一个知识点,就是同名变量多次赋值,Python允许变量接受多次赋值,同时还可以把同名变量赋值给自己。
但是这个变量的最终值,是从上到下的最后一次操作的结果,如果你还是不明白,可以看24和25行,两个number分别被赋值为122和111,但是程序最终输出的确是111.
如果这样演示还是不明白,那你可以把它认定为两个变量,第一个number确实等于122,但是当它第二次被赋值的时候而且第一次赋值没有使用的时候,它的122这个值就会被销毁。
还有一个问题,就是函数中定义的变量有其使用范围,一旦在该函数定义代码块之外调用其中变量,会产生错误,这种变量成为局部变量。
如果需要在函数中定义一个在外面也能用的变量怎么办?
No.5
global关键字
有 4 条法则,来区分一个变量是处于局部作用域还是全局作用域:
1.如果变量在全局作用域中使用(即在所有函数之外),它就总是全局变量。
2.如果在一个函数中,有针对该变量的 global 语句,它就是全局变量。
3.否则,如果该变量用于函数中的赋值语句,它就是局部变量。
4.但是,如果该变量没有用在赋值语句中,它就是全局变量。
No.6
总结
每一个编程语言中肯定都会有自己的函数定义及调用方式,局部和全局变量的适用范围可能也会有一些差异,在实际写代码时会大量用到,大家可以多多补充相关的知识。
今天的内容就是这样
如果你有好的意见或建议以及不懂的地方,欢迎后台留言。
芝士永不眠,我们下期见。
相关推荐
- usb安装系统步骤(USB安装系统步骤)
-
1.准备一张U盘,将联想官网下载的系统镜像文件复制到U盘中;2.将U盘插入联想S41U电脑,重启电脑,按F12进入BIOS设置,将U盘设置为启动项;3.重启电脑,进入U盘安装界面,按提示操作,完成系统...
- win98安装教程(win98iso怎么安装)
-
如何安装windows98 一、具体安装步骤 备份好重要文件之后,就可以安装windows98了。 第一步:启动安装程序。 用户如果原来已安装了windows95/97/98,现在拟对其进行升...
- 雨林木风win7安装(雨林木风win732位安装教程)
-
安装步骤如下: 1、光盘放入光驱,复制光盘上的win7.gho和安装系统.exe到硬盘非C盘的文件夹;(gho文件名可以是其他名字,后缀为gho,体积最大的就是。) 2、双击安装系统.exe;...
- win10解绑管理员账户(win10管理员账户怎么取消开机密码)
-
要解除Windows10电脑上的管理员权限,您需要进行以下操作:1.打开“控制面板”:右键单击“开始”按钮,然后选择“控制面板”。2.进入“用户账户”:在控制面板中,选择“用户账户”。3.点击...
- win10家庭版没有组策略编辑器
-
Win10组策略编辑器找不到怎么办 解决方法 一、win10系统版本本身不提供组策略的功能。 1、运行gpedit.msc直接提示找到gpedit.msc(组策略)。 2、运行MMC,在“添加...
- tplogin管理员登录入口(tplogin重新设置密码)
-
tplogin.cn是新版tplink路由器的登录地址(管理页面地址),在浏览器中输入tplogin.cn,就可以打开tplink路由器的管理页面(登录页面)。具体的登录方法如下:1、打开电脑上的浏...
- psp模拟器怎么导入游戏(psp模拟器怎么导入游戏 Vivo手机)
-
方法如下:1、打开能操作文件的助手软件,用pp链接后点击左下文件,然后点常用目录下的程序用户,会出现ppsspp的文件夹。2、打开ppsspp文件夹,会出来四个选项文件夹,第一个进去后是psp文件夹,...
- 电脑系统怎样升级(电脑系统怎么升级)
-
电脑系统升级方法步骤,1、打开电脑,点击电脑左下角的开始菜单,在弹出的菜单选项中选择“控制面板”。2、点击“开始”,点击“控制面板”3、在控制面板中,点击“系统和安全”。4、点击启用或禁用自动更新。5...
- windows无法激活(windows无法激活有什么影响)
-
1.如果修复或重新组装了电脑,则可能是安装了不同版本的Windows。或者,如果在修复过程中为电脑使用了其他产品密钥,当使用该密钥的电脑数大于Microsoft软件许可条款允许的电脑数时,该密钥...
-
- u盘文件恢复软件免费(恢复u盘数据免费的软件)
-
u盘损坏文件恢复方法:1、打开电脑桌面的“计算机”或“我的电脑”。2、然后再找到需要修复的u盘。3、打开“运行”窗口(可以直接按“Windows+R”快捷打开),输入“CMD”并点击“确定”按钮以进入命令提符界面。4、从打开的“命令提示符”...
-
2025-12-28 22:03 off999
- 电脑uac是什么意思
-
UAC就是用户帐户控制,在对计算机进行更改之前,用户帐户控制(UAC)会通知您。比如安装软件驱动什么的,默认UAC设置会在程序尝试对计算机进行更改时通知您,但您可以通过调整设置来控制UAC...
- 笔记本找不到自己家的wifi怎么办
-
1.笔记本电脑缺少无线网卡驱动,需要下载驱动如果笔记本电脑开机之后,无法显示WiFi网络的图标,这个时候多半是因为电脑缺少无线网卡驱动造成的,有时候自己在清理电脑的时候,不小心清理了驱动程序,便会...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
