python_基本语法_01
离毕业工作还有几个月,本来想早点去公司实习,无奈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的更多相关文章
- Delphi_03_Delphi_Object_Pascal_基本语法_01
这次是一个基本语法的第一部分,包括变量.变量初始化.常量.运算符.字符串等内容. { 本程序演示 Delphi Pascal 的基本语法 1.变量及变量的初始化 2.常量 3.运算符 3. 4. } ...
- python_基本语法
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- python_ 基本语法
一.基础知识: 1.鸡汤 摘抄至 :简明 python 教程 在人生中取得成功,与其说靠天才与机会,不如说靠专注与毅力! Python 特点:简单.易于学习(简单得语法体系).自由且开发.高级语言.跨 ...
- python_基础语法
开始正式接触python的语法: 1. 2.
- python_库学习_01
一.python的库学习之 财经数据接口包 1.安装ThShare 直接pip install tushare 可能会出现缺少依赖库的情况,依次安装,大概有lxml,pandas,bs4,reques ...
- Python_正则表达式语法
1.正则表达式中的操作符: 2.re库的使用: import re #search方法要求只要待匹配的字符串中包含正则表达式中的字符串就可以 match = re.search('python+',' ...
- 珍藏版 Python 开发工程师面试试题
珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...
- python_装饰器_语法糖
什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...
- python_语法糖_装饰器
什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...
随机推荐
- 【贪心】XMU 1061 Ckp的约会
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1061 题目大意: n个任务(n<=1000),给定名字和开始.结束时间,求最多能 ...
- C#文本转语音并保存wav和MP3文件
回顾上次写博客至今都有4个多月了,最近工作比较的忙没时间写博文.以后会多坚持写博文,与大家分享下最近遇到的问题.最近因为项目需要,研究了下用C#开发TTS.下面把大体的思路给大家说说,希望对大家有所帮 ...
- Nodejs in Visual Studio Code 02.学习Nodejs
1.开始 源码下载:https://github.com/sayar/NodeMVA 在线视频:https://mva.microsoft.com/en-US/training-courses/usi ...
- C++注释和doxygen注释
C++注释 C++的注释只有两种: 单行注释,以“//”开头: 段落注释,以“/*”开始,以“*/”结束. int value; // value是一个整型变量,这是一句单行注释 /* Test是一个 ...
- error in invoking target 'mkldflags ntcontab.o nnfgt.o' of makefile
error in invoking target 'mkldflags ntcontab.o nnfgt.o' of makefile 今天是2013-08-04,在安装oracle11g r2 数据 ...
- SOAP详解
1. SOAP简介 1.1应用背景 对于应用程序开发来说,使程序之间进行因特网通信是很重要的.目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 H ...
- 自然数e这家伙怎么蹦跶出来的?
自然数e这家伙怎么蹦跶出来的? 之前看过一篇中文介绍自然数e的blog,引起了我的兴趣 原文是阮一峰大牛(我认为必须很有必要尊敬的称,大牛)嚼烂了吐出来的哈哈,只是我认为还是自己去看原文比較好 感觉非 ...
- huffman编码——原理与实现
哈夫曼算法原理 Wikipedia上面说的非常清楚了,这里我就不再赘述,直接贴过来了. 1952年, David A. Huffman提出了一个不同的算法,这个算法能够为不论什么的可能性提供出一个理想 ...
- hdu_1875_畅通工程再续 prim和kruskal
这个题是个典型的最小生成树的题目,但是刚开始怎么都过不了,后来发现两种写法都有疏忽,但是prim的到目前为止不懂为什么刚开始的不对,kruskal算法,并查集的初始条件从0开始写成从1开始了,所以已知 ...
- HDu -2844 Coins多重背包
这道题是典型的多重背包的题目,也是最基础的多重背包的题目 题目大意:给定n和m, 其中n为有多少中钱币, m为背包的容量,让你求出在1 - m 之间有多少种价钱的组合,由于这道题价值和重量相等,所以就 ...