
python
文章平均质量分 81
ryuali2010
这个作者很懒,什么都没留下…
展开
-
函数(二)
函数设计注意点:耦合性:尽量不要使用全局变量;尽量不要改变函数中接收的可变实参的值;避免直接更改另一个模块文件中的变量。聚合性:每个函数都有一个单一的,统一的目标,并且函数尽可能的小。Python的函数是一个对象,函数对象可以赋值给其他名字,传递给其他函数,嵌入到数据结构。而对于用于def语句中的名称,它只是当前作用域的一个变量赋值,def运行之后,该名字指向了函数对象,我们可以把原创 2012-08-29 07:51:56 · 336 阅读 · 0 评论 -
for 语句
for 循环是一个通用的序列迭代器,可以遍历任何有序的序列对象内的元素,可用于字符串,列表,元组以及其他内置可迭代对象for in : if : break if : continueelse: 你可以把for循环看成是解包,而具体是如何解包的,这个就要看next方法,它是具体怎么实现的(针对自定义对象)。对于内置对象的话,解包一般就是把一个大原创 2012-09-01 09:00:08 · 323 阅读 · 0 评论 -
if 语句与and / or 用法扩展
if ... elif... else: 他们垂直对齐,具有相同缩进,如果所有的测试都为假的话,就执行else部分。if / else 三元表达式 A=Y if X else Z 等价于 A = ((X and Y) or Z)。首先明确的是Y与Z因为都是值,或者其它类型。所以默认就是为真。具体and/or的操作见下面真值测试>>> branch = {'spam': 1.24,..原创 2012-08-31 17:48:34 · 10171 阅读 · 0 评论 -
Python 生成器函数,生成器表达式,迭代器,列表解析
生成器表达式VS列表解析列表解析都是在方括号里面,而生成器表达式在元括号里面,你只要碰到形式,这一步会给你返回一个结果集生成器表达式不执行for语句,只有当调用next方法的时候才会执行一次。他们两个的具体问题可以参考列表解析和生成器之间空间和时间的对比通过作为返回值形式,体现出不同的处理方式>>> [x**2 for x in range(4)]原创 2012-09-01 08:57:53 · 972 阅读 · 0 评论 -
列表解析和生成器之间空间和时间的对比
下面的例子从侧面也体现了,对于列表解析中for i in A , 对象A是一个数据块还是一个我们每执行一次循环求一次值,这个根本上是看A对象的next方法到底是列表解析还是返回一个generator object.>>> def myzip(*seqs):... minlen = min(len(s) for s in seqs)... return ((s[i] for s原创 2012-09-01 08:59:14 · 612 阅读 · 0 评论 -
Python中 内置函数
Mapmap 函数在python3里面不再像以前一样,返回的是结果集,现在它返回的是一个map objectMap对象也相当于一个生成器表达式,同样拥有next()方法>>> map((lambda x:x),(1,2,3))>>> F=map((lambda x:x),(1,2,3)) #所以说map对象也是一个可迭代对象,每次只求一个值>>> nex原创 2012-09-01 08:59:50 · 910 阅读 · 0 评论 -
Emacs IDE for Python
下载python-mode.el 然后根据readme信息在.emacs中添加如下信息:;;for python(setq py-install-directory "//usr/share/emacs/site-lisp/python-mode.el-6.0.11/")(add-to-list 'load-path py-install-directory)(require原创 2012-08-26 00:16:12 · 613 阅读 · 0 评论 -
函数
函数:最大化的代码重用和最小化代码冗余,同时可以进行流程分解,包含更多独立的函数来完成整个流程中的每个子任务。def是可执行的代码-函数并不存在,直到运行了def后才存在。def语句在模块文件中编写,并自然而然的在模块文件第一次被导入时生成定义的函数。def创建了一个对象并将其赋值给某一变量名lambda创建一个函数对象,并将该对象返回给调用者。yield向调用者发回一个结果对象,原创 2012-08-27 10:05:53 · 489 阅读 · 0 评论 -
for(二)
现在我们总结一下for 后面可以跟的对象A的具体类型。1:内置数据类型,iter(A)返回一个iterator给temp,然后每次循环就是调用next(temp)2: generator object: iter(A)会返回自身,同时next(A)等于下一个yield后面表达式的值3: generator object : iter(A)返回自身,4: map object原创 2012-09-01 09:00:22 · 661 阅读 · 0 评论 -
单迭代对象和多迭代对象
单迭代对象:只要对象定的话,无论你是否再调用iter()对象,甚至是把这个对象赋值给其他变量名,你会发现这些变量指的是同一个地方多迭代对象:你可以通过iter()方法来产生一个迭代器对象,并且将它赋值给一个变量名,如果你再对对象调用iter()方法的话,把它赋值给另一个变量名,你会发现这两个迭代对象不是指向同一个位置。你可以把每一个iterator object想象成一个容器,它里原创 2012-09-01 08:59:28 · 2046 阅读 · 1 评论 -
参数传递
传递参数不可变对象“通过值”作为实参,像整数和字符串你不可在原处进行修改,所以就类似C中的机制,拷贝出来,更改的话,不会更改原处,而现在是相对它更改的话,会出错。可变对象通过“指针”作为实参,列表和字典这样的对象可以通过对象引用进行传递。实参的传递跟C语言还是有点区别,在python中它实际上都是把函数中的形参名指向一个对象,但是当形参A指向的是一个整数或字符串形式对象时,如果你在原创 2012-08-28 11:35:55 · 374 阅读 · 0 评论 -
Python 列表解析
列表解析在一个序列的值上应用一个任意表达式,将其结果收集到一个新的列表中并返回。它的基本形式是一个方括号里面包含一个for语句对一个iterable对象迭代>>> res=[ord(x) for x in 'spam']>>> res[115, 112, 97, 109]>>> [x**2 for x in range(10)][0, 1, 4, 9, 16, 25, 36,原创 2012-08-30 11:32:24 · 25077 阅读 · 0 评论 -
Python入门
Python 运行脚本,第一步是编译成所谓的“字节码”,之后将其转发到所谓的“虚拟机”中字节码编译:是简单的翻译步骤,如果你有写入权限他会把字节码保存在以.pyc为扩展名的文件(编译py源代码得到),保存它是为了实现启动速度优化,下次当Python进行编译时先比较时间戳,如果一样就直接用了,否则就再重新编译源代码。Python虚拟机(PVM):Python Virtual Machine原创 2012-08-19 08:49:26 · 526 阅读 · 0 评论 -
Python 生成矩阵
限定步长,起始数字,然后生成x行,y列的矩阵>>> def range2rect(x,y,start=0,step=1):... N=[]... F=[]... for i in range(x): #等价于for(i=0,i<x,i++)... for j in range(y):... F.append(start)...原创 2012-08-30 10:04:39 · 27268 阅读 · 0 评论 -
Python 中iterator
The two methods correspond to two distinct protocols:1. An object can be iterated over with "for" if it implements__iter__() or __getitem__().如果你想让他能够按照for的形式进行迭代,就需要定以__iter__方法。2. An object can原创 2012-08-29 21:47:26 · 5932 阅读 · 0 评论 -
参数
形参顺序:位置参数(name) ->默认参数(name=value) -> *defs /单个*-> name或name = value,keyword-only -> **defs实参顺序:字面值 -> 关键字形参/*args 它们之间不分前后 -> **args 形参列表中位置形参必须在默认形参前面的原原创 2012-08-28 23:49:42 · 564 阅读 · 0 评论 -
yield / generator
The yield expression is only used when defining a generator function,and can only be used in the body of a function definition. Usingayieldexpression in a function definition is sufficient to caus原创 2012-08-29 21:33:52 · 1397 阅读 · 0 评论 -
While / for 语句
Python语法规则1:语句逐行运行,除非碰见if等控制语句2:块与语句的边界会自动检测,因为它没有大括号之类的东西,所以就是缩进3:复合语句的形式:首句后紧跟“:”,紧接着是缩进语句4:文档字符串!=注释,尽管同样都是被忽略,但是在运行时会自动附加在对象上,可以由文档工具显示。语句分割符Python语句一般是行尾表结束,但当语句太长时,我们可以通过一些方式让他位于原创 2012-08-28 07:03:58 · 634 阅读 · 0 评论 -
iterator/generator 应用举例 Mymap / Myzip
现在我们编写自己的map方法,并且比较他们之间的速度def mymap(func, *seqs): res =[] for args in zip(*seqs): #用的是序列组的迭代器 res.append(func(*args)) #这里面一定要是*args用于解引用,把 re原创 2012-09-01 08:58:33 · 1166 阅读 · 0 评论