Pthon修炼5

函数   

一、自定义函数

def:表示函数的关键字

函数名:函数的名称

函数体:函数中进行一系列的逻辑计算

参数:为函数体提供数据

返回值:执行完函数return 一个值

例:def count(x):     #count :自己给你的函数的命名的名字  (x):  参数

    b = count(x)    #函数体,你给你的函数规定的特定工作

    return b     执行完函数体  遇到return—————— >结束  --->给调用你函数的操作返回一个值b当一个函数/过程没有使用return显示的定义返回值时,python解释器会隐式的返回None

补充:

1.编程语言中的函数与数学意义的函数是截然不同的俩个概念,编程语言中的函数是通过一个函数名封装好一串用来完成某一特定功能的逻辑,数学定义的函数就是一个等式,等式在传入因变量值x不同会得到一个结果y,这一点与编程语言中类似(也是传入一个参数,得到一个返回值),不同的是数学意义的函数,传入值相同,得到的结果必然相同且没有任何变量的修改(不修改状态),而编程语言中的函数传入的参数相同返回值可不一定相同且可以修改其他的全局变量值(因为一个函数a的执行可能依赖于另外一个函数b的结果,b可能得到不同结果,那即便是你给a传入相同的参数,那么a得到的结果也肯定不同)

2.函数式编程就是:先定义一个数学函数(数学建模),然后按照这个数学模型用编程语言去实现它。至于具体如何实现和这么做的好处,且看后续的函数式编程。

函数的优点:

1.代码重用

2.保持一致性,易维护

3.可扩展性

 二、函数的参数

3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)

4.默认参数

5.动态参数

def(p,*agrs,**kwagrs)

p,只能接受一个值,

*args可以接受多个值没并且以一个元组返回通过for循环,

**b,接受多个值以一个字典的形式返回,dict={1:2} 如果以值得形式传入**kwargs会报错,必须是**dict

三、变量

变量分为全局变量和局部变量

1.**global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字。

2.** 在局部如果不声明全局变量,并且不修改全局变量。则默认使用全局变量

3.**nonlocal  适用于在局部函数 中 的局部函数, 把最内层的局部 变量设置成外层局部可用,但是还不是全局的。

四、内置函数

1、数学运算类

abs(x) 求绝对值
1、参数可以是整型,也可以是复数
2、若参数是复数,则返回复数的模
complex([real[, imag]]) 创建一个复数
divmod(a, b) 分别取商和余数
注意:整型、浮点型都可以
float([x]) 将一个字符串或数转换为浮点数。如果无参数将返回0.0
int([x[, base]])  将一个字符转换为int类型,base表示进制
pow(x, y[, z])  返回x的y次幂
range([start], stop[, step])  产生一个序列,默认从0开始
round(x[, n])  四舍五入
sum(iterable[, start])  对集合求和
oct(x) 将一个数字转化为8进制
hex(x) 将整数x转换为16进制字符串
chr(i) 返回整数i对应的ASCII字符
bin(x) 将整数x转换为二进制字符串
bool([x]) 将x转换为Boolean类型

2、集合类操作

basestring() str和unicode的超类
不能直接调用,可以用作isinstance判断
format(value [, format_spec]) 格式化输出字符串
格式化的参数顺序从0开始,如“I am {0},I like {1}”
unichr(i) 返回给定int类型的unicode
enumerate(sequence [, start = 0]) 返回一个可枚举的对象,该对象的next()方法将返回一个tuple
iter(o[, sentinel]) 生成一个对象的迭代器,第二个参数表示分隔符
max(iterable[, args...][key])  返回集合中的最大值
min(iterable[, args...][key]) 返回集合中的最小值
dict([arg]) 创建数据字典
list([iterable])  将一个集合类转换为另外一个集合类
set() set对象实例化
frozenset([iterable]) 产生一个不可变的set
str([object])  转换为string类型
sorted(iterable[, cmp[, key[, reverse]]])  队集合排序
tuple([iterable])  生成一个tuple类型
xrange([start], stop[, step])  xrange()函数与range()类似,但xrnage()并不创建列表,而是返回一个xrange对象,它的行为与列表相似,但是只在需要时才计算列表值,当列表很大时,这个特性能为我们节省内存

3、逻辑判断

all(iterable) 1、集合中的元素都为真的时候为真
2、特别的,若为空串返回为True
any(iterable) 1、集合中的元素有一个为真的时候为真
2、特别的,若为空串返回为False
cmp(x, y) 如果x < y ,返回负数;x == y, 返回0;x > y,返回正数

4、反射

