当前位置: 首页 > news >正文

Python学习超简单第二弹:函数

Python快乐学习、快乐成长

  • 函数
      • 1、函数的定义与调用
      • 2、形参和实参
        • 2.1 形参
        • 2.2 实参
      • 3、默认参数和关键字参数
        • 3.1 默认参数
        • 3.2 关键字参数
      • 4、不定长参数
      • 5、拆分参数列表
      • 6、返回值
      • 7、import模块
      • 8、全局变量__name__和系统模块
        • 8.1全局变量
        • 8.1系统模块
      • 9、 from...import
      • 10、包
      • 11、猴子补丁和第三方模块获取安装
        • 11.1猴子补丁(Monkey Patch)
        • 11.1第三方模块
      • 12、变量的作用域和局部变量
      • 13、全局变量和global关键字
      • 14、nonlocal关键字
      • 15、递归函数
      • 16、高阶函数和lambda函数
      • 17、闭包
      • 18、装饰器
  • 结尾

函数

1、函数的定义与调用

定义函数,即根据函数的输入、输出和数据处理完成函数代码的编写。定义函数只是规定了函数会执行什么操作,但并不会真正去执行。
调用函数,即真正去执行函数中的代码,是指根据传入的数据完成特定的运算,并将运算结果返回到函数调用位置的过程。

defCalcNum():#定义名字为calcNum的函数CalcNum()#调用函数CalcNum

2、形参和实参

2.1 形参

形参的全称是形式参数,即定义函数时函数名后面的一对小括号中给出的参数列表。

defCalcNum(i1,i2):#定义名字为calcNum的函数
2.2 实参

实参的全称是实际参数,即在调用函数时函数名后面的一对小括号中给出的参数列表。

CalcNum(i3,i4)#调用函数CalcNum

3、默认参数和关键字参数

3.1 默认参数

函数的默认参数就是缺省参数,即当调用函数时,如果没有为某些形参传递对应的实参,则这些形参会自动使用默认参数值。

defPersonInfo(name,country='中国'):#参数country的默认参数值为'中国’PersonInfo('ZHANG')#这里没有给country传实参值,但因为有默认参数所以不会出错PersonInfo('Zhang','美国')#给country传了实参,则不再使用默认参数
3.2 关键字参数

在调用函数时,除了前面那种通过位置来体现实参和形参的对应关系的方法(即位置参数),还有一种使用关键字参数的方法,其形式为“形参=实参”。

defPersonInfo(name,chineselevel='良好',country='中国')PersonInfo(country='美国',chineselevel='一般',name='John')#正确示例PersonInfo(name='David','良好','美国')#即第一个参数使用了关键字参数形式、后两个参数使用了位置参数形式,则系统会报错

4、不定长参数

不定长参数,即在调用函数时可以接收任意数量的实参,这些实参在传递给函数时会被封装成元组(位置参数)或字典(关键字参数)形式。

def 函数名([普通形参列表,] *不定长参数名 [,普通形参列表]):
函数体

def 函数名([普通形参列表,]**不定长参数名):
函数体

提示:“*不定长参数名” 表示这个不定长参数对应的是一组位置参数;而 “**不定长参数名” 表示这个不定长参数对应的是一组关键字参数。

defPersonInfo1(name,*args):#定义函数PersonInfo1defPersonInfo2(name,**args):#定义函数PersonInfo2#使用PersonInfo1('李晓明','良好','中国')PersonInfo2('李晓明',中文水平='良好',国家='中国')#打印姓名: 李晓明 ,其他:('良好','中国')姓名: 李晓明 ,其他:{'中文水平':'良好','国家':'中国'}

5、拆分参数列表

如果一个函数所需要的参数已经存储在了列表、元组或字典中,则可以直接从列表、元组或字典中拆分出来函数所需要的这些参数。

defPersonInfo(name,chineselevel,country):#定义函数PersonInfod={'country':'中国','chineselevel':'良好','name':'ZHANG'}PersonInfo(**d)

提示:**d的作用是把字典d中的所有元素拆分出来作为PersonInfo的实参,即等价于PersonInfo(country=‘中国’, chineselevel=‘良好’, name=‘ZHANG’)

6、返回值

return语句

defCalcNum(i1,i2):returni1*i2#通过return语句将计算i1和i2的乘积

7、import模块

当要使用一个模块中的某些功能时,我们可以通过import方式将该模块导入。

import module1
import module2

import moduleN

import module1,module2, …, moduleN

新建calc.py:

defCalcNum(i1,i2):returni1*i2

新建main.py导入模块

importcalc#导入calc模块calc.CalcNum(5,10)#调用calc模块中的CalcNum函数,计算乘积

8、全局变量__name__和系统模块

8.1全局变量

每个模块中都有的一个全部变量__name__。
name__的作用是获取当前模块的名称,如果当前模块是单独执行的,则其__name__的值就是__main;否则,如果是作为模块导入,则其__name__的值就是模块的名字。
calc.py文件:

print(__name__)#输出:__main__

main.py文件:

importcalcprint(__name__)#输出:calc

模块单独运行和作为模块导入时其__name__的值是不同的;

8.1系统模块

可以直接导入系统提供的模块,使用其中的功能。

importsys#导入系统提供的sys模块

9、 from…import

除了使用import将整个模块导入,也可以使用from import将模块中的标识符(变量名、函数名等)直接导入当前环境,这样我们在访问这些标识符时就不再需要指定模块名。
语法格式:

from 模块名 import 标识符1, 标识符2, …, 标识符N

fromcalimportCalNum#导入cal 模块中的CalNumfromcalimport*#导入cal 模块中所有标识符

10、包

如果要使用sound包的effects子包的echo模块,则可以通过下面方式导入:

importsound.effects.echo

