python基础(十)--函数进阶
嵌套函数
>>> graphic = '三角形'
>>> def chang():
graphic = '正方形'
def chang1(): #内部嵌套的函数命名可相同
graphic = '圆形'
print('第三层打印',graphic)
chang1()
print('第二层打印',graphic)
>>> chang()
第三层打印 圆形
第二层打印 正方形
>>> print('第一层打印',graphic)
第一层打印 三角形
#在各自的命名空间中同名变量不受影响
匿名函数
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
语法为 lambda [arg1 [,arg2,.....argn]]:expression ,以变量的方式调用 sum = lambda arg1, arg2: arg1 + arg2
装饰器
装饰器的作用:在原先代码不改变的情况扩展功能
def test(f):
def inner():
print('hello')
f()
return inner # 返回内部函数对象,内部不调用,这种现象称为‘‘闭包’’ @test
def log():
print('world') # @test 相当于执行 log= test(log) log() # 现在的log()相当于inner()
--------------------
hello
world
装饰器的参数传递
def test(f):
def inner(*arg):
print('hello')
f(*arg) #此处f(*arg)是原先login函数的调用
return inner @test
def login(x=None):
if x == 'xing':
print('world') login() #不传参数,因为inner函数是可选参数,f(*arg)则中则为默认参数x = None
---------------
# hello
--------------
login('xing')
---------------
# hello
# world
递归函数
递归函数需设停止递归的条件
递归代码还有代码的话,递归结束后还会依次执行
def calc(n):
print(n )
n = int(n /2) #
if n > 0:
calc(n) #
print(n)
生成器
a = [x for x in range(10)]
b = (x for x in range(10))
print(a)
print(b)
-------------------
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# <generator object <genexpr> at 0x00505070>
生成器函数
使用yield关键字
def g_test():
while True:
print('hello')
n = yield 5 # yield是暂停并return 5
print(n) g = g_test() # 必选先执行赋值变量操作
g.__next__() # 刚建立的生成器必须先执行此步
print(g.__next__())
g.send('world') # send方法可发送值给n
------------------------
hello None # 执行完第一个__next__(),n并未赋值,print(n)为None
hello
5 # yield 5 返回了5 ,print()出来了 world
hello
python基础(十)--函数进阶的更多相关文章
- 周末班:Python基础之函数进阶
迭代器和生成器 迭代和可迭代 什么是迭代(iteration)? 如果给定一个list或tuple,我们要想访问其中的某个元素,我们可以通过下标来,如果我们想要访问所有的元素,那我们可以用for循环来 ...
- Python全栈开发之路 【第五篇】:Python基础之函数进阶(装饰器、生成器&迭代器)
本节内容 一.名称空间 又名name space,就是存放名字的地方.举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方. 名称空间共3种,分别如下 ...
- python基础之函数进阶之函数作为返回值/装饰器
因为装饰器需要用到返回函数的知识,所以在这里将返回函数和装饰器合并讲解. 什么是返回函数? 我们知道,一个函数中return可以返回一个或者多个值,但其实,return不仅可以返回值,还可以返回函数. ...
- python基础之函数进阶
假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print(bi ...
- 十三. Python基础(13)--生成器进阶
十三. Python基础(13)--生成器进阶 1 ● send()方法 generator.send(value) Resumes the execution, and "sends&qu ...
- python基础篇之进阶
python基础篇之进阶 参考博客:http://www.cnblogs.com/wupeiqi/articles/5115190.html python种类 1. cpython 使用c解释器生产 ...
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
随机推荐
- hive 调优(一)coding调优
本人认为hive是很好的工具,目前支持mr,tez,spark执行引擎,有些大公司原来封装的sparksql,开发py脚本,但是目前hive支持spark引擎(不是很稳定,建议Tez先),所以离线还是 ...
- 解决百度文字识别SDK拍照不回调问题
在使用百度文字识别SDK的时候,发现点了拍照后camera.takePicture(ShutterCallback shutter, PictureCallback raw,PictureCallba ...
- Hearthstone AI
search keyword `machine learning hearthstone` with google I am a legend: Hacking Hearthstone with ma ...
- 预编译头文件stdafx.h-stdafx.cpp-stdafx.pch(pre-compile headfile)
tdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展). 所谓头文件预编译,就是把一个工程(Project)中使用的一些M ...
- rc.local 注意事項,call python script, file position
如果要在 rc.local 呼叫 python script python script 的位置需使用絕對路徑 其 python script 裡的有關 file 的位置也需使用 絕對路徑 如果要在 ...
- java基于jcifs.smb实现远程发送文件到服务器
1.服务器指定共享文件夹 1.1.验证服务器共享文件夹本地可以访问: 2.导入依赖的相关jar包 jcifs-1.3.**.jar: <dependency> <gr ...
- Hexo博客skapp主题部署填坑指南
相信大家都很喜欢 hexo skapp 的主题,由于作者采用结巴分词,加上需要依赖各种各样的环境 所以可能大家踩过很多坑,也许每个人踩得坑不一样,这里使用 Docker 容器 centos 来部署, ...
- prometheus数据上报方式-pushgateway
pushgateway 客户端使用push的方式上报监控数据到pushgateway,prometheus会定期从pushgateway拉取数据.使用它的原因主要是: Prometheus 采用 pu ...
- 开发CLI命令行
命令行工具:CLI 是在命令行终端使用的工具,如git, npm, vim 都是CLI工具.比如我们可以通过 git clone 等命令简单把远程代码复制到本地 和 cli 相对的是图形用户界面(gu ...
- web布局收集整理
/*样式文件*/ .fgw-right-p{ height: 38px; line-height: 38px; margin-bottom: 20px; padding-left: 24px; spa ...