Python函数编程知识

  • 关于Python函数
  • 函数的定义
  • 函数的输入参数
    • 关键字参数
    • 可变参数
  • 函数的返回
  • 编写函数文档
  • 匿名函数
  • 函数装饰器

关于Python函数

函数(function) 是一种具有特定功能的代码块,如果有大量需要重复使用的功能,可以通过定义函数来快速实现,能够精简代码,提高效率。
函数体的形式在定义 类Class 时是相同的,只是类中的函数被称为“方法”。

函数的定义

函数结构形式如下:

def func(arg):'''函数注释文档'''# 函数体结构代码return xxx

def 是函数的标识,func是自定义的函数名称,arg是函数的输入形参(可以没有),return 表示函数返回值,即函数体执行完后得到的值,也可以没有返回值。
其中函数名后面的()和 冒号是必须要有的。

函数的输入参数

在定义函数时,函数名后的()中可按照需要,写入参数或参数列表作为函数的形参,参与到函数体代码的计算中,而在调用该函数时,讲实际需要计算的实参填入括号中即可调用函数了。

# ex.1
def sum(a=0, b):'''a, b为形参,a设定默认参数为0'''res = a + breturn res# 调用sum函数
# 数字1,2 为实参,代替a,b参与到实际函数计算中
sumdata = sum(1, 2)   #
print(sumdata)  # 结果为 3

如果函数执行的时候不需要参数,那么在定义和调用中都不需要填写参数。
而且参数可以是多种形式,例如字符串、数字、列表、对象等,只需要保证输入的实参和形参类型对应即可。

关键字参数

在上面的ex.1中调用函数的时候,两个实参位置顺序是确定的,即1代替形参a, 2代替形参b。如果不想对顺序有太多要求的,可以使用关键字参数,即在调用的时候直接指明了实参要指代哪一个形参,如ex.2.

#ex.2
def salay(name, money):'''name, money为形参'''print(name)print(money)# 直接调用salay函数,并通过形参的关键字赋值
salay(money=3000, name="Tom")# 输出
Tom
3000

可变参数

在定义函数的时候,如果不确定参数有多少个,可以在前面加个* 号,用来存放所有未命名的参数,如果没有参数,则建立一个空元组。

也可用两个星号** 来标定可变参数,表明可变参数是字典元素,这时调用函数则需要采用如“arg1=value1,arg2=value2”这样的形式(kwargs是key value arguments的简写)。在调用时,参数必须成对出现,并用等号区分键和值,而不能用传统的参数赋值方式,如func(1,3)。

# ex.3
def func(*arg):for x in arg:print(x)
func("sunck", "good", "doing", "nice")  #依次输出def mySum( *c ):sum = 0for i in c:sum += ireturn sum    #函数返回sum的值,跳过后面语句
print(mySum(1,2,3,4))   #求和,输出10# 可变字典参数
def func2(**kwargs):print(kwargs)func2(x=1, y=2, z=3)
#输出
{'x': 1, 'y': 2, 'z': 3}

由此,如果定义的函数是:

def func3(*arg, **kwargs):pass

就可以接收任意的参数进来了,可以直接把列表或字典作为参数传递其中。

函数的返回

经过函数计算后,将结果返回使用return即可,这里返回的类型也包含列表、对象等多种形式,可以在调用或递归的时候反复传值使用。
另外,函数可以返回多个值,例如:

# ex.4
def multire():a = 3b = "第2个返回值"return a, bc, d = multire() #分别接收两个返回的值print(c)  # 3
print(d)  # 2个返回值

可以看到,利用return返回了多个结果,但是需要注意的是,实际上返回的时候其实还是一个结果(元组),只是在调用时,python自动解包出来其中的元素,所以像是返回了多个值。

编写函数文档

定义函数之后,最好加上注释,这样当项目复杂的时候便于查看,增加函数注释的方式是在def行之后 用 块注释的方法注明,然后就能通过**help(函数名)**的方式快速查看了,如下:

# ex.5
def multi(a,b):'''参数:a,b 数值a: 第一个b: 第二个返回: n :乘积'''return a * bhelp(multi)  # 注意函数名后面不带括号# ===输出===
Help on function multi in module __main__:multi(a, b)参数:a,b 数值a: 第一个b: 第二个返回: n :乘积

匿名函数

这是类特殊的函数,即lambda函数,之所以叫匿名函数,就是没有名字,可以理解为用后即焚,用法如下:

sum = lambda num1, num2: num1 + num2
print(sum(1,2))

其中,num1,num2为形参,冒号后面就是函数体,使用方法和函数类似。

函数装饰器

装饰器其实是一个闭包,本质上是一个返回函数的函数,用来对一个函数进行修饰或增加功能而避免对原函数的破坏具体见下。