也可以使用from import方式导入包中的模块,如:

fromsound.effectsimportecho

使用from import也可以直接导入模块中的标识符,如:

fromsound.effects.echoimportechofilter

11、猴子补丁和第三方模块获取安装

11.1猴子补丁(Monkey Patch)

猴子补丁是指在运行时动态替换已有的代码,而不需要修改原始代码。

例如,在使用第三方模块时,模块中的某些方法可能无法满足我们的开发需求。此时,我们可以在不修改这些方法代码的情况下,通过猴子补丁用一些自己编写的新方法进行替代,从而实现一些新的功能。

11.1第三方模块

第三方模块的获取与安装有多种方法,其中最推荐的一种方法是使用pip工具;
命令格式:

pip install 模块名称

为了加快安装包下载速度,可以指定从国内镜像完成安装包的下载和安装,如将前面安装numpy的pip命令改为:

pip install numpy -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com

12、变量的作用域和局部变量

按照作用域的不同,Python中的变量可分为局部变量和全局变量。
局部变量:在一个函数中定义的变量就是局部变量(包括形参),其作用域是从定义局部变量的位置至函数结束位置。

13、全局变量和global关键字

在所有函数外定义的变量就是全局变量,其在所有函数中都可以使用。
在一个函数中使用global关键字,可以声明在该函数中使用的是全局变量、而非局部变量。

14、nonlocal关键字

在Python中,函数的定义可以嵌套,即在一个函数的函数体中可以包含另一个函数的定义。通过nonlocal关键字,可以使内层的函数直接使用外层函数中定义的变量。

15、递归函数

递归函数是指在一个函数内部通过调用自己来完成一个问题的求解。

deffac(n):#定义函数facifn==1:#如果要计算1的阶乘,则直接返回1(结束递归调用的条件)return1returnn*fac(n-1)#将计算n!分解为n*(n-1)!print(fac(5))#调用fac函数计算5的阶乘并将结果输出到屏幕

16、高阶函数和lambda函数

高阶函数是指把函数作为参数的一种函数。

defFunAdd(f,x,y):#定义函数FunAddreturnf(x)+f(y)#用传给f的函数先对x和y分别处理后,再求和并返回

lambda函数也称为匿名函数,是一种不使用def定义函数的形式,其作用是能快速定义一个简短的函数。

lambda [参数1[, 参数2, …, 参数n]]: 表达式

defFunAdd(f,x,y):#定义函数FunAddreturnf(x)+f(y)#用传给f的函数先对x和y分别处理后,再求和并返回print(FunAdd(lambdax:x**2,3,-5))#调用函数FunAdd,计算3的2次方+(-5)的二次方

17、闭包

如果内层函数使用了外层函数中定义的局部变量,并且外层函数的返回值是内层函数的引用,就构成了闭包。

18、装饰器

利用装饰器,可以在不修改已有函数的情况下向已有函数中注入代码,使其具备新的功能。


结尾

记录自己的快乐学习日志,也祝贺观看到这的小伙伴早日学有所成,财富自由💰💰。
记得点赞👍、收藏👋呀!!!

http://www.jsqmd.com/news/654557/

相关文章:

  • PyTorch 2.6镜像效果展示:开箱即用的GPU加速环境实测
  • 揭秘2026年口碑好的浴室柜加盟品牌拓展,价格多少钱 - 工业品牌热点
  • 如何用SD-PPP插件实现Photoshop与AI绘图的无缝协作:3大核心功能详解
  • 国际电信联盟(International Telecommunication Union, ITU)是联合国下属历史最悠久的专门机构
  • 3分钟掌握图表数据提取:WebPlotDigitizer让科研分析效率翻倍
  • Wan2.2-I2V-A14B与Java集成实战:JDK1.8环境下构建企业级调用客户端
  • 论文通关不踩坑:Paperxie,查重降重双 buff 拉满的学术神器
  • 千问3.5-2B赋能前端设计:智能UI组件代码生成与样式建议
  • 掌握Python数据分析核心技巧实战
  • 12.主程序代码word版本少了功能,不全
  • JavaScript中原型链的查找机制与终点null的意义
  • 30+文档平台一键下载:告别繁琐操作,免费获取全网学习资料
  • 题解:Just Jump
  • ctfileGet:告别广告等待,5分钟掌握城通网盘直连解析技术
  • 大模型、RAG、Agent 一起落地后,为什么AI系统测试比传统测试难这么多?
  • Steam成就管理器终极指南:5分钟学会如何轻松解锁和管理游戏成就
  • Ostrakon-VL-8B在网络安全中的应用:识别与分析截图中的敏感信息与钓鱼界面
  • MySQL 事务日志写入机制
  • 图表数据提取神器:WebPlotDigitizer让科研效率提升10倍
  • org.openpnp.vision.pipeline.stages.MaskRectangle
  • GD32F450以太网(2-2):LAN8720A寄存器配置与实战调试指南
  • 辨析拓展训练器械工厂,性价比高的怎么选择 - 工业推荐榜
  • 终极城通网盘直连解析指南:5个专业技巧告别30秒广告等待
  • 如何彻底清理显卡驱动残留:Display Driver Uninstaller专业使用指南
  • 重磅更新!统信桌面操作系统V25专业版安装使用教程
  • 郭老师-爱你的人,还是你爱的人?
  • 解锁音乐自由:ncmdumpGUI——Windows平台NCM加密文件一键转换利器
  • 毕业季实测:Paperxie 双端深度测评,从查重到降 AIGC 的全流程实操指南
  • 告别卡顿!VMware 15 Pro给Win7虚拟机分配内存和CPU的黄金法则(附性能实测对比)
  • 可靠的非标机器人地轨定制服务商家分析,哪家比较靠谱 - 工业品牌热点