函数定义与调用

  1. 使用 def 关键字进行函数的定义
  2. 使用.doc 或 help() 调用参数文档
  3. 对于函数的参数,为了避免出错,常常赋予初默认值
  4. 收集参数 *params
""""
函数
"""def MyFirstFunction():print("123")MyFirstFunction()def MySecondFunction(name):"""函数name叫做形参"""  # 函数文档print(name, " , I love you !")MySecondFunction("丫头")
print(MySecondFunction.__doc__)  # 调用函数文档
print(help(MySecondFunction))  # 调用函数文档def add(number1, number2):return number1 + number2print(add(519, 1))def say(name="蛮吉", s="奇衡三"):  # 赋予默认值print(name, "->", s)say()
say(s="白落提、丰和、英宋、桓泽金、广秀", name="幽弥狂")  # 对应参数名def test1(*params):  # 收集参数print(len(params), " ", params[0])test1('w', 2, 3, "hhh")def test2(*params, exp):print(len(params), " ", exp)test2(1, 2, 3, "h", exp=1)  # 为防止出错,通常给予收集参数后的参数默认值

输出:

123
丫头  , I love you !
函数name叫做形参
Help on function MySecondFunction in module __main__:MySecondFunction(name)函数name叫做形参None
520
蛮吉 -> 奇衡三
幽弥狂 -> 白落提、丰和、英宋、桓泽金、广秀
4   w
4   1

函数返回值与global关键字

  1. 返回多个值时,默认打包返回元组
  2. 局部变量与全局变量
  3. 可以使用global关键字在函数内部指定变量为全局变量
"""
函数返回值与global关键字
"""
def back():return [1, 2, 3, "hello"]def function():return 'hello', "laowang"  # 默认打包,返回元组print(back())
print(function())def f1():number = 5  # 局部变量numberprint(number)def f2():global number  # 指定number指的是全局变量numbernumber = 10print(number)number = 1  # 全局变量number
f1()
f2()

输出:

[1, 2, 3, 'hello']
('hello', 'laowang')
5
10

函数的内嵌

  1. 内嵌函数只在函数内生效,在函数外无效
  2. 当外函数被调用时,内嵌函数才运转

def function1():print('function1正在被调用')def function2():  # 内嵌函数function2只能在function1内使用print('function2正在被调用')function2()function1()  # 当function1被调用的时候,function2会被调用
# function2()  # 报错,function2没有被定义

输出:

function1正在被调用
function2正在被调用

闭包

def function(x):def f(y):return x*yreturn fa=function(2)  # a其实是一个函数
print(a(3))
print(function(3)(4))def function1():x=5  # 对于内嵌函数f(),变量x相当于局部变量,会被屏蔽起来,不可被访问def f():x*=x  #报错 local variable 'x' referenced before assignmentreturn xreturn f()def function2():x = [5]def f():x[0] *= x[0]  # 借助容器return x[0]return f()def function3():x = 5def f():nonlocal x  # 借助关键字nonlocal,强制声明变量x不是局部变量x *= xreturn xreturn f()print(function2())
print(function3())

输出:

6
12
25
25

匿名函数、filter()、map()

  1. 匿名函数:使用lambda关键字
  2. filter():过滤器,内置两个参数,第一个是函数或None,第二个是可迭代序列
  3. map():映射,内置两个参数,第一个是函数或None,第二个是可迭代序列
"""
匿名函数 lambda关键字
filter(函数,可迭代序列)
map(函数,可迭代序列)
"""
def odd(number):return number % 2filter(odd, range(10))  # 过滤器
l1 = list(filter(odd, range(10)))
print(l1)
l2 = list(map(lambda x: x ^ 2, range(5)))  # 映射
print(l2)

输出:

[1, 3, 5, 7, 9]
[2, 3, 0, 1, 6]

疑问

"""
内嵌函数的疑问
"""def function0(x):def f(y):return x * yreturn fdef function1():x = [5]def f():x[0] *= x[0]return x[0]return f()def function2():x = [5]def f():x[0] *= x[0]return x[0]return fprint(function0(5)(5))  # 25
print(function1())  # 25
print(function2())  # function function2.<locals>.f at 0x0000024C94C6BAE8>

输出:

25
25
<function function2.<locals>.f at 0x000001D75A4CBAE8>

