计算机语言排行:
2014年:
http://digi.163.com/14/1208/11/ACUIVI9Q00162OUT.html
2015年:
http://digi.163.com/15/1109/22/B80U542L00162OUT.html
一、python内部代码执行过程|
python文件,以.py结尾,首先指定解释器,有中文时候,要在第二行指定字符集.
模块:
内置模块
类库
自定义模块
二、解释器
#!/usr/bin/env python
C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
python:代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
Python的运行速度相较与C,绝逼是慢了
三、编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定现有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
unicode是万国码,要经过encode转换成编码utf-8或者gbk
uft-8和gbk需要解码decode,转换成unicode.
四、模块
Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:
Python内部提供的模块
业内开源的模块
程序员自己开发的模块
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
五、变量的赋值
name1 = "wang"
name2 = "liu"
以上赋值会在内存中各开辟一块内存空间
name1 = "zhang"
name2 = name1
以上赋值会在内存中只开辟一块内存空间
a=4
b=9
a,b=b,a
print a,b
交差赋值
六、输入
name = raw_input("请输入用户名:")
raw_input()函数输入的是字符串类型
input()函数输入的是整数类型
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")
七、流程控制和缩进
流程控制语句有:
if判断
for循环:
包括范围循环和循环一个序列。
while条件循环:
可以设置一个条件,比如True,为死循环。
或者a为一个变量,当a大于一个数值时结束循环。
缩进:每一个流程控制语句都是靠缩进来形成语句块。因此它没有结束符,不需要大括号{}
八、基本数据类型
1、数字
包括整形,int float complex
2、布尔值
真或假
1 或 0
布尔类型中,以下都会被识别为false:
False None 0 '' () [] {}
0和空字符,空元组,空列表,空字典,都会被识别为False
3、字符串
字符串拼接可以用两种办法:
第一种是用+号连接,比如
name = 'LiFeng'
age = 19
print "I am is" + name +", "+"my age is" + age
如果要把字符串和变量连起来需要用+号,但是每用一次+号,就需要在内存中重新开辟一块空间,因此非常浪费资源,一般不推荐使用此种方法
第二种是字符串格式化:
格式化字符串也有两种方法,第1种是使用%s 或 %d
print "your information:"
name = raw_input('NAME: ')
age = int(raw_input('Age: '))
sex = raw_input('Sex: ')
job = raw_input('Job: ')
print '--------------------------'
print type(age)
print '''\tName: %s
\tAge: %d
\tSex: %s
\tJob: %s ''' % (name,age,sex,job)
提示:因为上面的age变量被int()引用成了数字,因此下面可以用age可以用%d来调用,如果sex或job来用%d调用就会报错,因为它们不是数字。
第2种:
还可以使用索引来格式化字符串,如:
name = "I am is {0}, age is {1}"
print name.format('Bright',24)
字符串常用功能:
移除空白
分割
长度 len()
索引 index()
切片 [:]
4、列表
创建列表:
name_list = ['alex', 'seven', 'eric']
或
name_list = list(['alex', 'seven', 'eric'])
基本操作:
索引
切片
追加
删除
长度
切片
循环
包含
5、元祖
创建元祖:
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
基本操作:
索引
切片
循环
长度
包含
6、字典(无序)
创建字典:
person = {"name": "mr.wu", 'age': 18}
或
person = dict({"name": "mr.wu", 'age': 18})
常用操作:
索引
新增
删除
键、值、键值对
循环
长度
PS:循环,range,continue 和 break
九、运算
Python算术运算符
运算符 描述 实例
+ 加 - 两个对象相加 a + b 输出结果 30
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ 除 - x除以y b / a 输出结果 2
% 取模 - 返回除法的余数 b % a 输出结果 0
** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
// 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
Python比较运算符
运算符 描述 实例
== 等于 - 比较对象是否相等 (a == b) 返回 False。
!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 true.
<> 不等于 - 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 != 。
> 大于 - 返回x是否大于y (a > b) 返回 False。
< 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 (a < b) 返回 true。
>= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 true。
Python赋值运算符
运算符 描述 实例
= 简单的赋值运算符 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
Python逻辑运算符
运算符 描述 实例
and 布尔"与" - 如果x为False,x and y返回False,否则它返回y的计算值。 (a and b) 返回 true。
or 布尔"或" - 如果x是True,它返回True,否则它返回y的计算值。 (a or b) 返回 true。
not 布尔"非" - 如果x为True,返回False。如果x为False,它返回True。 not(a and b) 返回 false。
Python位运算符
运算符 描述 实例
& 按位与运算符 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符 a >> 2 输出结果 15 ,二进制解释: 0000 1111
Python成员运算符
运算符 描述 实例
in 如果在指定的序列中找到值返回True,否则返回False。 x 在 y序列中 , 如果x在y序列中返回True。
not in 如果在指定的序列中没有找到值返回True,否则返回False。 x 不在 y序列中 , 如果x不在y序列中返回True。
Python身份运算符
运算符 描述 实例
is is是判断两个标识符是不是引用自一个对象 x is y, 如果 id(x) 等于 id(y) , is 返回结果 1
is not is not是判断两个标识符是不是引用自不同对象 x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1
十、 文本的基本操作
打开文件:
file_obj = file("文件路径","模式")
打开文件的模式有:
r,以只读方式打开文件
w,打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
w+,打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
读取文件的内容:
# 一次性加载所有内容到内存
obj.read()
# 一次性加载所有内容到内存,并根据行分割成字符串
obj.readlines()
# 每次仅读取一行数据
for line in obj:
print line
写文件的内容:
obj.write('内容')
关闭文件句柄:
obj.close()
本文出自 “Linux天地” 博客,转载请与作者联系!