离毕业工作还有几个月,本来想早点去公司实习,无奈gb学校不给放。好吧,既然这样,就学门语言。

参考与 http://www.cnblogs.com/vamei ,我是跟着这位博客牛人的博客教程学的,具体的大家可以到这位博主的博客查看。

记得比较零碎,就将练习的小例子的代码以及注释粘了过来,主要是为了防止自己忘记,大家凑活着看吧。

#coding:utf-8
from logging import exception
from xmlrpclib import DateTime
#定义类
class Info():
age=2
class Person(): #括号内的参数代表继承与那个对象,不代表构造方法形参
name='hefei'
age=25
def sayHello(self,content): #成员函数需要包括self参数
print content
def __init__(self,Info): #相当于构造方法,用来在对象创建时,初始化一些属性
self.age=Info.age #类的继承,新建类时括号内写被继承的父类
class American(Person):
shengao=1.88
i=Info()
a=Person(i) #map的赋值,python里面成为字典,无非键值对嘛,就是个map
m={'name':'hefei','age':25}
m.setdefault('shenggao')
m['shenggao']=1.88
for i in m.values():
print i #文件流
f=open('test.txt','r')
content = f.readline()
f.close()
print content #循环语句之几个好用的方法
S = 'abcdefghijk'
for i in range(0,len(S),2): #最后一个参数代表跳几格
print S[i] S = 'abcdefghijk'
for (index,char) in enumerate(S): #在对list或tuple进行迭代时,枚举方法可以获得列表的索引,index
print index
print char #zip,打包,对于相同长度的列表们可以进行打包,以下例为例,打包后的结果为:[(1,'a'),(2,'b'),(3,'c')]
ta=[1,2,3]
tb=['a','b','c']
zipped=zip(ta,tb)
print type(zipped),zipped #unzip
ta1,tb1=zip(*zipped) #*代表解包裹的意思,解包裹就是按照","拆分
print ta1,tb1,type(ta1)
#再次打包,又变回去了,不过类型变了,呵呵,设计的真好
result=zip(ta1,tb1)
print result #循环对象,相当于迭代器,一些方法的返回值就可能是一个循环对象,for循环时,就是调用循环对象的next()方法
f=open('test.txt') #这里的文件对象就是一个循环对象
for line in f:
print line #生成器:自定义迭代对象,每次迭代时,遇到yield返回,下一次迭代时,从上一次yield的地方开始迭代
def gen():
a=1
yield a
a=a+1
yield a
for i in gen():
print i
#表推导,和自定义迭代器一样,有简短的表达式形式,表推导用来快速生成所需的列表,感觉没有多大用途。
L = []
for x in range(10):
L.append(x**2)
print L xl = [1,3,5]
yl = [9,12,13]
L = [ x**2 for (x,y) in zip(xl,yl) if y > 10]
print L
#lambda函数,在面向对象的世界里,函数也是对象
func=lambda x,y:x+y
print func(1,2)
#lambda 表达式等价于常规的方法定义
def func(x,y):
return x+y
print func(2,3)
#几个特殊的方法
#map 函数:返回一个列表,结果为本来列表经方法处理后的列表,返回结果为[3,5]
print map(lambda x:x+1, [2,4])
#reduce方法,迭代的思想,将前一个方法处理后的结果作为后一个处理的参数,返回结果为6
print reduce(lambda x,y:x+y, [1,2,3])
#异常处理
re=iter(range(5)); #使用iter方法定义一个迭代对象
try:
for item in range(10): #迭代10次
print re.next()
except StopIteration:
print 'here is the end ',item
finally:
print 'this is finaly'
#自行抛出一个异常对象,raise关键字
raise StopIteration
#动态类型,引用独立 下例中,a+2了,虽然b的引用指向a 但,b的值不变
#python中对象分为可变和不可变对象,像元组(tuple)和字符串都是不可变对象,其他的是可变对象,这点和java相同
a = 5
b = a
a = a + 2
print 'a=',a,'b=',b
#标准库中的api介绍
print DateTime()
#python深入学习内容
#上下文管理器:定义了文件对象的作用范围,在with 语句之内,虽然f没有手动关闭,但是只要在with语句块之外,对象就自动关闭,其实就是分别执行类内置函数,__enter__和__exit__方法
with open('test.txt','w') as f:
print f.closed
print f.closed
#可以自定义上下文管理器
class Teller(object):
def __enter__(self):
print 'i m come'
def __exit__(self,fexc_type,exc_value,traceback): #这里尼玛不给提示,这里的__exit__方法需要4个参数是必须的
print 'i m out'
with Teller() as teller: # with 语句块内一定要有语句,不然解释不通过
print 'running..'
#函数对象,就相当于java中的内部对象
def out_fun():
def in_fun():
return 2
print in_fun()
out_fun()
#闭包,以下程序运行结果为25,my——line= line_conf()返回一个函数对象,传入5,进行2*5+b的运算,使用的b为外部函数所定义的b的值
#这里的b也称为内部函数对象的环境变量,一个函数对象和他的环境变量集合在一起就叫做闭包,环境变量的取值被放在函数对象的_closure_属性中,该属性是一个元组
#闭包的优势在于减少了函数参数的设定,在"并行运算中有很大的应用"(不是很懂)
def line_conf():
b = 15
def line(x):
return 2*x+b
return line # return a function object b = 5
my_line = line_conf()
print(my_line(5))
print my_line.__closure__[0].cell_contents
#装饰器,就相当于java中的动态代理,修饰原有的方法,让原有的方法得到加强
#定义一个装饰器,装饰器是修饰函数的,故接收的参数也是函数对象,除此之外,装饰器还可以修饰类,代码如下
def decorator(F):
def new_F():
print "这是加强内容"
return F() #这里一定要用F(),不能用F,否则出不了结果,这里体现了闭包的特性,内部函数调用了外部的环境变量
return new_F #返回加工后的函数对象 @decorator
def F():
print "原来有的内容"
F() #装饰器还可以修饰类
def decorator1(aClass):
class newClass:
def __init__(self, age):
self.total_display = 0
self.wrapped = aClass(age)
def display(self):
self.total_display += 1
print("total display", self.total_display)
self.wrapped.display()
return newClass @decorator1
class Bird:
def __init__(self, age):
self.age = age
def display(self):
print("My age is",self.age) eagleLord = Bird(5)
for i in range(3):
eagleLord.display() #使用的一些小技巧
#但写有测试语句的模块被别的模块引入的时候,要想在别的模块中不运行这些测试语句,在别的模块中可以这么写,if __name__=='__main__':测试代码
def localMethod():
print "hello"
if __name__=='__main__':
print 'test content'

