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.stdin
、sys.stdout
和sys.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 = [
2
,
3
,
4
]
listtwo = [
2
*i
for
i
in
listone
if
i >
2
]
print
listtwo
很方便啊……更多细节问题,待查……
变参函数:
def powersum(power, *args):
*:之后内容默认为列表
如果是**,则为dict(键值对)
这个也很方便。
lambda:至少目前对其无爱。
exec语句用来执行储存在字符串或文件中的Python语句。
eval语句用来计算存储在字符串中的有效Python(数学?)表达式。
repr函数用来取得对象的规范字符串表示。……这个很奇妙,没怎么用过。 通过定义类的__repr__
方法来控制你的对象在被repr
函数调用的时候返回的内容。
ok,python的基本语法应该差不多了。接下来就是写代码(Yay!)和读文档了
哇哈哈哈
应该会很好玩。