您的位置:首页 > 编程语言 > Python开发

python学习(2)基本语法

2016-02-29 13:31 549 查看
——Python的设计哲学是“优雅”、“明确”、“简单”

推荐的IDE:pycharm python版本2.7



1.数据类型:

(1)整数、浮点数与C++一样,其运算也是一样。

(2)字符串:“”或’’括起来的文本,对特殊字符,可以用 \ 进行转义。可以用 r'...' 和r'''...'''转义多个特殊字符,后者对段落有效。以Unicode表示的字符串用 u'...' 表示,不加u中文不能正常显示。同样有u'''...''',甚至组合为ur'''...'''。



可以在第一行添加注释

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。



(3)布尔值:用True和False表示(注意大小写),可以用and、or和not运算。



Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True。



(4)空值:None

(5)List:一种有序的集合,可以随时添加和删除其中的元素。构造很简单,直接用 [ ] 就可以了,里面的元素也不要求类型相同,超级自由的,像这样:

my_list = ['you', True, 233]

或是这样

empty_list = []

我们可以直接用print就把整个list打印出来,超级方便!

而且还可以用下标访问,跟数组一样:L[1],倒序访问也可以!!!L[-1]我的天呐!

插入:有两种方法:L.append(元素)追加元素到末尾,L.insert(0,元素)插入元素到0位置,其他元素顺势往后移。

删除:L.pop(),删掉最后一个,L.pop(2)删掉位置2的元素。

替换:L[0]=元素,直接替换0位置的元素。

(6)tuple(元组):一旦创建就不能修改。创建方式是这样的:

t = ('元素1', '元素2', '元素3') 或是 t=(元素,)——单元素tuple需要避免歧义。

tuple里面嵌套list也是可以的:

t = ('a', 'b', ['A', 'B'])

(7)dict:表示映射关系的字典,用 {} 表示,花括号里是key:value这样的对应关系。

len(d)可以用来求字典的大小。要注意key是不可变得类型,如字符串、整数、浮点数。

访问dict里面的元素:d[key],但要知道这个key值是否存在,避免发生错误。判断方法如下:

1. if ‘key’ in d:

2. d.get(‘key’),存在返回value,不存在返回None

d[key]=value语句可以用于添加新的映射,也可以用于修改原来的映射。

(8)set:set里面的元素不会有重复,而且是无序的。创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素。

s = set(['元素1', '元素2', '元素3'])

用in操作符判断一个元素是否在set中。

s.add(元素)和s.remove(元素)可以用于在set中添加和删除元素。删除时需注意判断元素是否在set中,否则会报错。





2.变量:

变量的命名规则:大小写英文、数字和下划线(_)的组合,且不能用数字开头。

python是动态语言,变量本身的类型是不固定的!



3.输出:

print语句,可以连多个字符串,用“,”隔开,在输出中会显示为空格。



4.注释:

以 # 开头,至行尾都是注释





5.条件判断与循环:

Python代码的缩进规则:具有相同缩进的代码被视为代码块。缩进据说用4个空格比较好。



(1)if语句:

if+表达式+:



(2)if-else语句:

if+表达式+:

else:



(3)if-elif-else语句:

if+表达式+:

elif+表达式+:

else:



(4)for循环:

可以用来遍历list、tuple、dict和set里的元素:

L = ['Adam', 'Lisa', 'Bart']

for name in L:

print name



(5)while循环:

While+表达式+:



(6)break跳出循环:

再循环中可以使用break跳出循环。



(7)continue跳出本次循环,继续以后的循环:





6.函数

调用:方法和C++一样,像:abs(-1)、cmp(x,y)、int(‘123’)、str(123)。(后两个为类型转换),zip()函数可以把两个list变成一个list:

>>> zip([10, 20, 30], ['A', 'B', 'C'])

[(10, 'A'), (20, 'B'), (30, 'C')]

编写:用def语句,后接函数名、括号、参数和冒号,再编写函数体,里面可以包含return语句,当然也可以没有,这时会返回None。

注意python的函数是可以返回多个值的,实际上这里返回的是一个tuple。像下面这段代码:

import math

def move(x, y, step, angle):

nx = x + step * math.cos(angle)

ny = y - step * math.sin(angle)

return nx, ny

递归函数、默认参数和C++的差不多。

可变参数:参数名前面加一个*,就可以传入0个、1个或多个参数。其实这里也是一个tuple。看下面求平均值的一段代码:

def average(*args):

ave=0.0

ji=0.0

for i in args:

ji=ji+1

ave+=i

if ji!=0:

ave=ave/ji

return ave



print average()

print average(1, 2)

print average(1, 2, 2, 3, 4)

关键字参数:允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name, age, **kw):

print 'name:', name, 'age:', age, 'other:', kw

>>> person(Mike, 20)

name: Mike age: 20 other: {}

>>> person('Sam', 15, city=’Guangdong’)

name: Sam age: 15 other: {'city': ’Guangdong’}

>>> person(‘Allen’, 45, gender='M', job='Player')

name: Allen age: 45 other: {'gender': 'M', 'job': ‘Player’}



7.切片(Slice)

,可以对list和tuple甚至字符串进行切片,看下面几个例子就明白了:

L[0:3]:表示从0开始的3个元素

L[:3]:表示从0开始的3个元素

L[:]:表示从头到尾

L[::2]:第三个参数表示每两个元素取一个

倒序也是可以的!L[-2:]:表示从倒数第二个到末尾的元素



8.特殊的遍历

(1)enumerate() 函数,可以在循环中同时绑定元素下标和元素,实际上是把元素下标和元素组成tuple中的映射。

看下面代码:

>>> L = ['A', 'B', 'C', 'D']

>>> for index, name in enumerate(L):

... print index, '-', name

...

0 - A

1 - B

2 - C

3 - D

(2)dict的遍历:

1.直接遍历时遍历的是dict的key,像下面的代码:

for key in d:

print key+':',d[key]

2.若想要遍历value,方法有两种:

一种是用values()方法:

for v in d.values():

print v

另一种是用 itervalues() 方法(更省内存):

for v in d.itervalues():

print v

3.同时遍历,我们有时需要同时遍历dict的key和value,我们有items()方法和iteritems()方法,后者不占用额外的内存。看下面的代码:

>>> for key, value in d.items():

print key, ':', value





9.生成列表

列表生成式可以用简洁的代码生成list。代码例子像下面这样:

>>> [x * x for x in range(1, 11) if x % 2 == 0]

[4, 16, 36, 64, 100]

当然多层嵌套也是可以的:

>>> [m + n for m in 'ABC' for n in '123']

['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']



10.生成器

当然有些时候我们只需要按一定规则生成的元素,而不需要把所有元素列出一个list。这个时候我们就可以用生成器(generator)。

我们用 () 创建,像这样: g = (x * x for x in range(10)),我们可以一直用next()方法调用生成的元素,当然用一个for循环会显得理智得多。

当函数返回结果用yield语句时,它其实也是一个生成器。

写文章的时候刚刚接到消息,小李子拿奥斯卡了,嗷嗷~,小李子你不是一个人在拿奖
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: