据百度百科所载:python是一种面向对象,解释型,动态数据类型计算机程序设计语言,由Guido van Rossum在1989年发行。python简洁清晰,很方便的与其他语言结合在一起。openstack,谷歌部分爬虫组件,NASA和很多数据处理使用的都是python。python与C/C++语句块的设计思想不同,它的语法强制缩进。另外python也支持了matlab的很多计算方法,比如numpy,matplotlib,而且它是完全免费的吆。
还是谈一下python的诞生吧,作为Monty Python喜剧的忠实粉丝,Guido van Rossum取了python作为新语言的名字。1989年Guido van Rossum吸收ABC语言的设计思想,开发了python,并且将python彻底开源。它从ABC发展而来,又吸收了shell和C的一些习惯。Python是一个完全面向对象的语言,追求简洁高效。
本文整理了一些python的基础知识,最后也整理了一些python常见的面试题目。本文的python的具体目录如下:
一、python的变量、数据类型和表达式
二、python的语法
三、python的流程控制
四、python的函数
五、python的包与模块
六、python的正则表达式
七、python的文件与目录
八、python的面向对象
九、python的异常处理
十、python的常见面试题目
python的安装和使用请参考https://www.python.org/。python程序既可以解释执行,在追求效率的地方,也可以编译得到python程序的执行文件。具体的编译方法有两种,例如对如下的代码进行编译:
print ‘Hello World’
1. 在python的命令行>>>下:
>>>import py_compile
>>>py_compile.compile("test.py")
2. 在shell终端输入:
# python -O -m py_compile test.py
然后输入如下指令执行:# python test.pyc
一、python的变量、数据类型和表达式:
1. python运算符,python的运算符中指数和lambda函数需要注意:
运算符 | 描述 |
x+y,x-y | 加、减,“+”号可重载为连接符 |
x*y,x**y,x/y,x%y | 相乘、求平方、相除、求余,“*”号可重载为重复,“%”号可重载为格式化 |
<,<=,>,>=,==,<>,!= | 比较运算符 |
+=,-=,*=,/=,%=,**=,<<=,>>=,&=,^=,|= | 自变运算符 |
x|y | 按位或 |
x^y | 按位异或 |
x&y | 按位与 |
~x | 按位取反 |
x<<,x>>y | x向左或向右移y位 |
is, is not | 等同测试 |
in, not in | 是否为成员测试 |
or,and,not | 逻辑运算符 |
x[i],x[i:j],x.y,x(...) | 索引,分片,限定引用,函数调用 |
(...),[...],{...},'...' | 元组,列表,字典,转化为字符串 |
二、python的变量:
python的变量不需要声明,并且支持布尔型、整型、浮点型、字符串、列表、元组、集合、字典等。具体的示例代码如下:
请注意tuple与list的区别,tuple,list,dic的声明分别为(),[],{},tuple为不可变元组,list可以动态删除和插入(其实我感觉list好像hash map呀)。
#boolean True/False
data=True
#int float string
data=1234
data=1234L
data=1234.0
data='123456789'
copy=data[-1]
copy=data[1:]
copy=data[-1:2:-1] #when using reversing [end:start:-1]
copy=copy+data
memAddr=id(data) #memAddr gets memory address of data
type(data); # get data's type
cmp(data,copy);
#tuple
data=('test',22, 90)
max(data);
min(data);
name, age, score = data
data[2]
#list
data=['test',22,90]
#print data[2]
data.append(8888)
data.remove(data[2])
del(data[0])
for item in data:
print item
"check" in data;
item = ['name', 'age', 'gender']
value = ['xiaoyi', '25', 'male']
zip(item, value) # zip() will produce a new list:
dic = {'name': 'xiaoyi', 'age': 25, 'gender': 'male'}
print dic['name']
dic['append']='append_data';
dic.pop('append')
ddict = {}.fromkeys(('x', 'y'), -1) # built-in mode, default value is the same which is none
三、python流程控制代码:
python流程控制的语句有 if, for, while。
1. 如果for循环中没有执行break,那么将会之行for后面的else语句。
<span style="color:#000000;">from __<em>future</em>__ <em>import</em> </span><em><span style="color:#000000;">division
#concrete division</span></em>
data=21
if data<20:
print "small"
elif data<30:
print "middle"
else:
print "big"
if 1<2 and 2<3 or 2<4 and not 0:
print 'yeah'
for item in "abcdef":
print item
for item in range(1,10,2):
print item
while True:
print 'Hello'
x=raw_input('Please input set value for x, or q to exit')
if x == 'q':
break
def add(x,y):
return x+y;
def sub(x,y):
return x-y;
operator={"+":add,"-":sub}
operator.get("+")(1,2)
operator.get("-")(1,2)
def cal(x, o, y):
print operator.get(o)(x,y)
cal(2,"+",3)
for item in range(0,100):
if(item==0):
break;
else:
print "No break";
四、python的函数
python的函数传参数的时候注意tuple与dic作为参数时的修饰,分别为*和**。lambda函数用来定义简单的单行函数:
def fun(x, *args, **kwargs)://多变量,元祖和字典
print x
print args
print kwargs
fun(1, 2, 3, 4, y = 10, z = 12) # x = 1, args = (2, 3, 4), kwargs = {'y': 10, 'z': 12}
fun = lambda x,y : x*y # fun is a object of function class
print fun(2, 3)
def recursion(n): //递归
if n > 1:
return n * recursion(n-1)
else:
return n
print recursion(5);
if __name__=="__main__"://这是python的入口函数
五、python的包与模版
python可以很方便的直接包含当前目录下的模版,而使用包时,我们可以把多个py文件放到一个文件夹下,并且创建__init__.py文件,然后import 包名.模版名。
#cal.py
def add( x, y):
return x+y
if __name__=="__main__"://注意这是制定默认的python入口函数
r=add(2,3)
print r
#b.py
import cal
result=cal.add(1,2)
print result
六、python的正则表达式
1. python 正则表达式部分标识符说明:[]任意一个字符,[^abc]表示补集,^可以匹配行首,$可以匹配行尾,-表示范围,\表示转义符,{8}表示前面的规则出现8次,+表示出现一次或者多次,*表示出现零次或者多次,?表示非贪婪匹配,name_re = re.compile(r"xiaoyi", re.I)表示不分大小写,w代表任意一个字符。
2. 常用函数:
search#返回第一个字符或者空。
findall()#返回一个满足正则的迭代器。
re.sub(reg, 'dest', target)#替换。
dir(re)#打印re模块的属性和方法。
re.M多行匹配:
匹配串里面添加()时,匹配结果优先返回括号里面的内容。
str = """
hello mystr
mystr hello
hello test
mystr hello
"""
re.findall(r'mystr', str, re.M)
re.findall(r'm(.+)r', str, re)
七、python的面向对象
九、异常处理
try:
python sql;
except Exception as inst:
do execption process;
参考文献:
[1]. python中的dic详解: http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html
[2]. python基础学习笔记:http://blog.csdn.net/zouxy09/article/details/16920541
[3]. python运算符:http://blog.163.com/zhulp0372@yeah/blog/static/11589447920117124348435/
[4]. python装饰器学习入门:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html
[5]. python 在线编程实验室:http://www.pythoner.cn/labs/
[8]. python 文档: https://www.python.org/doc/