零碎python学习笔记(二) - 20121205

Continue.

元组:一个空的元组由一对空的圆括号组成,如myempty = ()。然而,含有单个元素的元组就不那么简单了。你必须在第一个(唯一一个)项目后跟一个逗号

嗯……根据定义,元组和字符串一样是 不可变的 即你不能修改元组

但是这应该只是限制它的地址/reference不变。比如:

 

c = [1,2,3]

x = (c, [3,4,5])

print x

// output: ([1, 2, 3], [3, 4, 5])

c[2] =5

print x

// output: ([1, 2, 5], [3, 4, 5])

 

字典:键值对无序。如何排序?另:如何对list按不同标准排序?To Be Continued ...

删除键值对:del dictname[key]

这是否意味着如果要删除所有值=某个值的键值对需要手写代码遍历dict?嗯……

 

slicing切片应用:

用来进行list拷贝构造(而非简单引用同一个object)

list1 = list2

// list1和list2指向同一object

list1 = list2[:]

// list1和list2指向相同值的不同object

但是应该有更正式一些的语法?否则不是序列的object要进行拷贝构造怎么办

嗯……

 

突然想到 print 都是直接打印一行,那么要在同一行内陆续打印内容应该如何弄?待查。

 

os.sep

 

对于class的成员函数,定义的第一个参数始终是self。似乎有些累赘……?

是否能定义static成员?待查。

__init__:构造函数。那么定义一个接受相同类型的变量的构造函数,是否可以称为拷贝构造函数?

 

到这里想起,函数定义中参数不需声明类型,那么如何在同一函数中根据不同输入参数类型来进行不同操作?嗯……待查。

 

解构函数似乎会被自动调用?何时会被自动调用?待查。

用del 指令保证其被调用。

 

python似乎支持多重继承。那么如何处理二义性的问题?是否也有类似虚拟继承的机制?嗯……待查。

在类的继承中,函数重写的细节如何?待查。

 

Python提供一个标准的模块,称为pickle。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象。

这个不错,类似java中的serializable。

还有另一个模块称为cPickle,它的功能和pickle模块完全相同,只不过它是用C语言编写的,因此要快得多(pickle快1000倍)。

哇哈哈哈C语言V5!C和C++还是我的最爱啊。

那么这个文件是文本文件还是二进制文件呢?待查………………

 

另,在python中如何处理复杂些的二进制内容比如声音或者图像?待查……也许会很慢?

 

异常处理……这里《简明python教程(a byte of python)》中译本有一个错误:...try..catch块...,应为try..except块。

那么python里是否有类似java中finally block的概念呢?待查……更新:有!

 

抛出异常:用raise

捕获异常变量:教程中用逗号:

...

except ShortInputException, x: //捕获ShortInputException类型的变量,命名为x

...

测试之,通过

但是实在不喜欢这么写,语义上不太明确。另一教程用 as ,似乎更好:

...

except ShortInputException as x:

...

这样就明确多了。

 

标准库:

对于有经验的程序员,sys模块中其他令人感兴趣的项目有sys.stdinsys.stdoutsys.stderr它们分别对应你的程序的标准输入、标准输出和标准错误流。

 

 

名称说明
__init__(self,...)这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self)恰好在对象要被删除之前调用。
__str__(self)在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other)当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
__getitem__(self,key)使用x[key]索引操作符的时候调用。
__len__(self)对序列对象使用内建的len()函数的时候调用。


构造函数和运算符重载

 

如果你的语句块只包含一句语句,那么你可以在条件语句或循环语句的同一行指明它。下面这个例子清晰地说明了这一点:

>>> flag = True
>>> if flag: print 'Yes'
...
Yes


 

不一定只能写一条语句。经测可在一行中写多条语句,用分号隔开,如:

flag = True

if flag: print 'Yes';print 'True';print 'OK'

则三条语句都会执行;若flag为False则三条语句都不会执行

 

列表综合:

listone = [234]
listtwo = [2*i for in listone if i > 2]
print listtwo


 

很方便啊……更多细节问题,待查……

 

变参函数:

def powersum(power, *args):

*:之后内容默认为列表

如果是**,则为dict(键值对)

这个也很方便。

 

lambda:至少目前对其无爱。

 

exec语句用来执行储存在字符串或文件中的Python语句。

eval语句用来计算存储在字符串中的有效Python(数学?)表达式。

 

repr函数用来取得对象的规范字符串表示。……这个很奇妙,没怎么用过。 通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。

 

 

ok,python的基本语法应该差不多了。接下来就是写代码(Yay!)和读文档了

哇哈哈哈

应该会很好玩。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值