Python

Python入门基础笔记

2018-09-04  本文已影响12人  046ef6b0df68

文|Seraph

一 前言

  1. 运行速度的瓶颈往往不在于使用python语言开发,而在于数据库的操作和网络调用。
  2. Python源码不能加密
  3. 很多库对python3.3的支持不是很好,所以常用Python2.7开发

二 Python变量和数据类型

  1. print会依次打印每个字符,遇到逗号“,”会输出一个空格
    print 'xx','xx'

  2. '#' 注释

  3. 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
    Python是动态语言,C++、JAVA是静态语言。

  4. 赋值(引用赋值)

a = 'ABC'
b = a
a = 'XYZ'

执行a = 'ABC',解释器创建了字符串 'ABC'和变量 a,并把a指向 'ABC':

image

执行b = a,解释器创建了变量 b,并把b指向 a 指向的字符串'ABC':

image

执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:

image

所以,最后打印变量b的结果自然是'ABC'了。

  1. raw字符串,不需要转义,但不能表示多行字符串,也不能表示包含',"的字符串
    ''r'(_)/ (_)/'``

  2. 多行字符串使用

'''xxx
xxx
xxx'''
  1. Unicode字符串
    u'''中文'''
    如果中文字符串在Python环境下遇到UnicodeDecodeError,则在文件开头加上如下注释:
    # -- coding: UTF-8 --

  2. Python 把 0、空字符串、None看成False

a = True
print a and 'a=T' or 'a=F'

打印出:a=T

三 List列表

  1. list是数学意义上的集合,是按照顺序排列的,Python是动态语言,所以list中包含的元素不要求都必须同一种类型。
  2. list倒序访问,可以从-1开始表示倒序第一个
  3. 添加新元素list.append('xx'),插入新元素list.insert(n, 'xx')。
  4. 删除元素 list.pop('xx'),返回值为删除的元素,也可按索引删除list.pop(n)。 连续删除时,需要注意索引每次删除,后续的索引会向前移动。

四 Tuple元组

  1. tuple和list非常类似,但是tuple一旦创建完毕,就不能修改了。
    t = ('Adam', 'Lisa', 'Bart')
  2. tuple单个元素创建时,需要在后面添加‘,’,才能表示一个正确的tuple
    t = (1,)
  3. tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。而指向的对象(如list)本身是可以变的。
    t = ('a', 'b', ['A', 'B'])

五 缩进

  1. Python代码的缩进规则:具有相同缩进的代码被视为代码块,4个空格,不要使用tab。
  2. Python交互环境中,退出缩进需要多敲一行回车。

六 控制语句

  1. if
if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
elif age >= 3:
    print 'kid'
else:
    print 'baby'

注意:这一系列条件判断从上至下依次判断,如果某个判断为True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行。

  1. for
L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print name
  1. while
while x < N:
    print x
    x = x + 1

七 dict

  1. 键值对key:value
d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
  1. 访问
print d['Adam']

如果key不存在,dict会直接报错:KeyError
避免KeyError的办法:

if 'Paul' in d:
    print d['Paul']
print d.get('Paul')
#get方法,在key不存在的时候,返回None
  1. 特点
    查找速度快,占用内存大,key不可变且不能重复,key-value序对没有顺序

八 set

  1. 创建,调用set(),并传入一个list
    s = set(['A', 'B', 'C'])
  2. 访问
    'Bart' in s
  3. 添加、删除
s.add(x)
s.remove(x)
#删除时,需现判断,否则不存在会报错
  1. 特点
    查找速度更快,key不可变且不能重复,无序

九 函数

  1. 函数就是最基本的一种代码抽象的方式
  2. xrange(1, 101)生成1到100的list
  3. Python的函数返回多值其实就是返回一个tuple
  4. 使用递归函数需要注意防止栈溢出,递归调用次数过多,会导致溢出

十 list切片

  1. 序号从m到n(注意切片不包含n
    L[m:n]
  2. 从头到尾
    L[:]
  3. 从m到n,隔k-1
    L[m:n:k]
  4. 多次切片
    L[m1:n1][m2:n2]

十一 迭代

  1. 迭代与按下标访问数组最大的不同是,后者是一种具体的迭代实现方式,而前者只关心迭代结果。
  2. 迭代是取出元素本身,而不是元素的索引,如想在for循环中拿到索引,可以使用enumerate(),其功能是自动把每个元素变成(index,element)这样的tuple
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
print index, '-', name
  1. zip()函数可以把两个 list 变成一个 list:
zip([10, 20, 30], ['A', 'B', 'C'])
# 结果:[(10, 'A'), (20, 'B'), (30, 'C')]
  1. 迭代dict的value的方法:values(),itervalues()
    两者差别,values()方法实际是把一个dict转换成了包含value的list
    itervalues()方法不会转换,它会在迭代过程中依次从dict中取出dict,所以更省内存

  2. 求列表长度
    len(d)

  3. 迭代dict的key和value:items(),iteritems()

十二 生成列表

1 列表生成式

[x * x for x in range(1, 11)]
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2 复杂生成式
字符串可以通过%进行格式化,用指定的参数代替%s,字符串的join()方法可以把一个list拼接成一个字符串

tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

3 条件过滤

[x * x for x in range(1, 11) if x % 2 == 0]
#[4, 16, 36, 64, 100]

4 多层表达式

 [m + n for m in 'ABC' for n in '123']
#['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

十三 其它

1 判断变量是否是字符串:isinstance(x, str)
2 返回大写字符串:upper()

上一篇下一篇

猜你喜欢

热点阅读