callable(object) 检查对象object是否可调用
1、类是可以被调用的
2、实例是不可以被调用的,除非类中声明了__call__方法
classmethod() 1、注解,用来说明这个方式是个类方法
2、类方法即可被类调用,也可以被实例调用
3、类方法类似于Java中的static方法
4、类方法中不需要有self参数
compile(source, filename, mode[, flags[, dont_inherit]]) 将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。
1、参数source:字符串或者AST(Abstract Syntax Trees)对象。
2、参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
3、参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。
4、参数flag和dont_inherit:这两个参数暂不介绍
dir([object]) 1、不带参数时,返回当前范围内的变量、方法和定义的类型列表;
2、带参数时,返回参数的属性、方法列表。
3、如果参数包含方法__dir__(),该方法将被调用。当参数为实例时。
4、如果参数不包含__dir__(),该方法将最大限度地收集参数信息
delattr(object, name) 删除object对象名为name的属性
eval(expression [, globals [, locals]]) 计算表达式expression的值
execfile(filename [, globals [, locals]]) 用法类似exec(),不同的是execfile的参数filename为文件名,而exec的参数为字符串。
filter(function, iterable) 构造一个序列,等价于[ item for item in iterable if function(item)]
1、参数function:返回值为True或False的函数,可以为None
2、参数iterable:序列或可迭代对象
getattr(object, name [, defalut]) 获取一个类的属性
globals() 返回一个描述当前全局符号表的字典
hasattr(object, name) 判断对象object是否包含名为name的特性
hash(object) 如果对象object为哈希表类型,返回对象object的哈希值
id(object) 返回对象的唯一标识
isinstance(object, classinfo) 判断object是否是class的实例
issubclass(class, classinfo) 判断是否是子类
len(s)  返回集合长度
locals()  返回当前的变量列表
map(function, iterable, ...)  遍历每个元素,执行function操作
memoryview(obj)  返回一个内存镜像类型的对象
next(iterator[, default])  类似于iterator.next()
object()  基类
property([fget[, fset[, fdel[, doc]]]])  属性访问的包装类,设置后可以通过c.x=value等来访问setter和getter
reduce(function, iterable[, initializer])  合并操作,从第一个开始是前两个参数,然后是前两个的结果与第三个合并进行处理,以此类推
reload(module)  重新加载模块
setattr(object, name, value) 设置属性值
repr(object)  将一个对象变幻为可打印的格式
slice()  
staticmethod 声明静态方法,是个注解
super(type[, object-or-type])  引用父类
type(object) 返回该object的类型
vars([object])  返回对象的变量,若无参数与dict()方法类似
bytearray([source [, encoding [, errors]]]) 返回一个byte数组
1、如果source为整数,则返回一个长度为source的初始化数组;
2、如果source为字符串,则按照指定的encoding将字符串转换为字节序列;
3、如果source为可迭代类型,则元素必须为[0 ,255]中的整数;
4、如果source为与buffer接口一致的对象,则此对象也可以被用于初始化bytearray.
zip([iterable, ...])  实在是没有看懂,只是看到了矩阵的变幻方面

6、IO操作

file(filename [, mode [, bufsize]]) file类型的构造函数,作用为打开一个文件,如果文件不存在且mode为写或追加时,文件将被创建。添加‘b’到mode参数中,将对文件以二进制形式操作。添加‘+’到mode参数中,将允许对文件同时进行读写操作
1、参数filename:文件名称。
2、参数mode:‘r‘(读)、‘w‘(写)、‘a‘(追加)。
3、参数bufsize:如果为0表示不进行缓冲,如果为1表示进行行缓冲,如果是一个大于1的数表示缓冲区的大小 。
input([prompt])  获取用户输入
推荐使用raw_input,因为该函数将不会捕获用户的错误输入
open(name[, mode[, buffering]])  打开文件
与file有什么不同?推荐使用open
print 打印函数
raw_input([prompt])  设置输入,输入都是作为字符串处理

7、其他

help()--帮助信息

__import__()--没太看明白了,看到了那句“Direct use of __import__() is rare”之后就没心看下去了

apply()、buffer()、coerce()、intern()---这些是过期的内置函数,故不说明

时间: 2024-08-01 22:41:59

Pthon修炼5的相关文章

读书笔记-程序员修炼之道-序

前言 我们应该成为什么样的程序员 注重实效的程序员具备的特征 注重实效的个体大型的团队 它是一个持续的过程 前言 程序员修炼之道这本书已经通读了一遍,获益良多,但还是不甚理解,所以在重读一遍,顺便做一下笔记.由于自己水平有限,只能摘抄一下重要的词句了. 我们应该成为什么样的程序员 我们的知识背景源自于对计算机科学基本原理的理解,而我们的经验来自广泛的实践项目.理论与实践相结合使我们强大起来. 我们不应该局限于任何特定的方案,而是应该拥有足够广博知识背景和经验基础,这能够让我们在特定的情况下选择更

修炼爱情05

今天你的心情好些了,感觉没有了前几天的烦躁,生活各种事情参杂在一起的时候,人就是容易迷惑和忧郁,但是人是很强大的动物,我们不是慢慢的就走出忧郁,回归到现实的生活嘛?好好和爱人的人一起渡过难关,每一个在乎你的人都会与你同在,不管任何形式,任何方式,心总在一起,慢慢的都会好起来的,兰,今天我加班了,听到你的消息很安心,脑子终于好使了,Your are my angle,I love you. 修炼爱情05,布布扣,bubuko.com

