Python第十课学习

www.cnblogs.com/yuanchenqi/articles/5828233.html
函数:
1 减少代码的重复
2 更易扩展,弹性更强;便于日后文件功能的修改
3 保持代码的一致性

#计算机中的函数; subroutine 子程序 ;procedures 过程

定义:
函数是指...

函数的创建:
def (define)函数的关键字

#创建
def f():
print("OK")
#调用
f()

# f() 调用 ;f 变量
调用时,一定要加上()
函数名的命名规则:
1 字母数字下划线;不能是特殊字符
2 区分大小写
3 不能使用关键字

默认参数一定要跟在其他参数后面

关于不定长参数位置:

*args 放在前面 ;**kwargs 放在右边;如果有默认参数,放左边

优先级;
def function(name,age=22,*args,**kwarga)

函数作用域:
4 大作用域

4大参数: 必要参数 关键字参数 默认参数 不定长参数

函数的名字既可以作为参数也可以作为返回值

只有 模块 类 函数 才能引入新的作用域

关于递归:
1 内部自己调用自己
2 需要存在一个结束条件
注意: 但凡是递归可以写的程序,循环都可以做
而且,通常递归的效率非常的

内置函数:
abs(n) 绝对值
all(iterable) 当列表内的所有元素为真时,返回为True

参考: www.cnblogs.com/yuanchenqi/aritcles/5830025.html

装饰器
复习:
1 作用域: L E G B
x=10
def f():
t=5
a=3
def inner():
count=7
print (a)
return 1
2 高阶函数:(满足两个条件:1 函数名可以作为参数输入;2 函数名还可作为返回值)

3 闭包: 闭包=函数块+定义函数时的环境

def outer():
x=10
def inner(): # inner是一个内部函数
print(x) # 外部环境的一个引用
return inner # 此时 inner是一个闭包

outer()() # 等价于 f=outer() f()
# 执行f=outer()时,outer()被执行完毕,此时将
def inner():
print(x)
return inner
赋给f,再执行f()时 ,会调用 inner()

def outer(x):

inner(): # inner是一个内部函数
print(x) # 外部环境的一个引用
return inner # 此时 inner是一个闭包

f=outer(10)
f()
# 等价于 outer()()

装饰器:

def foo():
print('foo...')

foo()

import time

start = time.time() # 打印当前时间
time.sleep(1) # 停留一秒
end = time.time()

print(start)
print(end-start)

开放,封闭原则

def show_time():
start = time.time()
foo()
end = time.time()
print('spend %s' %(end-start))
show_time()

升级

def show_time(f):
start = time.time()

f()

end = time.time()
print('spend %s' %(end-start))

show_time(foo)

再升级

def show_time(f):
def inner()
start = time.time()

f()

end = time.time()
print('spend %s' %(end-start))
return inner

@show_time # 等价于 foo=show_time(foo)
foo() # 执行inner 函数

###>>>撰写程序时,需要去考虑会不会影响其他应用场景<<<###

def logger(flag):
def show_time(f):
def inner(*x,**y)

start = time.time()

f(*x,**f)

end = time.time()
print('spend %s' %(end-start))
if flag == 'true':
print('日志记录')
return inner
return show_time

@logger('true') @ 相当于做了 @show_time

def add(*a,*bb)

Python第十课学习的更多相关文章

  1. Python第八课学习

    Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...

  2. python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

  3. python第二十课——math模块中常用的函数

    属性: e:自然数 pi:圆周率 函数: ceil():向上取整 floor():向下取整 sqrt():开平方根 radians():角度转弧度 degrees():弧度转角度 import mat ...

  4. python第十课——循环结构收尾

    2.4.time模块的初体验 sleep(sec)函数:程序一旦执行到sleep()函数,会立即休眠sec秒,等到时间到了,自动醒过来,然后继续往下执行... 思路步骤: 第一步:导入time模块 i ...

  5. Python第九课学习

    Python第九课学习 数据结构: 深浅拷贝 集合set 函数: 概念 创建 参数 return 定义域 www.cnblogs.com/yuanchenqi/articles/5782764.htm ...

  6. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

  7. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...

  8. python第二十九课——文件读写(读取读取中文字符)

    演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...

  9. 孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3

    孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步了 ...

随机推荐

  1. hbase-0.92.1过滤器学习

    查看当前hbase中支持的过滤器 hbase(main):060:0* show_filters Documentation on filters mentioned below can be fou ...

  2. 微信小程序页面跳转导航wx.navigateTo和wx.redirectTo

    }) wx.redirectTo(OBJECT) 关闭当前页面,跳转到应用内的某个页面. 还是用上面的三张图示作为例子,当使用wx.redirctTo接口跳转页面时,原来的页面将被删除掉,当然,这是小 ...

  3. DMA 内存存取原理

    DMA直接内存存取原理 DMADMA直接内存存取原理是指外部设备不通过CPU而直接与系统内存交换数据的接口技术. 要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程 ...

  4. GridView有用的小方法--2017年2月13日[转]

    快速预览: GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合 ...

  5. 怎么在多场景下使用不同的 git 账号 commit

    应用场景 我有多个github的账号,不同的账号对应不同的repo,需要push的时候自动区分账号 我有多个git的账号,有的是github的,有的是单位的gitlab的,不同账号对应不同的repo, ...

  6. 前端基础之DOM和BOM

    前端基础之DOM和BOM JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏 ...

  7. Vasya And Password(CodeForces - 1051A)

    Vasya came up with a password to register for EatForces — a string ss. The password in EatForces sho ...

  8. 使用labelme制作自己的数据集

    # python3 conda create --name=labelme python=3.6 source activate labelme # conda install -c conda-fo ...

  9. npx

    npx 是什么? npm v5.2.0引入的一条命令(npx),引入这个命令的目的是为了提升开发者使用包内提供的命令行工具的体验. 举例:使用create-react-app创建一个react项目. ...

  10. vs2017 无法提交到tfs的 git存储库

    tfs 是2018版本 使用git 工具是可以提交成功. 使用vs2017的 就会一直提示 授权失败 也可以使用新安装的git https://blog.csdn.net/Meteor_s/artic ...