未完待续。。

python_基本语法_01的更多相关文章

  1. Delphi_03_Delphi_Object_Pascal_基本语法_01

    这次是一个基本语法的第一部分,包括变量.变量初始化.常量.运算符.字符串等内容. { 本程序演示 Delphi Pascal 的基本语法 1.变量及变量的初始化 2.常量 3.运算符 3. 4. } ...

  2. python_基本语法

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

  3. python_ 基本语法

    一.基础知识: 1.鸡汤 摘抄至 :简明 python 教程 在人生中取得成功,与其说靠天才与机会,不如说靠专注与毅力! Python 特点:简单.易于学习(简单得语法体系).自由且开发.高级语言.跨 ...

  4. python_基础语法

    开始正式接触python的语法: 1. 2.

  5. python_库学习_01

    一.python的库学习之 财经数据接口包 1.安装ThShare 直接pip install tushare 可能会出现缺少依赖库的情况,依次安装,大概有lxml,pandas,bs4,reques ...

  6. Python_正则表达式语法

    1.正则表达式中的操作符: 2.re库的使用: import re #search方法要求只要待匹配的字符串中包含正则表达式中的字符串就可以 match = re.search('python+',' ...

  7. 珍藏版 Python 开发工程师面试试题

    珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...

  8. python_装饰器_语法糖

    什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...

  9. python_语法糖_装饰器

    什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...

随机推荐

  1. #define中 #与##的神奇用法linux学习 (转)

    #define中 #与##的神奇用法linux学习 (转) #define f(a,b) a##b #define d(a) #a #define s(a) d(a) void main( void ...

  2. HBase HFile

    HFile index HFile index, which is proportional to the total number of Data Blocks. The total amount ...

  3. HDOJ的题目分类

    模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 10 ...

  4. HDOJ 1097 A hard puzzle(循环问题)

    Problem Description lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how ...

  5. HDU_2147——组合博弈,转换为P/N图,然后找规律

    Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his mind ...

  6. DLL入门浅析(1)——如何建立DLL

    转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90619.html 初学DLL,结合教程,总结一下自己的所得,希望对DLL初学者们有所帮 ...

  7. C - Courses - hdu 1083(模板)

    一共有N个学生跟P门课程,一个学生可以任意选一 门或多门课,问是否达成: 1.每个学生选的都是不同的课(即不能有两个学生选同一门课) 2.每门课都有一个代表(即P门课都被成功选过) 输入为: P N( ...

  8. Java集合中那些类是线程安全的

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...

  9. struct 结构

    //原始套接字学习笔记之代码结构 /* *host端程序结构 */ #include <> #define .. //主函数 int main() { //建立发送线程 pthread_t ...

  10. linux用户权限相关命令

    1.创建组 groupadd test     修改组 groupmod -n test2 test 将名字改为test2     删除组 groupdel test     查看组 groups r ...