sed从入门到深入修炼目录

sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)sed修炼系列(三):sed高级应用之实现窗口滑动技术sed修炼系列(四):sed中的疑难杂症 说明: 第一篇是入门篇,但却是最重要的一篇.虽然内容不算多,但在里面讲了绝大多数sed的工作机制,在后面几篇里都涉及到其中的概念.如果后面几篇文章有看不懂的术语,比如sed循环.SCRIPT循环.自动输出.回到SCRIPT循环顶部等,请看这篇文章. 第二篇是info sed的翻译篇,花了

《程序员修炼之道》笔记(一)

这几天开始看<程序员修炼之道>,也许不少人看了书的标题,第一时间会觉得这是鸡汤一类的书.但至少以我自己的感受来看,这是很棒的书,现代人文主义不是提倡自我意识嘛,自己感觉好的就是好的.况且人家也是经过了时间和口碑的双重考验的,真心值得好好阅读. 作者在再版的序中写道: 写完<程序员修炼之道>至今已有十年.在这十年中,软件产业发生了翻天覆地的变化.--从表面上看,软件世界似乎陷入了疯狂的状态.但如果你深入繁杂表象的背后,会发现变化其实并不大.1999年的那些通用开发原则,在2009年同

在困难中修炼自己

在一次电话采访中,一位记者问过我一个很好玩的问题:"李连杰,你这些年都是一帆风顺,你是怎么变得这么强大的呢?" 这位记者在采访我之前肯定没做过认真的准备.首先,我从来不是一帆风顺的,在朋友中我有个外号,叫"死过一百次的生还者".在我很小的时候,我父亲就过世了,家境实在太差,只好加入武术队,靠每个月微薄的补贴养活全家;11岁开始我连续5次拿到全国武术比赛冠军,18岁拍了<少林寺>,一夜成名,但第二年我就摔断了腿,差点成为废人;好不容易等到<黄飞鸿&g

《程序员修炼之道--从小工到专家》阅读笔记02

<程序员修炼之道--从小工到专家>在第三章中为我们提到纯文本的好好处,书中给我们提醒到,通过纯文本(XML.SGML以及HTML都是纯文本的好例子)我们可以让事情变得更容易.文本对于我们来说有三大好处:保证不过是.杠杆作用.更易于测试.对于程序员,不仅要善于使用纯文本,还必须掌握shell命令行,即使在Windows下我们也要精准掌握.Shell对于我们来说就是我们的工作台,在shell命令下我们可以操作调用我们想要的东西.可以说shell功能是非常强大的,所以对于我们程序员来说掌握它是对我们

软件测试修炼之道(转载)

软件测试修炼之道 前言 软件测试发展到今天,已经逐渐形成一门学科,但是还不够系统. 初学者面对铺天盖地的资料应该如何选取?应该从哪里入手?如何迅速的掌握各种业务各项测试技能以便开展工作?在保证测试质量的前提下,一日内编写或执行1000个测试用例是不是梦想? 入行多年者面对复杂的业务逻辑,海量的测试需求,如何在最短的时间内进行测试?如何尽可能更早的开展测试?如何对系统架构进行测试?如何全面提高测试质量与测试效率?如何百尺竿头更进一步? 本文将针对这些问题进行初步解答,主要阐述解决这些问题应该具备哪

编写高质量代码:Web前端开发修炼之道(一)

最近老大给我们买来一些技术方面的书籍,其实很少搬着一本书好好的完整的看完过,每每看电子档的,也是打游击式的看看这章,瞅瞅那章,在那5本书中挑了一本比较单薄的<编写高质量代码web前端开发修炼之道>,看完觉得不错,它从一个整体架构上来说明如何编写高质量代码,而细处也着重说明一些比较重要的技术点,给人一种从高处俯瞰web开发.很完整的感觉,在这感谢老大,谢谢他让我们不停的进步着.下面是我看书过程中的笔记. 第一章:从网站重构说起 没什么好说的,从一个糟糕的老网页实例说明需要将web的结构,样式和行

高效能程序员的修炼—第一次读后感

高效能程序员的修炼-第一次读后感 最近利用在地铁上的时间看完了<高效能程序员的修炼>发现自己还是存在的很大的不足之处,或者说成为程序员就需要不停的学习,而我在一段时间很自满以为没有自己不能解决的问题,直到跳出了那个城市来到了北京才发现自己不过是一个很菜的菜鸟,在这里我那点知识根本是不够用的额,我突然发现了如果这么下去我们之间的差距就会变得很大,然后么我就每天花一点时间研究一些深入的东西,发现以前的好多东西站在现在的角度还是有很大改进的地方.特别是最近看了这本书,发现人或许就是活到老.学到老,而