本章主要说一点高级的编程技巧,也是python中最常用的一种技巧--元类。有点类似于拦截器或AOP的功能。一、控制类的创建对象的类型叫作类,类的类型叫作元类。实例对象由类创建,而类则是由元类创建。类进行创建时会优先执行以下几个方法,通过复写这几个方法就可以控制类的创建过程,规范化代码,然后在类定义时使用metaclass来定义行为,以下三个方法会按顺序执行;__prepare__(定义类)__ne
正则表达式
一、客户端认证1.1、认证import hmacimport osdef client_authenticate(connection, secret_key): """ Authenticate client to a remote service. connection represents a network connection. secret_key is a k
这是一种交互方式,简单看下其实现。
本章了解下socket编程以及tpc和udp,TCP/IP 中有两个具有代表性的传输层协议分别是 TCP 和 UDP,它们的主要区别是:1、udp是无连接的(广播),tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。其它的TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等也都属于 TCP/IP 族内的协议。一、TCP
本章会用两种方式来实现,原生和grpc框架来实现。
本章主要使用cgi库,原生写法一般时候不常用。可以用Flask框架来实现。
本章会原生的库实现简单的Http调用,需要用到requests、urllib和http.client库。
python 死锁
一、基础内容本章中介绍一个编写脚本可能用到的一个方法1.1、脚本接收import fileinputwith fileinput.input('/etc/passwd') as f: for line in f: print(f.filename(), f.lineno(), line, end='')1.2、程序退出import syssys.stderr.write('It
这种类型的文件一般在脚本等一些工具程序中用处比较多,唯一一点注意的是ini的key不区分大小写。文件内容[installation]library=%(prefix)s/libinclude=%(prefix)s/includebin=%(prefix)s/binprefix=/usr/local# Setting related to debug configuration[debug]log_
一、共享队列1.1、简单队列from queue import Queuefrom threading import Threaddef producer(out_q): while True: data = 'hello world!' out_q.put(data)def consumer(in_q): while True: data
一、ThreadPoolExecutor1.1、基本实现from socket import AF_INET, SOCK_STREAM, socketfrom concurrent.futures import ThreadPoolExecutordef echo_client(sock, client_addr): ''' Handle a client connection
Thread基本是老生常谈了,说实话在业务开发中真的很少能用了,但又是非常关键的内容。吐槽一点,如果同学们在将来有机会当面试官的话,一定避免面试做火箭实际拧螺丝。一定要从实际出发。与其聊八股文,不如挖下候选人的思维和反应能力。python的线程会在单独的系统级线程中执行,一旦启动,将独立执行直到返回目标函数。python的线程原理和java差不太多,不清楚的
用二进制的目的主要是为了节省空间,将一些数据转为二进制形式,有时还需要定入元组中。一、将python元组写入到二进制文件中def write_records(record_list, format, f): """ Write a sequence of tuples to a binary file of structures. :param record_list: :
python处理专用的领域一般都会有专门的库(类似java的三方开源包),在本节中我们使用的是xml库,也可以选用lxml库。一、简单实现<?xml version="1.0"?><stop> <id>14791</id> <nm>Clark & Balmoral</nm> <sri&g
需要引入json库一、json库的使用import jsondata = { 'course' : 'python', 'total_class' : 30, 'score' : 0.3}#str2jsonjson_str = json.dumps(data)#json2strdata = json.loads(json_str)# Writing JSON datawith o
解决CSV文件需要用到csv库,如果需要做分析需要引入pandas库。一、读处理--course.scv--CourseName,Score,Date,Time,Finished,TotalClasspython,0.5,6/1/2020,8:30am,3,30java,0.2,6/1/2020,9:30am,2,20php,0.25,6/1/2020,10:30am,5,10import csv
一、文件读写文件读取需要注意三个问题:1、with上下文环境;2、换行符;3、编码(编码可用sys.gefdefaultencoding()取得系统默认编码)。如果想绕过文件编码层可直接访问buffer属性如 sys.stduout.buffer.write();1.1、读写文本文件open中有几种模式【文件格式+打开方式】,文件格式:文本-t,二进制-b,压缩文件-t。打开方式:r-读,w-写。
经过上述几章基础基本全覆盖了,可以写一些简单的程序。本章比较简单,就介绍下如何测试Python程序的性能。但这些方式一般适用于开发阶段,因为线上的系统往往比较复杂。一、CPU1.1、用unix函数测试(venv) MacBook:chapter14 liudong$ time python profile_test.py __main__.countdown time spend: 0.44652
切片可理解为更高级别的索引。本章会着重介绍下高级切片的内容
可以简单理解来return。但它还有其它的用途。详细如下:一、当做return使用它首先是个return,就是在程序中返回某个值,返回之后程序就不再往下运行了。看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器),直接看下面的程序:def foo(): print("starting...") while True:
手动创建迭代器
一、tuple1.1、不具名#不具名,可以整体重新定义,不能按索引这样的方式单独赋值dimensions = (5, 10)print(dimensions)#(5, 10)dimensions = (5, 15);print(dimensions)#(5, 15)1.2、具名#具名from collections import namedtupleclass Point: def __in
一、模块1.1、__init__.py在每个文件夹下创建__init__.py文件,这个文件将在此包下具体的模块导入之前执行。它里面可以定义与模块相关的一些内容。比如发布:下面代码只导入spam 和 grok。如果采用from module import *则会导入所有不以下划线开头的模块。但若定义了__all__则只有被列举出的模块才会被导入,如果定义了一个空列表,则不会导入任何模块。def s
一、自定义容器mport collectionsimport bisectclass SortedItems(collections.Sequence): def __init__(self, initial=None): self._items = sorted(initial) if initial is not None else [] # Required seq
一、属性读取1.1、getter和setter这里可以复写两个方法:__getattr__只在调用不存在的属性时才会被调用,__getattribute__无条件被调用,如果同时重写了以上两个方法,则__getattr__永远不会被调用。另外__getattr__对于双下划线开始和结尾、单下划线开始的方法是不能用的。"""如果自定义这两个方法,则__getattr__只在调用不存在的属性时才会被调
一、类的约束# _开头: 私有变量;# __开问: 私有变量,不能被继承;# __xxx__: 能被访问,不能被继承;class A: def __init__(self): self._internal = 0 # 私有变量不能被访问 self.public = 1 # 可被访问 def public_method(self): p
本章算是为下面的类的内容打了点提前量。一、基础1.1、toString方法class FormatChange: def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return f'use repr method: ({self.x}, {self.y})'
相比java,python的异常和java中不同,python主要是防止程序异常被中止。一旦被catch后它还行往下执行。一、异常1.1、忽略pass这个关键字相当于一个占位符,好比TODO是一样的,只表示此行什么也不做,不代表其它的行代码不执行;try: print(5/0)except ZeroDivisionError: pass print("ddd") #这行还是可以正
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号