码迷,mamicode.com
首页 > 编程语言 > 详细

2、Python函数详解(0601)

时间:2018-07-25 17:48:44      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:定义函数   bsp   有一个   代码   输入   状态   范围   图片   http   

 

技术分享图片

函数和过程的区别:函数都有return返回值,在python中,通常都有返回对象

技术分享图片

 

 

函数:名称空间

一个变量所能够生效的范围,就叫做变量的作用域,这个作用域通常称之为名称空间

 技术分享图片

 技术分享图片技术分享图片技术分享图片

技术分享图片技术分享图片

 

变量名解析:LEGB原则

变量名引用分三个作用域进行:首先是本地、之后是函数内、接着是全局,最后是内置

作用域越小,变量的优先级越高

技术分享图片

技术分享图片

Python闭包:在函数嵌套时,如果直接返回内层函数的话,同时如果内层函数调用了外层函数的变量,内层函数会自动记忆外层函数的变量,这种机制就叫做函数的闭合,也就是所谓的工厂函数

 闭包法则:定义在外层函数内,但是却由内层函数引用的变量,在外层函数返回时,如果外层函数直接返回了内层函数作为返回结果,再次调用内层函数可以直接使用外层函数原有的变量,内层函数实现记忆的效果

技术分享图片

 

 

技术分享图片技术分享图片

技术分享图片

技术分享图片

技术分享图片技术分享图片

尽可能不要在函数内部修改传递过来的可变对象,使用对象复制可以避免

技术分享图片

技术分享图片

参数传递形式

位置参数:从左向右

关键字参数:按关键名称匹配

技术分享图片技术分享图片

位置和关键字混用,混用上面两种方式时,所有位置参数,所有的关键字参数

技术分享图片技术分享图片

 

定义函数时使用默认参数:有默认值的参数

混用有默认和无默认值的参数时,无默认值的应该放在前面

技术分享图片技术分享图片

 

调用函数时使用可变参数要求:

使用*:收集位置参数

使用**:收集关键字参数

 

回顾:

re

search,findall,finditer.sub,subn

function

()

 

 

def func_name(arg1,....)

func_suite

 

 

python闭包:闭包叫lexical closure

 

 

函数中使用yield,会返回一个生成器对象

 

装饰器:

1.装饰器本身是一个函数 ,用于装饰其他函数

2.功能:增强被装饰函数的功能

 

装饰器一般接受一个函数对象作为参数,

 

 

使用@调用函数

 

 

递归:

在函数执行过程中调用自己

递归需要边界条件,递归前进段和递归返回段

 

协程

 

函数的设计规范

耦合性

1.通过参数接受输入,已经通过return产生输出以保证函数的独立性

2.尽量减少使用全局变量进行函数间通信

3.不要再函数中修改可变类型的参数

4.避免直接改变定义在另外一个模块中的变量

 

集合性

1.每个函数都应该有一个单一的、统一的目标

2.每个函数的功能都应该相对简单

 

 

练习:

1.将/etc/passwd文件中的每一行都分隔成一个列表

 

2.将任意文件按用户指定的分隔符把每一行都分隔成一个列表

 

3.用折叠的方式(reduce)求阶乘

 

 

 

类:将同一种具体物事的共同特性抽象出来的表现

状态和转换这些状态的操作

数据:

变量:就是属性

方法:

函数:操作变量引用的数据的代码

 

 

面向对象编程的3原则

封装、集成和多态

 

class class_name

2、Python函数详解(0601)

标签:定义函数   bsp   有一个   代码   输入   状态   范围   图片   http   

原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9367121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!