Category Archives: python

python学习笔记之字符串

字符串格式化:
format = “hello %s, %s enough for ya?”
values = (‘world’,’hot’)
print format % values
结果:hello world, hot enough for ya?
注:如果不是在命令行执行,把print后面的用括号括起来

与php类似但函数或方法名不一样的地方:
php explode=> python split
php trim => python strip
php implode => python join

python学习笔记之字典

字典是最与php的数组相似的序列结构。python的列表只能是以索引数字开头并且顺序递增的序列。字典则可以是以字母为key的序列。

元组一般用圆括号来表示,如(1,2,3)
列表一般用方括号来表示,如[1,2,3]
而字典(dict)则用大括号来表示,如{‘a’:1,’b’:2,’c’:3}
与php不同,php的key,value是用key=>value来表示,python而是用冒号“:”来分隔。

字典可以使用大括号书写键和值或使用dict函数来创建。
dict函数可以指定两个元组或列表来对应创建字典。如:
items = [(‘name’,’gumby’),(‘age’,’42’)]
d = dict(items)
与列表的区别:
k in d(d为字典),查找的是键,而非value,表达式 v in l(l为列表)则用来查找值,而不是索引。

一些字典方法:

clear 清除字典。“原地操作”,不会返回值,类似于列表的sort方法
copy方法返回一个相同键值对儿的新字典。浅复制。因为值本身就是相同的,而不是副本。
在副本中替换值的时候,原始字典不受影响。但是如果修改了某个值,原始字典也会改变。避免这个问题的一种方法就是使用深度复制(deep copy)。
from copy import deepcopy
deepcopy(d)

d.fromkes方法使用给定的值创建新字典。每个键默认对应的是None
get方法获取一个不存在的键时,不会报错,会返回None
has_key方法相法于表达式k in d
items方法将所有的字母项以列表的方式返回。这些列表中的每一项都来自于(键,值)。但是项在返回时没有特殊的顺序。
iteritmes的方法大致相同,但是会返回一个迭代器对象而不是列表。在很多情况下iteritems效率更高。迭代器,相当于decode json之后的对象,而非数组、
keys方法将字典中的键以列表的形式返回。而iterkeys则返回针对键的迭代器。
pop弹出给定键的值。popitem会弹出最后一个元素(实际上是随机项),但如果想一个接一个地移除并处理字典,popitem效率就会高很多,因为不必先获取字典的键值列表。

values和itervalues方法以列表或迭代器的形式返回字典中的值,返回值的列表可以包含重复项。

python学习笔记之列表和元组

列表和元组的主要区别在于,列表可以修改,而元组不可以修改。也就是说,如果要根据要求来添加元素,那么列表可能会更好用。序列不能修改的时候,使用元组更合适。

序列

索引:索引就是php数组的键值。从0开始。
分片:php的slice,如果number[3:9] 注意,截取的值是从第4个索引开始。
步长:分片的每次操作的步进长度。不可以是0,要以是负数,即从后往前数。

序列相加:使用+号进行序列的连接操作
两种相同类型的序列才能相加。
用一个数字x乘以一个序列会生成一个新的序列,原来的序列会被重复x次。

None是一个python的内建值,它的确切含义是“什么也没有”,有的语言用null。
成员资格:使用in可以检查一个字符串是否存在一个列表或字符串中。
len可以检查列表或字符串的长度。php使用str_len和count来检查。

list函数,根据字符串来创建列表。如list(‘hello’)
注意:不能为列表一个位置不存在的元素进行赋值

append方法用于在列表末尾追加新的对象。
count方法统计某个元素在列表中出现的次数,如x.count(1)
extend方法可以在列表的末尾追加另一个序列中的多个值。
index方法从列表中找出某个值第一个匹配项的索引位置。
insert方法用于将对象插入到列表中。
pop方法从列表中移除数据,默认是最后一个。
remove方法用于移除列表中某个值的第一个匹配项。pop是操作key,remove是操作value
reverse将列表中的元素反向存放。
sort方法排序列表中的元素。
sort方法排序后并不会返回列表。所以要得到一个排序的列表要先将x赋值给y,再对y排序。
sort高级排序提供两个参数,第一个参数是必须指定一个函数在排序过程中使用,第二个是正序倒序的bool值

元组

元组与列表一样,也是一种序列。唯一不同的是元组不能修改。
元组大部分时候是通过圆括号括起来的。如(1,2,3),序列则是通过方括号括起来的。
如果要实现只包括一个值的元组,也必须加一个逗号,如(23,)
tuple函数:以一个序列做为参数并把它转换为元组。
元组的分片还是元组。就像列表的分片还是列表一样。

Macos mamp + django 的mysql配置

前情提要:mamp为macos下的一款php+mysql的集成开发环境。
django使用macos的mamp提供的mysql时,不能设置主机为localhost,那样它会自动寻找/tmp/mysql.sock来进行连接,而mamp的mysql.sock的位置是:
/Applications/MAMP/tmp/mysql/mysql.sock

所以在django的settings.py中,设置host应该设置为:
‘HOST’: ‘/Applications/MAMP/tmp/mysql/mysql.sock’,