Python头部 #!/usr/bin/python和 #!/usr/bin/env python 的区别

1
#!/usr/bin/env python

这样声明的时候,会去取你机器的 PATH 中指定的第一个 python 来执行你的脚本。

1
#!/usr/bin/python

表示写死了就是要 /usr/bin/python 这个目录下 python 来执行你的脚本。这样写程序的可移植性就差了,如果此路径下python命令不存在就会报错。

所以一般情况还是用第一种写法。

Python中文编码

Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 # coding=utf-8 就行了

1
2
3
4
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

print "Hello,world";

Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。

Python 标识符

  • 在 Python 里,标识符由字母、数字、下划线组成。
  • 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
  • Python 中的标识符是区分大小写的。
  • 以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
  • 以双下划线开头的 foo 代表类的私有成员,以双下划线开头和结尾的 __foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
  • Python 可以同一行显示多条语句,方法是用分号 ; 分开。

多行语句

Python语句中一般以新行作为语句的结束符。

但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下:

1
2
3
4
5
6
7
8
9
10
#! /usr/bin/evn python

my_name = "duan" + \
"mu" + \
"xu"

print my_name

# 输出
duanmuxu

标准数据类型

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

四种数字类型

  • int(有符号整型)
  • long(长整型[也可以代表八进制和十六进制])
  • float(浮点型)
  • complex(复数)

字符串(string)截取

使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#! /usr/bin/evn python
# -*- coding: UTF-8 -*-

str = 'abcdefghijklmn'

print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第六个之间的字符串
print str[2:-2] # 输出字符串中第三个至倒数第三个的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
print str[2::3] # 输出从第三个字符开始,以3为截取步长的字符串


# 执行结果
abcdefghijklmn
a
cde
cdefghijkl
cdefghijklmn
abcdefghijklmnabcdefghijklmn
abcdefghijklmnTEST
cfil

Python列表

  • 列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
  • 列表用 [ ] 标识,是 python 最通用的复合数据类型。
  • 列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

Python 元组

元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表

Python 字典

  • 列表是有序的对象集合,字典是无序的对象集合。

  • 两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

  • 字典用”{ }”标识。字典由索引(key)和它对应的值value组成。

int() 函数

int() 函数用于将一个字符串或数字转换为整型。

1
class int(x, base=10)
  • x – 字符串或数字。
  • base – 进制数,默认十进制。
  • 返回整型数据。

long(x, base)函数也一样

tuple() 函数

将列表转换为元组

1
2
3
4
5
6
7
8
9
10
11
>>>tuple([1,2,3,4])

(1, 2, 3, 4)

>>> tuple({1:2,3:4}) #针对字典 会返回字典的key组成的tuple

(1, 3)

>>> tuple((1,2,3,4)) #元组会返回元组自身

(1, 2, 3, 4)

set() 函数

  • set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等
  • 返回新的集合对象
1
2
3
4
5
6
7
8
9
10
11
12
>>> x=set('1234312')
>>> x
{'1', '3', '2', '4'}
>>> y=set('4567657')
>>> y
{'4', '5', '7', '6'}
>>> x & y # 交集
{'4'}
>>> x | y # 并集
{'4', '7', '6', '2', '1', '3', '5'}
>>> x - y # 差集
{'1', '3', '2'}

chr() 函数、ord() 函数

  • chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
  • ord() 函数以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
1
2
3
4
5
>>> chr(48)
'0'

>>> ord('c')
99

hex() 函数

hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

1
2
3
4
>>> hex(12)
'0xc'
>>> type(hex(12))
<class 'str'>

oct() 函数

oct() 函数将一个整数转换成8进制字符串。

1
2
>>> oct(15)
'017'