1、变量   和js声明类似,使用var关键字   比较简单,看了就会 1funcmain(){ 2vara,bint 3a,_=10,12 4fmt.Println(a,b) 5varcint 6fmt.Println(c) 7vardbool 8fmt.Println(d) 9} 声明后的变量一定要使用,否则会报错 2、常量   使用关键字const声明 1packagemain 2 3import"fmt" 4 5const( 6name="g" 7age=26 8gender="man" 9) 10 11funcmain(){ 12res:=fmt.Sprintf("他:%s,今...

  Hdj9iQhcP0rD   2023年11月02日   64   0   0 Go

1、命名元组也叫具名元组   可以通过名称来访问序列中的元素,摆脱对位置的依赖,他本身是一个工厂函数 2、应用1   实例化元组返回的类,其内存占用要比普通类实例要小的多,因为前者实例的属性不通过字典进行管理 1fromcollectionsimportnamedtuple 2 3返回可实例化的类 4P=namedtuple("人",["姓","教育背景"]) 5 6 7classPerson: 8类实例化,字段赋值,可以理解为普通类实例后返回调用__init__方法 9p_one=P("陈","本科") 10p_two=P("谷","研究生") 11 12 13if__name__'__m...

  Hdj9iQhcP0rD   2023年11月02日   50   0   0 Python

鸭子类型   我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下python的多态 1classPageOne: 2defstatus(self): 3return"按期申报页" 4 5 6classPageTwo: 7defstatus(self): 8return"其他申报页" 9 10 11classPageThree: 12defstatus(self): 13return"申报信息查询页" 14 15 16deffunc(obj): 17print(obj.status.__call__()) 18 19 20if__name__'__main__': 21fu...

  Hdj9iQhcP0rD   2023年11月02日   46   0   0 Python

对于在父类中存在的属性,如果要在其派生类中继续扩展属性   可以这样实现 1classValley: 2def__init__(self): 3self._name=None 4 5@property 6defname(self): 7returnself._name 8 9@name.setter 10defname(self,val): 11try: 12assertval.startswith("g") 13exceptAssertionError: 14self._name="g"+val 15else: 16self._name=val 17 18 19classSubValley...

  Hdj9iQhcP0rD   2023年11月02日   52   0   0 Python

  在类的层次上定义时,python给实例采用一种更加紧凑的内部表示来管理属性,而非字典,这样,我们只被允许访问__slots__内部的属性   这样定义会带来两点好处,然后具体的实践我在工作中目前运用的还很少,后面如果发现还有什么坑,我再来补充 1、创建大量实例时节省内存 2、访问属性快 1classValley: 2__slots__="name","age", 3 4def__init__(self): 5self.name='g' 6self.age=25 7 8 9if__name__'__main__': 10v=Valley() 11print(v.name)  

  Hdj9iQhcP0rD   2023年11月02日   48   0   0 Python

  方法调用确实我们每个人都会,但是我觉得大家可能用的最多的就是那种常规的方式,这里呢,我要记录一下另外几种方式 1fromoperatorimportattrgetter 2fromoperatorimportmethodcaller 3 4 5classValley: 6deffunc(self): 7print("测试方法") 8 9 10if__name__'__main__': 11v=Valley() 12除了最常规的方式(绑定方法、非绑定方法)调用方法以外 13one 14getattr(v,"func").__call__() 15two 16attrgetter("func...

  Hdj9iQhcP0rD   2023年11月02日   91   0   0 Python

  首先我们要知道任何关于函数调用签名的问题,都和inspect模块有着关系   这个知识点涉及到两个类:               Signature、               Parameter创建一个签名对象,这是个重点 1frominspectimportSignature,Parameter 2 3params=[Parameter("name",Parameter.POSITIONAL_OR_KEYWORD,default="g"), 4Parameter("gender",Parameter.POSITIONAL_OR_KEYWORD,default="man"), 5P...

  Hdj9iQhcP0rD   2023年11月02日   41   0   0 Python

  python一切皆对象,从是否可调用层面讲,对象又可以分为可调用对象、不可调用对象 在本篇中,类中实现__call__双下方法,即将该类的实例变为可调用对象   普通类未实现__call__的方法,实例是不可调用的,先看 1classValley: 2... 3 4 5if__name__'__main__': 6v=Valley() 7print(callable(v)) output:    False   实现了__call__方法后 1classValley: 2def__call__(self,args,val='测试',kwargs): 3print(val) ...

  Hdj9iQhcP0rD   2023年11月02日   50   0   0 Python

三大编程思想:   POP:面向过程编程(ProcedureOrientedProgramming)   OOP:面向对象编程(ObjectOrientedProgramming)   AOP:面向切面编程(AspectOrientedProgramming) 以下大部分内容引用腾讯云一位笔者,我也是进一步了解纯记录之目的。 POP ​  面向过程编程是以功能为中心来进行思考和组织的一种编程方式,它强调的是功能,在程序设计中主要以函数或过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成。 ​分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候按顺序依次调用就可以了...

  Hdj9iQhcP0rD   2023年11月02日   46   0   0 Python

命题逻辑里的一个法则   定义:非p或非q=非(p且q)   最近在看一本书啊《python工匠......》一个腾讯大佬写的,从这里面了解到这个东西,确实不错 11德摩根定律 22deffunc(): 33a=10 44b=20 55ifnota<5ornotb<10: 66print(a,b) 77改善之后 88ifnot(a<5andb<10): 99print(a,b) 1010 1111 1212func()

  Hdj9iQhcP0rD   2023年11月02日   74   0   0 Python

控制子类的的创建 1、元类   这种方式可能是最常见的也是我们最先知晓的,当然这种方式可能需要我们对元类有比较深入的了解,所以引入了下面的这种方式 2、钩子函数   __init__subclass__,字面意思,父类实现了该双下方法,其后凡是继承他的派生类,都会触发此方法,进行派生类的初始化,实现派生类属性的增加及修改 1classMeta: 2def__init_subclass__(cls,kwargs): 3改变子类行为,增加类属性 4cls.origin_val="只有永不遏制的奋斗" 5forkinkwargs: 6setattr(cls,k,kwargs[k]) 7 8增加类方...

  Hdj9iQhcP0rD   2023年11月02日   92   0   0 Python

生成器是一种特殊的迭代器,也可以说其父类型是迭代器   1、迭代器其实也有很多点要清楚,这里先不做赘述   2、要清楚,迭代器调用iter()返回的是自身 1deffunc(s,e): 2""" 3生成器函数 4:params:起始值 5:parame:末值 6:return: 7""" 8num=s 9whilenum<e: 10ifnum%70or"7"instr(num): 11yieldnum 12num+=1 13 14 15if__name__'__main__': 16验证生成器是否是迭代器 17res=func(0,20) 18print(type(res)) 19pr...

  Hdj9iQhcP0rD   2023年11月02日   52   0   0 Python

作用:随时修改代码   (在函数或类定义完成之后,再去修改函数的实现过程) """类似猴子补丁在函数定义好之后,再去更改他的行为"""importtypesclassValley:deffunc(self):return"等待宣告"defcommon(self):return"只有永不遏制的奋斗"if__name__'__main__':v=Valley()只替换当前实例的方法v.func=types.MethodType(common,Valley)print(v.func())原方法实现规则不变v2=Valley()print(v2.func()) output:    只有永不遏制...

  Hdj9iQhcP0rD   2023年11月02日   24   0   0 Python

继承:   强调类与类之间的关系 组合:   强调对象和对象之间的关系 清楚python支持多继承,从而涉及到一些MRO的点,这里不做赘述,在实际工作过程中,我们经常会使用继承来实现代码复用,如果仅仅是为了复用,还是比较推荐使用组合方式,因为继承方式,使得类与类之间的耦合性变得异常紧密,这多少违背了迪米特法则 1""" 2OOP中三大特性之一:继承 3如果单纯为了代码复用更多的可以考虑 4组合,继承类与类之间耦合度高 5某种程度上,委托也可以是继承的一种替代方案 6""" 7 8 9classA: 10def__init__(self,name): 11self.name=name 12 1...

  Hdj9iQhcP0rD   2023年11月02日   45   0   0 Python

抽象类:可以作为顶层基类,从高层次规范编程接口 1、在abc模块中,最常见的抽象类有Iterable,我们可以用他判断一个对象是不是可迭代对象 1fromcollections.abcimportIterable 2 3 4classValley: 5 6def__iter__(self): 7... 8 9 10if__name__"__main__": 11print(isinstance(Valley(),Iterable)) output:   True 2、抽象类的子类化机制   2.1、重写__subclasshook__类方法,定制抽象类的子类判断逻辑,这种子类化形式只关心结...

  Hdj9iQhcP0rD   2023年11月02日   42   0   0 Python

多个线程在执行过程中会因为竞争同一个资源而产生线程冲突,造成死锁,从而引出线程锁这个概念 先拿到锁再执行业务操作: 当然我对这一块了解的还不透彻,只是了解在不加锁的多线程情况下,会破坏单例模式,所以就有了下面这一段 1importtime 2importthreading 3 4 5defdecorator(func): 6lock=threading.Lock() 7 8defwrapper(args,kwargs): 9withlock: 10func(args,kwargs) 11 12returnwrapper 13 14 15classSingleton(type): 16def_...

  Hdj9iQhcP0rD   2023年11月02日   39   0   0 Python

普通的切片对迭代器无法实行切片操作 1fromitertoolsimportislice 2 3 4deffunc(): 5foriin[4,9,6,2]: 6ifi%20: 7yieldi 8 9 10f=func() 11res=islice(f,3) 12foriinres: 13print(i) 14print(list(f)) 需要注意的是:islice会消耗迭代器中提供的元素,同时因为迭代器具有一次消耗性,所以: output:   4  6  2  [] 避免迭代器中元素被全部消耗,不可再用,可以在此之前将其转化为列表 同时,islice和dropwhile一道还可以用来跳过...

  Hdj9iQhcP0rD   2023年11月02日   23   0   0 Python

主角:takewhile   判断序列中元素是否为偶数,奇数则终止 这是我们最常用的一种方式,其实没必要这么复杂 1a=[4,6,7,3] 2 3 4defjudge_is_even(item): 5ifitem%20: 6returnTrue 7returnFalse 8 9 10最常用 11foritemina: 12ifnotjudge_is_even(item): 13break 14print(item) 优化后: 1fromitertoolsimporttakewhile 2 3a=[4,6,7,3] 4 5 6defjudge_is_even(item): 7ifitem%...

  Hdj9iQhcP0rD   2023年11月02日   43   0   0 Python

代码里我们经常会出现大量的条件判断,在这种情况下,我们可以实现状态机避免过度使用 有一种方式是把各种状态归为各种状态类 还有一种方式是修改实例的__class__属性 1""" 2状态机的实现 3修改实例的__class__属性 4""" 5 6 7classConnection: 8def__init__(self): 9self.new_state(CloseState) 10 11defnew_state(self,state): 12self.__class__=state 13 14defread(self): 15raiseNotImplementedError 16 17def...

  Hdj9iQhcP0rD   2023年11月02日   45   0   0 Python

偶然有次机会,看到同事在一串代码上方加了这样一行注释:链式调用。现在才想起来,特意去了解了一下。 方法链:本质是在每个方法末尾都返回实例本身,实现连续自身状态或者行为的访问 1classValley: 2 3@property 4defname(self): 5print("g") 6returnself 7 8defread(self): 9print("reading") 10返回实例 11returnself 12 13defwrite(self): 14print("writing") 15returnself 16 17 18if__name__'__main__': 19Vall...

  Hdj9iQhcP0rD   2023年11月02日   39   0   0 Python
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~