闲来无事,xiaoxiao Python,跟上时代的步伐
文件首行加入了
#!-*- coding:utf-8 -*-
或者
#coding=utf-8
如果要在python2.x的文件中使用中文,则必须在第一行或者第二行写上注释,否则python2.x会默认使用ASCII编码。千万不能在第二种写法的等号两边加空格
print "你还好吗?";
在windows cmd命令窗口下执行python test.py,输出还是乱码。 这已经不是python的问题了,是windows cmd命令窗口的字符编码问题。
#coding=utf-8
print u"你还好吗?";
以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
文件类型
1 Python的文件类型分为3种,即源代码、字节代码和优化代码。这些都可以直接运行,不需要进行编译或连接。
2 源代码以.py为扩展名,由python来负责解释;
3 源文件经过编译后生成扩展名为.pyc的文件,即编译过的字节文件。这种文件不能使用文本编辑器修改。pyc文件是和平台无关的,可以在大部分操作系统上运行。如下语句可以用来产生pyc文件:
import py_compile py_compile.compile(‘hello.py’)
4 经过优化的源文件会以.pyo为后缀,即优化代码。它也不能直接用文本编辑器修改,如下命令可用来生成pyo文件:
python -O -m py_complie hello.py
数据类型
1 python的数字类型分为整型、长整型、浮点型、布尔型、复数类型。
2 python没有字符类型
3 python内部没有普通类型,任何类型都是对象。
4 如果需要查看变量的类型,可以使用type类,该类可以返回变量的类型或创建一个新的类型。
5 python有3种表示字符串类型的方式,即单引号、双引号、三引号。单引号和双引号的作用是相同的。python程序员更喜欢用单引号,C/Java程序员则习惯使用双引号表示字符串。三引号中可以输入单引号、双引号或换行等字符。
运算符和表达式
1 python不支持自增运算符和自减运算符。例如i++/i-是错误的,但i+=1是可以的。
2 1/2在python2.5之前会等于0.5,在python2.5之后会等于0。
3 不等于为!=或<>
4 等于用==表示
5 逻辑表达式中and表示逻辑与,or表示逻辑或,not表示逻辑非
控制语句
条件语句:
if (表达式) : 语句1 elif (表达式) : 语句2 … elif (表达式) : 语句n else : 语句m
python本身没有switch语句
循环语句:
while(表达式) : … else : …
循环语句:
for 变量 in 集合 : … else : …
python不支持类似c的for(i=0;i<5;i++)这样的循环语句,但可以借助range模拟:
for x in range(0,5,2): print x
列表
list = ['abc', 123, 4.12, 'dsd']
tinylist = [123, 'john']
print list[0:3] * 2
print list[0:3] + tinylist # 打印组合的元组
结果
['abc', 123, 4.12, 'abc', 123, 4.12]
['abc', 123, 4.12, 123, 'john']
元组
元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
tuple = ('runoob', 786, 2.23, 'john', 70.2)
tinytuple = (123, 'john')
print tuple[1]
print tuple[3:]*2
print tuple + tinytuple
结果
786
('john', 70.2, 'john', 70.2)
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
dict = {'name': 'john','code':6734, 'dept': 'sales', 2 : 1213}
print dict[2]
print dict
print dict.keys()
print dict.values()
结果
1213
{'dept': 'sales', 2: 1213, 'code': 6734, 'name': 'john'}
['dept', 2, 'code', 'name']
['sales', 1213, 6734, 'john']
# 类型转换
int(3.6)
int('12', 16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
int('0xa', 16)
long('123')
float(123)
结果
3
18
10
123L
123.0
complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。
>>>complex(1, 2) (1 + 2j) >>> complex(1) # 数字 (1 + 0j)
>>> complex("1") # 当做字符串处理 (1 + 0j)
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
>>> complex("1+2j") (1 + 2j)
>>>s = 'RUNOOB'
>>> str(s) #str() 函数将对象转化为适于人阅读的形式。 'RUNOOB'
>>> repr(s) #repr() 函数将对象转化为供解释器读取的形式。 "'RUNOOB'"
>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};
>>> str(dict) "{'google': 'google.com', 'runoob': 'runoob.com'}"
>>> repr(dict) "{'google': 'google.com', 'runoob': 'runoob.com'}"
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
>>>x = 7
>>> eval( '3 * x' ) 21
>>> eval('pow(2,-2)') #次方 0.25
>>> eval('2 + 2')
结果:4
tuple() 函数将列表转换为元组。
>>>tuple([1,2,3,4]) (1, 2, 3, 4)
>>> tuple({1:2,3:4}) #针对字典 会返回字典的key组成的tuple (1, 3)
list() 方法用于将元组转换为列表。
aTuple = (123, 'xyz', 'zara', 'abc');
aList = list(aTuple)
print "列表元素 : ", aList
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
>>>x = set('runoob')
>>> y = set('google')
>>> x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除
>>> x & y # 交集
set(['o'])
>>> x | y # 并集
set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
>>> x - y # 差集
set(['r', 'b', 'u', 'n'])
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
dict() 函数用于创建一个字典。
>>> dict(a='1',b='ad',c=123) # 传入关键字
{'a': '1', 'c': 123, 'b': 'ad'}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
>>>a = frozenset(range(10)) # 生成一个新的不可变集合
>>> a frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = frozenset('runoob')
>>> b frozenset(['b', 'r', 'u', 'o', 'n']) # 创建不可变集合