Python 函数的使用和内嵌函数相关推荐

  1. 小甲鱼python第二十讲(内嵌函数和闭包)

    内嵌函数 def fun1():print("fun1正在被调用...")def fun2():print("fun2正在被调用..")fun2()#在fun1 ...

  2. 零基础入门学习Python(19)-内嵌函数和闭包

    global关键字 全局变量的作用域是整个模块,也就是代码段内所有的函数内部都可以访问到全局变量 注意,在函数内部仅仅去访问全局变量就好,不要试图去修改它,如果随意修改全局变量的值,很容易牵一发而动全 ...

  3. python中闭包函数_Python的闭包问题(关于内嵌函数引用闭包函数的变量问题)

    一.闭包: 记得:闭包的特性就是:内嵌函数会保存它引用的外围函数的变量值. 闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数和被引用的变量等 ...

  4. function函数嵌套 matlab_Matlab函数进阶:使用匿名函数和内嵌函数处理多变量传递问题...

    Matlab 函数进阶: 使用匿名函数 (Anonymous Function) 和内嵌函数 (Nested Function) 处理多变量传递问题 (Matlab 7.0 以上 ) 问题: 有一个多 ...

  5. 8.局部变量/全局变量global/内嵌函数/闭包nonlocal

    函数:有返回值 过程:无返回值 注解:在python中,只有函数(每个函数都有返回值),没有过程>>> def hello():print("first")> ...

  6. Python--12 内嵌函数和闭包

    内嵌函数/内部函数 >>> def fun1(): ... print('fun1()正在调用') ... def fun2(): ... print('fun2()正在被调用') ...

  7. 课时20:内嵌函数和闭包

    目录: 一.global关键字 二.内嵌函数 三.闭包 四.课时20课后习题及答案 ******************** 一.global关键字 ******************** 全局变量 ...

  8. 原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念

    原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念. 我是从这里看来的: http://blog.dreambrook.com/soloist/archive/2005/03/13/526.a ...

  9. Makefile所有内嵌函数

    一.文本处理函数 以下是GNU make内嵌的文本(字符串)处理函数. 1       $(subst FROM,TO,TEXT) 函数名称:字符串替换函数-subst. 函数功能:把字串" ...

  10. 使用匿名函数和内嵌函数处理多变量传递问题

    问题:有一个多变量函数f(abcx),现需要分别在a=a0b=b0c=c0和a=a1b=b1c=c1的条件下对f(abcx)进行某一操作. 此类问题常在数值积分时出现. 解决方案: 1. 使用全局变量 ...

最新文章

  1. 解决: AttributeError: module 'cv2' has no attribute 'SURF'
  2. oracle中forall in,oracle10g的forall功能加强
  3. 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)
  4. php采集单线程卡死,php - 为什么我这段curl采集,单线程比多线程还快?
  5. 面试准备每日五题:C++(七)——左值右值、面向对象、四种cast转换、拷贝构造函数赋值、虚函数多态
  6. 调整数组顺序使奇数位于偶数前
  7. Node.js 8有哪些重要功能和修复? 1
  8. 动态引入js文件和css样式表文件
  9. 加速与缓存技术之Varnish
  10. PHP100视频教程(2012-2013版)下载地址及密码
  11. 基于Android平台的x264的移植与应用(一):移植篇
  12. XMPP通信语义学 message, presence IQ
  13. xm-select树形下拉框渲染,取值,赋值
  14. 树莓派设置自动连接无线网络
  15. 防火墙阻止tftp_Juniper netscreen防火墙TFTP升级过程
  16. 仙剑奇侠传4狐仙打法
  17. 【Leetcode】286. Walls and Gates
  18. 【ImageView加载网上的图片】
  19. 魔乐科技安卓开发教程----李兴华----19 传感器
  20. PostgreSQL TRANSACTION(事务)

热门文章

  1. Linux的PS1美化
  2. 虚幻4毛发系统_虚幻5引擎demo与虚幻4 demo对比视频 效果进步明显
  3. oracle版本区别 win7_Oracle在Win7服务管理中消失的解决方法
  4. 腾讯校园招聘--一面(技术1对1)面经
  5. 生鲜行业采购管理系统把控采购成本,实现精细化管理
  6. [golang] 导入 go-sqlite3 报错解决方法
  7. Windows 10微软拼音中添加自定义短语
  8. 深度学习与自然语言处理(1)_斯坦福cs224d Lecture 1
  9. 谢辉吉林大学计算机学院,【大科·数院】佳绩频传,成果丰硕——第12届中国大学生计算机设计大赛吉大赛区数院学子成绩斐然...
  10. c语言小球消砖块的游戏,求大神帮忙看看这个弹弹球消砖块的游戏代码,为什么speed只能15...