装饰器格式
被装饰的原函数
def funczero(%x):语句1装饰器
def outer(func):    #表示对原函数引用def inner(*args, **kwargs):    #inner中对*args, **kwargs(原函数形参)进行操作#*args, **kwargs表示可以修改任何参数添加修改的功能的代码块func(*args, **kwargs)       #再执行func()return inner
使用
funczero = outer(funczero)  #或者在原函数前加一句 @outer
funczero(%x)
# ex.6
def func1(age):print("Tom is %d years old" % (age))
def outer(func):def inner(age):#定义一个inner函数,age小于0时,变成0if age < 0:age = 0func(age)              return inner#使用方法一,直接在原函数外面加装饰器
func1 = outer(func1)
func1(-4)   #是一个函数
#==输出==
sunck is 0 years old#使用方法二,定义函数式在前面加上 @装饰器名
@outer
def func1(age):print("sunck is %d years old" % (age))func1(-5)
#==输出==
sunck is 0 years old

以上是关于Python函数的一些介绍和自己在使用中的一些心得记录,如有问题多多指正,希望能有所帮助~也欢迎点赞关注,谢谢!

Python笔记 No.1 - Python函数及装饰器相关推荐

  1. python函数式编程:匿名函数,装饰器,偏函数

    一 匿名函数: 尽管python的语法已经很简洁,但是定义函数的过程还是相对繁琐,当我们在调用函数的过程中,python为我们提供了可以节省定义函数时间的方法,让我们可以不用显示的调用函数,那就是匿名 ...

  2. python 三个内置装饰器,python中自带的三个装饰器

    说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @propert ...

  3. python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案

    本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之 ...

  4. python高阶函数闭包装饰器_Python_基础_(装饰器,*args,**kwargs,高阶函数,函数闭包,函数嵌套)...

    一,装饰器 装饰器:本质就是函数,功能是为其它的函数动态添加附加的功能 原则:对修改关闭对扩展开放 1.不修改被修饰函数的源代码 2.不修改被修改函数的调用方式 装饰器实现的知识储备:高阶函数,函数嵌 ...

  5. python中高阶函数和装饰器_三.Python高阶函数和装饰器

    1高阶函数 1.1 数学概念回顾下数学知识: y=f(x) 这是最开始接触的普通函数 y=g(f(x)) 这个就是我们接触到的高阶函数 在数学和计算机科学中,高阶函数至少应当是满足下面一个条件的函数: ...

  6. 初学者python笔记(内置函数_2)

    这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的.同样都是介绍Python中那些常用内置函数的. max()和min()的高级用法 我们都知道,max():取最大值,min():取最 ...

  7. python中高阶函数和装饰器_Python高阶函数与装饰器函数的深入讲解

    本文主要介绍的是Python高阶函数与装饰器函数的相关内容,分享给大家,下面话不多说了,来一起看看详细的介绍吧 高阶函数 1.可以使用函数对象作为参数的函数 2.或可以将函数作为返回值的函数 3.函数 ...

  8. 五、python函数、装饰器、内置函数、json及模块

    一.递归调用 1.一个函数自己调用自己就是递归调用,最多一个函数递归调用自己999次,超过就会出错 2.递归必须有一个明确的结束条件 3.每次进入更深一层递归时,问题规模相比上次递归都应有所减少 4. ...

  9. Python函数和装饰器

    Python函数和装饰器 1. 函数 1.1 函数的介绍 定义:能够实现具体的某个功能""" 定义:能够实现指定功能的代码块例如:print('天王盖地虎')print( ...

  10. Python练习之函数,装饰器,面向对象

    Python练习之函数,装饰器,面向对象 1.函数 2 装饰器 3.面向对象 1.函数 编写函数,实现接受一个字符串,分别统计大小写字母,数字,其他字符的个数,并返回结果 #方法一 str=input ...

最新文章

  1. 怎样通过css控制table的部分td
  2. VS2008下最新X264(svn 2009.9)编译不过的解决办法
  3. 解决 Python2 和 Python3 的共存问题
  4. python教学视频q_#python如何用pyqt5打开视频(还有PPT)并输出到QLabel上?#python怎么运行视屏教程...
  5. springside4例子
  6. 【证明】—— 矩阵秩的相关证明
  7. 超声波传感器测距实验430
  8. win10 WLAN共享给以太网口
  9. 王慧文清华产品课(四)
  10. 【小白福利—初级DBA入门必看】MySQL常用工具介绍(八)——客户端工具MySQL_import
  11. DeFi守护神是谁?
  12. 解决 ‘@‘ that cannot start any token. (Do not use @ for indentation)
  13. 真的不明白,怎么会这样!
  14. linux实训分析与体会,linux实训总结与体会
  15. Excel制作资产负债表
  16. /*深度优先建立深林,孩子兄弟法*/
  17. 卧龙图甄选 | 惊蛰来到,万物复苏,春天的气息扑面而来
  18. 安全的远程访问是保护知识产权的关键
  19. 十张图深度剖析供应链金融业务模式
  20. 某产业园智慧园区管理系统项目质量管理案例【灵犀】

热门文章

  1. Bugku:杂项 啊哒
  2. java中 字符串的补位
  3. 解决AndroidStudio中使用.9图片不生效的问题
  4. 底层码农的Stanford梦 --- 从SCPD开始 [转]
  5. git 将本地master分支代码提到远程develop分支
  6. python绘制线段_使用matplotlib绘制线段线
  7. InnoDB中的页合并与分裂
  8. wps教鞭功能_三个PPT2010新增实用功能
  9. vue v-modle实现组件之间的动态传值
  10. el-table 去掉四周border