1 空函数

如果想定义一个啥都不做的空函数,可以用pass语句

因为python没有;,所以if语句如果没有内容的话,用pass语句

2 函数的返回值

函数可以返回多个值(相当于返回一个tuple——)

3 函数的形参

3.1 默认值

对于函数形参,可以自动设置默认值(默认参数要在最后面)

3.2 可变参数

以一个*开头的就是可变参数

可变参数在函数定义中不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。

调用函数 report('Mike', 8, 9),输出的结果为 Mike total grade is 17

调用函数 report('Mike', 8, 9, 10),输出的结果为 Mike total grade is 27

3.3 关键字参数

以两个*开头的参数就是关键字参数

关键字参数可以传入0个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict).

通过可变参数和关键字参数,任何函数都可以用 universal_func(*args, **kw) 表达。

4 global

Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global。

不加global这个修饰词的时候,作用域仅仅为func()的内部,加了之后,作用域为全局

                 VS                      

           VS                     

如果局部要对全局变量修改,而不使用global关键字,那么会报错

如果局部不声明全局变量,并且不修改全局变量,则可以正常使用

5 nonlocal

nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。

6 yield

带yield的函数是一个生成器,而不是一个函数了。

这个生成器有一个函数就是next函数,next就相当于“下一步”生成哪个数。

这一次的next开始的地方是接着上一次的next停止的地方执行的,所以调用next的时候,生成器并不会从foo函数的开始执行,只是接着上一步停止的地方开始,然后遇到yield后,return出要生成的数,此步就结束。

输出如下:

解释:

1.程序开始执行以后,因为foo函数中有yield关键字,所以foo函数并不会真的执行,而是先得到一个生成器g(相当于一个对象)

2.直到调用next方法时,foo函数正式开始执行,先执行foo函数中的print方法,然后进入while循环

3.程序遇到yield关键字,把yield想象成return,return了一个4之后,程序停止。并没有执行赋值给res操作,此时next(g)语句执行完成,所以输出的前两行(第一个是while上面一行的print的结果,第二个是‘return’出的结果)是执行print(next(g))的结果。

4.程序执行print("*"*20),输出20个*

5.又开始执行下面的print(next(g)),这个时候和上面那个差不多,不过不同的是,这个时候是从刚才那个next程序停止的地方开始执行的,也就是要执行res的赋值操作,这时候要注意,这个时候赋值操作的右边是没有值的(因为刚才那个是return出去了,并没有给赋值操作的左边传参数),所以这个时候res赋值是None,所以接着下面的输出就是res:None,

6.程序会继续在while里执行,又一次碰到yield,这个时候同样return 出4,然后程序停止,print函数输出的4就是这次‘return’出的4.

7 Lambda函数

lambda函数包含的表达式不能超过

lambda函数的格式:冒号前面的是参数,可以有多个,有逗号隔开来,冒号右边的是表达式

函数名 = lambda 参数列表 : 表达式

lambda函数的返回值是一个函数的地址(函数对象)

7.1 lambda 函数应用场景

filter,map,reduce,列表的sort等等

7.1.1 sort

7.1.2 map

7.1.3 filter

python 笔记:函数相关推荐

  1. Python笔记-函数装饰器

    在调用某个方法前,想调用一些额外的东西. 个人感觉就和C++里面,带一个函数指针的的参数,在某个函数执行前,调用这个函数指针,或者,在某个函数中,直接调用这个函数.比如插入日志等.功能. 但在pyth ...

  2. Python 笔记 --函数

    目录 1.定义一个函数 2. 实参形参 3.传递实参 3.1 位置实参 3.2 关键字实参 3.3 返回字典 3.4  传递列表 3.5 传递任意实参,用元组的方法 3.6 字典传递任意数量的实参 4 ...

  3. Python笔记-函数装饰器的缺点

    装饰器的好处,复用了代码,缺点就是原函数的元信息不见了 比如函数docstring._name_.参数列表 如下代码: def use_logging(level = "debug" ...

  4. python eval 入门_Python学习笔记整理3之输入输出、python eval函数

    Python学习笔记整理3之输入输出.python eval函数 来源:中文源码网    浏览: 次    日期:2018年9月2日 Python学习笔记整理3之输入输出.python eval函数 ...

  5. 初学者python笔记(装饰器、高阶函数、闭包)

    一个函数被定义完成后,甚至程序发布后,后期可能需要添加某些功能,但是我们不可能每次都去修改原函数的代码,这时候装饰器就可以上场了,本篇文章将会用一个个可实现的代码,由浅入深.循序渐进得阐述装饰器的强大 ...

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

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

  7. 初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)

    文章目录 一.匿名函数 二.map()函数 三.reduce()函数 四.filter()函数 五.三大函数总结 本篇文章内容有Python中的匿名函数和map()函数.reduce()函数.filt ...

  8. 《流畅的Python第二版》读书笔记——函数中的类型注解

    引言 这是<流畅的Python第二版>抢先版的读书笔记.Python版本暂时用的是python3.10.为了使开发更简单.快捷,本文使用了JupyterLab. 本章关注于Python在函 ...

  9. python全栈开发笔记---------函数

    一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...

  10. python实现函数ifodd_09-Python笔记整理(函数)

    函数也是对象 函数的返回值 1.函数的返回值: a.就是函数返回给调用者的值 b.就是return关键字后面的表达式的值 c.就是函数调用表达式的值 python中每个函数都是有返回值的,返回值就是r ...

最新文章

  1. const 是个类型修饰符号。
  2. ubuntu下docker使用GPU
  3. **Java有哪些悲观锁的实现_阿里秋招Java研发工程师岗:来自校友的面试还原(已拿Offer)...
  4. JS实现——俄罗斯方块
  5. 无法将项目和文件的编码格式从UTF-8转为GBK
  6. 浅谈C++类(5)--友元
  7. 一般市区有测速吗_高速公路增加这么多龙门架,有抓拍超速违章功能吗?可要仔细辨别...
  8. 祝贺Terrylee博客园Post达到100篇
  9. CSS样式表书写位置
  10. Spring mvc 文件上传
  11. Google Talk Testing(早期版本)
  12. IE8 SVG Viewer下一些对象属性和方法
  13. 电力工程项目管理系统
  14. tftpd linux,用DHCP,NFS,tftpd搭建PXE无人值守安装linux操作系统
  15. 一根不均匀的绳子,全部烧完需要1个小时,问怎样烧能计时1个小时15分钟
  16. Carte+kettle+mysql性能问题定位分析记录
  17. uniapp 定位服务_uniapp使用高德地图定位
  18. 用python和ffmpeg批量合成bilibili缓存的m4s成mp4
  19. C盘扩容 ~直接磁盘管理器不能扩展~bitlocker加密解除
  20. GD图片处理——缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色

热门文章

  1. centos6.5_x64远程链接输入正确的账号密码无法登陆
  2. 从屌丝毕业生到三次优秀员工(腾讯三年工作感悟)
  3. SQL Tips:兼顾检索速度和精确性
  4. secureCRT脚本----vbs语法
  5. PAT甲级1042 Shuffling Machine:[C++题解]模拟、哈希表、洗牌机
  6. STL容器之Deque-《C++标准库(第二版)》读书笔记
  7. 通信电子线路期末复习第六章 反馈控制电路
  8. java注释的简单_Java简单注解
  9. leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法
  10. lex 词法分析 linux,lex语言词法分析