Python入门指南

上传人:n**** 文档编号:50744708 上传时间:2018-08-10 格式:PPT 页数:58 大小:2.90MB
返回 下载 相关 举报
Python入门指南_第1页
第1页 / 共58页
Python入门指南_第2页
第2页 / 共58页
Python入门指南_第3页
第3页 / 共58页
Python入门指南_第4页
第4页 / 共58页
Python入门指南_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《Python入门指南》由会员分享,可在线阅读,更多相关《Python入门指南(58页珍藏版)》请在金锄头文库上搜索。

1、Python Intro把有空格trn的字符串标准化成words之间统一用1 个空格分割的字符串str=“”First line Second line“”= “First line Second line”“ ”.join(str.split()求两个数的最大公约数:def gcd(a, b):while b != 0:a, b = b, a%b return aPython是什么解释语言,不需要编译面向对象,所有的东西都是对象代码可读性好,易于维护语法简单,容易学习和理解,比c+/Java更适合初学者易于扩展胶水特性,可以和C/C+/Java/C#等混合编程非常成熟(20岁了!),内置20

2、0+模块,PYPI上有1w+有非常活跃的社区快速开发(Java的3-5倍,C+的5-10倍)没有内存泄露,没有core dump跨平台(Linux/Unix/Windows/Mac)被广泛使用被评为2007年年度语言C+/PHP/Java/Ruby/Python/C/Go性能还行 Ruby/PHP import this dir(object) help(func)Python实践DBScanner监控统计类WEBPCL访问延时TDB错误日志乐斗活动统计企鹅抛弃和领养同步Python通过C+访问TDBSmartDirFlash Policysvr测试工具类SmartDir测试工具乐斗II测试工

3、具C+ - Python注意关键字,关键字不能做变量名没有采用缩进来组织代码块缩进要统一(不然不让你过),一般用2-4个空格,别用tab没有switch用if/elif/else吧可以的话,用dict没有?操作符,x ? y : zPython2.5加了这种支持y if x else zC+ - Python(2)创建对象不用newclass A(object): a = A()没有delete操作符,一般交给GC来管,要显式delete对象a = None对map来说,del dictkey 没有拷贝构造a = A()b = aa 和 b指向同一个对象int/string/tuple除外,创

4、建后不能修改C+ - Python(3)可以多变量赋值(也叫bind)a,b,c = 1,2,3list1 = 4,5,6 /tuple1=(1,2,3)a,b,c = list1/tuple1没有make_pair Python(4)要遍历一个list for(x=0;x Python(5)都有lambdag = lambda x: x*2g(3)/ (lambda x: x*2)(3)非常方便都有算法mapmap(lambda x: x*x*x, range(1, 11)x * x * x for x in range(1,11) / 叫做list再构造,性能优于map/fliter,当然

5、更优于forfilterx for x in list1 if x%2 != 0 and x%3 != 0filter(lambda x: x%2 != 0 and x%3 != 0, range(2, 25)applyapply(lambda *x: x * x, range(2, 10)reducereduce(lambda x,y: x+y, a)Sumsum(list1)/sum(x * x for x in list1)minMaxC+ - Python(6)函数也是对象li = “Larry“, “Curly“li.popgetattr(li, “pop“)getattr(li,

6、“append“)(“Moe“)获取所有的函数列表methodList = method for method in dir(object) if callable(getattr(object, method)想要初始化成员变量么class A(object): var1 = / 类变量 def _init_(self): self.var2 = / 实例成员C+ - Python(7)都有默认参数def func(object, spacing=10, collapse=1):func(5)func(5,12)func(5, collapse=1)func(spacing=1, objec

7、t=5)都有可变参数*args(tuple)*kwargs(dict)def func(*args, *kwargs): print args, kwargsfoo(1,2,3,4)foo(a=1,b=2,c=3) foo(1,2,3,4, a=1,b=2,c=3) foo(a, 1, None, a=1, b=2, c=3)BasicBasic types: numbers, stringsContainer types: list, dictionaries, tuplesVariablesControl structuresFunctions d.has_key(“spam“) - 0V

8、alue可以是任何类型,Key嘛“name“:“Guido“, “age“:43, (“hello“,“world“):1,42:“yes“, “flag“: “red“,“white“,“blue“Dictionary DetailsKey必须是hashable的类型:不能是lists 或其他dictionariesDict不保持元素的顺序Tuplesmake_pair gcd._doc_greatest common divisor gcd(12, 20)4Classesclass name:“documentation“statements-or-class name(base1, ba

9、se2, .):.statements 一般都是函数定义:def name(self, arg1, arg2, .):.以及类变量初始化Built-in methods_str_ 可以通过str(object)转成string_len_ 可以通过len(object)获得对象长度_nonzero_(_bool_ in 3.0) 条件表达式判断,or/and运算_init_ 初始化_new_ 创建对象,_new_是类成员函数现有_new_再有_init_int_ 可以通过int(object)转成int_add_ a + b会调a的_add_全部可以重载type() 获取对象类型getattr(

10、)获取某个对象的某个属性值setattr()设置某个对象的某个属性值Example Classclass Stack:“A well-known data structure“def _init_(self):# 初始化,一般叫构造函数self.items = def push(self, x):self.items.append(x)def pop(self):x = self.items-1del self.items-1return xdef empty(self):return len(self.items) = 0 Using Classes创建对象x = Stack()调用成员函数

11、x.empty()# - 1x.push(1)# 1x.empty()# - 0x.push(“hello“)# 1, “hello“x.pop()# - “hello“# 1获取实例成员变量:x.items# - 1Subclassingclass FancyStack(Stack):“stack with added ability to inspect inferior stack items“def peek(self, n):“peek(0) returns top; peek(-1) returns item below that; etc.“size = len(self.ite

12、ms)assert 0 “) != -1): conn.sendall(read_policy_file() finally: conn.close()Advanced Socket Serverclass RequestHandler(SocketServer.BaseRequestHandler): def _init_(self, request, client_address, server): ip, port = client_address SocketServer.BaseRequestHandler._init_(self, request, client_address,

13、server) def handle(self): sock = self.request try: req = sock.recv(1024) if (req.find(“policy-file-request“) != -1): sock.sendall(CANNED_RESPONSE) finally: sock.close() def finish(self): passAdvanced Socket Server(2)class Server(SocketServer.ThreadingMixIn, SocketServer.TCPServer): daemon_threads =

14、True allow_reuse_address = True def _init_(self, server_address, request_handler_class): SocketServer.TCPServer._init_(self, server_address, request_handler_class)Advanced Socket Server(3)if _name_ = _main_: server = Server(“172.25.40.11“, 8999), RequestHandler) try: server.serve_forever() except KeyboardInterrupt: sys.exit(0)Python2.6 4700rpsPython2.4 600rpsMetaClass类似C+的MetaPrograming可以改变类的行为甚至是new一个完全不同的对象出来!Protobuf协议编解码比较高端Binding C/C+Python访问C+C+访问Python参数都需要转成PyObject对象来传递比较高端标准库Core:os, sys, string, getopt, struct,.Regular expressions:re modulePerl-5风格的正则表达

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号