Python官网:http://www.python.org/
Python文档下载地址:www.python.org/doc/
Unix & Linux 平台安装 Python
1.访问http://www.python.org/download/下载
2.如果需要自定义一些选项修改Modules/Setup
3.执行 ./configure 脚本
4.make
5.make install
执行完后,Python会安装在 /usr/local/bin目录中,Python库安装在/usr/local/lib/pythonXX,XX为你使用的Python的版本号。
中文编码
3.0版本前在文件开头加入 # -- coding: UTF-8 -- 或 #coding=utf-8。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print "你好,世界";
编程方式
- 交互式编程
终端输入python即可开启交互式编程
- 脚本式编程
Python文件将以.py为扩展名
test1.py
#coding=UTF-8
print "hello world ,你好 世界"
终端运行
python test1.py
加上路径执行./
test2.py
#!/usr/bin/python
#coding=UTF-8
print "hello world ,你好 世界"
终端执行
./test2.py
标识符
在python里,标识符有字母、数字、下划线组成,但不能以数字开头,并且区分大小写。
以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用"from xxx import *"而导入;
以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。
行和缩进
- 代码模块
学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行
- 多行书写
total = item_one + \
item_two + \
item_three
语句中包含[], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
- 空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
- 同一行中书写多条语句
import sys; x = 'RainDou DDY'; sys.stdout.write(x + '\n')
引号
Python 接收单引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须的相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释
word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""
注释
- 单行注释
Python中用# 作单行注释
- 多行注释
Python用三个单引号(''')或三个双引号(""")作多行注释。
#!/usr/bin/python
#coding=UTF-8
# 第一个注释:test3.py
print "hello world ,你好 世界" # 第二个注释
'''
多行注释1
多行注释2
'''
"""
多行注释3
多行注释4
"""
多个语句构成代码组
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
if expression :
suite
elif expression :
suite
else :
suite
数据类型
- Python不需要类型声明,但必须赋值
#!/usr/bin/python
# -*- coding: UTF-8 -*-
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
print counter
print miles
print name
- 多变量赋值
a = b = 1
c, d, e= 1, 2, "john"
五个标准数据类型
Numbers(数字)
Python支持四种不同的数字类型:int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)
String(字符串)
字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
变量[头下标:尾下标]截取子字符串,不包括上边界
加号(+)是字符串连接运算符,星号(*)是重复操作
s1 = 'ilovepython'
s2 = s1[1:5] # s2 = 'love'
str = 'HelloWorld!'
print str # 输出完整字符串:HelloWorld!
print str[0] # 输出字符串中的第一个字符:H
print str[2:5] # 输出字符串中第三个至第五个之间的字符串:llo
print str[2:] # 输出从第三个字符开始的字符串:lloWorld!
print str * 2 # 输出字符串两次:HelloWorld!HelloWorld!
print str + "TEST" # 输出连接的字符串:HelloWorld!TEST
- List(列表)
List(列表)是Python中使用最频繁的数据类型。
列表用[ ]标识。是python最通用的复合数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)
列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。
加号(+)是列表连接运算符,星号(*)是重复操作
list = [ 'RainDou', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个的元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
输出
['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
- Tuple(元组)
元组是另一个数据类型,类似于List(列表)。
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第三个的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
输出
('runoob', 786, 2.23, 'john', 70.2)
runoob
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000 # 元组中是非法应用
list[2] = 1000 # 列表中是合法应用
- Dictionary(字典)
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
输出
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
- 数据类型转换
int(x [,base]) | 将x转换为一个整数 |
---|---|
long(x [,base] ) | 将x转换为一个长整数 |
float(x) | 将x转换到一个浮点数 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
unichr(x) | 将一个整数转换为Unicode字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
运算符
- 算数运算符
以下假设变量a为10,变量b为20:
+ | 加 | a + b 输出结果 30 |
---|---|---|
- | 减 | a - b 输出结果 -10 |
* | 乘 | a * b 输出结果 200 |
/ | 除 | b / a 输出结果 2 |
% | 模 | b % a 输出结果 0 |
** | 幂 | a**b 为10的20次方 |
// | 取整除(返回商的整数部分) | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
- 比较运算符
以下假设变量a为10,变量b为20:
| == | 等于 | 比较对象是否相等 | (a == b) 返回 False |
|:------:|:------:|:------:|
| != | 不等于 | 比较两个对象是否不相等 | (a != b) 返回 true |
| <> | 不等于 | 比较两个对象是否不相等 | (a <> b) 返回 true。3.0后移除 |
| > | 大于 | 返回x是否大于y | (a > b) 返回 False |
| < | 小于 | 返回x是否小于y | (a < b) 返回 true |
| >= | 大于等于 | 返回x是否大于等于y | (a >= b) 返回 False |
| <= | 小于等于 | 返回x是否小于等于y | (a <= b) 返回 true |
- 赋值运算符
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
- 位运算符
a = 0011 1100 | b = 0000 1101 | |
---|---|---|
& | 位与 | a&b = 0000 1100 |
| | 位或 | a | b = 0011 1101 |
^ | 位异或 | a^b = 0011 0001 |
~ | 位取反 | ~a = 1100 0011 |
<< | 左移 | a<<1 = 0111 1000 |
>> | 右移 | a>>1 = 0001 1110 |
- 逻辑运算符
and | 布尔"与" | (a and b) 返回 20 |
---|---|---|
or | 布尔"或" | (a or b) 返回 10 |
not | 布尔"非" | not(a and b) 返回 False |
- 成员运算符
包括字符串,列表或元组等
in | 在指定序列中找到值返回True,否则返回False |
---|---|
not in | 在指定序列中没有找到值返回True,否则返回False |
a = 10
b = 20
list = [1, 2, 3, 4, 10];
if (a in list) :
print ("a=10 在list中")
else:
print ("a=20不在list中")
if (b in list) :
print ("b=20 在list中")
else :
print ("b=20不在list中")
运行结果
a=10 在list中
b=20不在list中
- 身份运算符
身份运算符用于比较两个对象的存储单元
is | 判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , is 返回结果 1 |
---|---|---|
is not | 判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1 |
c = 20
d = 20
e = 30;
if (c is d) :
print ("c 和 d 有相同的标识")
else :
print ("c 和 d 没相同的标识")
if (id(c) is not id(d)) :
print ("c 和 d 有相同的标识")
else :
print ("c 和 d 没相同的标识")
if (d is e) :
print ("d 和 e 有相同的标识")
else :
print ("d 和 e 没相同的标识")
运行结果
c 和 d 有相同的标识
c 和 d 有相同的标识
d 和 e 没相同的标识
- 运算符优先级
** | 指数 (最高优先级) |
---|---|
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
http://www.runoob.com/python/python-install.html