首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python基础—让你规范Python语言的使用

群内不定时分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流 Lint 定义: pylint是一个在Python源代码中查找bug的工具....如果需要, 全局变量应该仅在模块内部可用, 并通过模块级的公共函数来访问. 嵌套/局部/内部类或函数 定义: 类可以定义在方法, 函数或者类中. 函数可以定义在方法或函数中....函数与方法装饰器 定义: 用于函数及方法的装饰器 (也就是@标记). 最常见的装饰器是@classmethod 和@staticmethod, 用于将常规函数转换成类方法或静态方法....缺点: 装饰器可以在函数的参数或返回值上执行任何操作, 这可能导致让人惊异的隐藏行为. 而且, 装饰器在导入时执行. 从装饰器代码的失败中恢复更加不可能....避免装饰器自身对外界的依赖(即不要依赖于文件, socket, 数据库连接等), 因为装饰器运行时这些资源可能不可用(由 pydoc或其它工具导入).

1.6K80

4.自定义类加载器实现及在tomcat中的应用

name) 这里有两步操作, 第一个是: 从类路径中读取要加载类的文件内容, 自定义 第二个是: 调用构造类的方法, 调用的系统的defineClass 接下来看看自定义的loadByte是如何实现的...我们来看一下源码 我们自定义的类加载器, 继承自ClassLoader类加载器, 那么在调用自定义类加载器的构造方法之前, 应该先加载父类ClassLoader的无参构造函数....先面我们就来详细看看tomcat自定义的类加载器 1. tomcat第一部分自定义类加载器(黄色部分) 这部分类加载器, 在tomcat7及以前是tomcat自定义的三个类加载器, 分别加载不同文件家下的...访问; catalinaClassLoader: tomcat容器中私有的类加载器, 加载路径中的class对于webapp不可见的部分。...sharedClassLoader: 各个webapps共享的类加载器, 加载路径中的class对于所有的webapp都可见, 但是对于tomcat容器不可见.

1.4K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于Python语言规范你需要知道的一些小tips

    1、对你的代码运行pylint 定义: pylint是一个在Python源代码中查找bug的工具....如果需要, 全局变量应该仅在模块内部可用, 并通过模块级的公共函数来访问. 6、鼓励使用嵌套/本地/内部类或函数 定义: 类可以定义在方法, 函数或者类中. 函数可以定义在方法或函数中....最常见的装饰器是@classmethod 和@staticmethod, 用于将常规函数转换成类方法或静态方法. 不过, 装饰器语法也允许用户自定义装饰器....缺点: 装饰器可以在函数的参数或返回值上执行任何操作, 这可能导致让人惊异的隐藏行为. 而且, 装饰器在导入时执行. 从装饰器代码的失败中恢复更加不可能....避免装饰器自身对外界的依赖(即不要依赖于文件, socket, 数据库连接等), 因为装饰器运行时这些资源可能不可用(由 pydoc 或其它工具导入).

    1.7K60

    Google 内部的 Python 代码风格指南

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该...被程序共享的文件和socket可能会无意中在逻辑上已被关闭的情况下仍被读写.如果实际上已经关闭,试图读写的操作会抛出异常,这样就可以立即发现问题.

    1.2K10

    Python 代码风格指南谷歌版

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该...被程序共享的文件和socket可能会无意中在逻辑上已被关闭的情况下仍被读写.如果实际上已经关闭,试图读写的操作会抛出异常,这样就可以立即发现问题.

    1.2K20

    Google Python代码风格指南

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该...被程序共享的文件和socket可能会无意中在逻辑上已被关闭的情况下仍被读写.如果实际上已经关闭,试图读写的操作会抛出异常,这样就可以立即发现问题.

    1.3K20

    快收藏!!Google内部Python代码风格指南(中文版)

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该...被程序共享的文件和socket可能会无意中在逻辑上已被关闭的情况下仍被读写.如果实际上已经关闭,试图读写的操作会抛出异常,这样就可以立即发现问题.

    1.2K30

    Google 内部的 Python 代码风格指南

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该...被程序共享的文件和socket可能会无意中在逻辑上已被关闭的情况下仍被读写.如果实际上已经关闭,试图读写的操作会抛出异常,这样就可以立即发现问题.

    1.6K30

    Google 内部的 Python 代码风格指南

    (此处翻译可能有误)     ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该...被程序共享的文件和socket可能会无意中在逻辑上已被关闭的情况下仍被读写.如果实际上已经关闭,试图读写的操作会抛出异常,这样就可以立即发现问题.

    1.6K20

    Google 内部的 Python 代码风格指南(译)

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则....装饰器的文档应该清晰地声明该函数为装饰器函数.并且要为装饰器函数编写单元测试....避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该

    1.7K10

    谷歌Python代码风格指南,翻译版来了!

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该...被程序共享的文件和socket可能会无意中在逻辑上已被关闭的情况下仍被读写.如果实际上已经关闭,试图读写的操作会抛出异常,这样就可以立即发现问题.

    1.5K20

    Python 代码风格指南谷歌版

    (此处翻译可能有误) ... 2.13 属性 使用属性可以通过简单而轻量级的访问器和设定器方法来来访问或设定数据. 2.13.1 定义 一种装饰器调用来在计算比较轻量级时作为标准的属性访问来获取和设定一个属性的方式....属性在创建时被@property装饰,参加装饰器 如果属性本身未被重写,带有属性的继承可能不够明晰,因而必须确保访问方法是被间接访问的,来确保子类的方法重载是被属性调用的(使用Template Method...,避免@staticmethod,控制使用@classmethod 2.17.1 定义 函数和方法装饰器(也就是@记号).一个常见的装饰器是@property,用于将普通方法转换成动态计算属性.然而装饰器语法也允许用户定义装饰器...,导致非常隐形的操作行为.此外,装饰器在import的时候就被执行,装饰器代码的实效可能非常难恢复. 2.17.4 建议 在有明显好处的地方谨慎地使用装饰器.装饰器应该和函数遵守相同的import和命名指导规则...避免装饰器自身对外部的依赖,(如不要依赖于文件,socket,数据库连接等等),这是由于在装饰器运行的时候(在import时,可能从pydoc或其他工具中)这些外部依赖可能不可用.一个被传入有效参数并调用的装饰器应该

    1.3K30

    C# 在自定义的控制台输出重定向类中整合调用方信息

    C# 在自定义的控制台输出重定向类中整合调用方信息 目录 C# 在自定义的控制台输出重定向类中整合调用方信息 一、前言 二、输出重定向基础版 三、输出重定向进阶版(传递调用方信息) 四、后记及资源 独立观察员...来进行输出,而 ShowInfo 方法内通过设置文本框的文本内容来达到了显示消息的效果: 其中的关键就是自定义类 ConsoleWriter(后面有新版): using System; using...Write 方法,然后在重写的 Write 方法中调用外部设置好的(通过构造函数)相关委托方法进行实际的信息输出。.../dlgcy/dotnetcodes/tree/dlgcy/DotNet.Utilities/ConsoleHelper * 依赖:ClassHelper 类中获取调用信息的方法。...0); } } } 即新增一个包含了调用方信息三个参数的委托 _WriteCallerInfo,以及配套的构造方法,然后在 Write 方法中优先使用 _WriteCallerInfo

    1.6K20

    Google Python 编程风格指南

    Python语言规范 Lint 对你的代码运行pylint 定义:pylint是一个在Python源代码中查找bug的工具....嵌套/局部/内部类或函数 鼓励使用嵌套/本地/内部类或函数 定义:类可以定义在方法, 函数或者类中. 函数可以定义在方法或函数中....最常见的装饰器是@classmethod 和@staticmethod, 用于将常规函数转换成类方法或静态方法. 不过, 装饰器语法也允许用户自定义装饰器....而且, 装饰器在导入时执行. 从装饰器代码的失败中恢复更加不可能.结论:如果好处很显然, 就明智而谨慎的使用装饰器. 装饰器应该遵守和函数一样的导入和命名规则....在文件中存在Shebang的情况下, 类Unix操作系统的程序载入器会分析Shebang后的内容, 将这些内容作为解释器指令, 并调用该指令, 并将载有Shebang的文件路径作为该解释器的参数.

    73730

    初识Python3.7的dataclasses标准库

    DDD 开发需要对一个领域对象进行各种操作,而不是把业务数据包在dict里在 action 层,repo 层中传来传去。如何方便高效地定义实体类成为一个重要前提。...def total_cost(self) -> float: return self.unit_price * self.quantity_on_hand 使用了dataclass函数装饰器装饰...frozen:默认为 False,设置为 True 的话对这个类实例的字段进行复制会抛出异常,相当于定义一个不可变对象 上文定义的InventoryItem类没有指定参数,全部是默认参数,具体的表现行为如下...使用dataclasses.field修饰字段 事实上我们不仅可以通过对 dataclass 的参数定义数据类的整体表现,也可以指定具体字段的行为,只需要用到dataclasses.field函数。...利用新版本 Python 的类型提示和 dataclasses 标准库,配合一些开发工具(mypy,pylint 等)我们可以较为放心地将数据对象在不同模块方法间传递使用,有助于改进 Python 在大型项目下的开发效率和安全性

    76710

    初识 Python3.7 的 dataclasses 标准库

    DDD 开发需要对一个领域对象进行各种操作,而不是把业务数据包在dict里在 action 层,repo 层中传来传去。如何方便高效地定义实体类成为一个重要前提。...def total_cost(self) -> float: return self.unit_price * self.quantity_on_hand 使用了dataclass函数装饰器装饰...frozen:默认为 False,设置为 True 的话对这个类实例的字段进行复制会抛出异常,相当于定义一个不可变对象 上文定义的InventoryItem类没有指定参数,全部是默认参数,具体的表现行为如下...使用dataclasses.field修饰字段 事实上我们不仅可以通过对 dataclass 的参数定义数据类的整体表现,也可以指定具体字段的行为,只需要用到dataclasses.field函数。...利用新版本 Python 的类型提示和 dataclasses 标准库,配合一些开发工具(mypy,pylint 等)我们可以较为放心地将数据对象在不同模块方法间传递使用,有助于改进 Python 在大型项目下的开发效率和安全性

    1.4K31

    python数据分析师面试题选

    在python中如何创建包含不同类型数据的dataframe 利用pandas包的DataFrame函数的serias创建列然后用dtype定义类型: df = pd.DataFrame({'x': pd.Series...Pylint可以检验模块是否满足所有的编程标准;Pychecker则是静态分析工具。 7. 装饰器的作用 装饰器可用于修饰函数或类。...通过装饰器可以包裹函数或类使之执行之前或之后调用装饰器函数,从而达到抽离出大量函数中与函数功能本身无关的雷同代码并继续重用的目的。比较经典的厨力场景有检验权限,追踪参数,日志登陆等。...这个的原因是 Python 的闭包的后期绑定导致的 late binding,这意味着在闭包中的变量是在内部函数被调用的时候被查找。...所以结果是,当任何 multipliers() 返回的函数被调用,在那时,i 的值是在它被调用时的周围作用域中查找,到那时,无论哪个返回的函数被调用,for 循环都已经完成了,i 最后的值是 3,因此

    2.9K60

    Python 元类(Meta Class):解密 Python 面向对象编程的幕后推手

    ,Python 实际上在背后做了什么?...Person 类的类型是 type。实际上,type 就是 Python 中的默认元类。...继承是在实例创建时起作用,而元类是在类定义时就起作用继承控制的是实例的行为,而元类控制的是类的行为继承遵循 MRO (Method Resolution Order) 规则,而元类工作在更底层,在类被创建之前就介入继承实现上述的功能...:继承方案在每次调用方法时都要经过 __getattribute__ ,性能开销较大元类方案在类定义时就完成了方法的包装,运行时几乎没有额外开销继承方案更容易理解和调试,元类方案更底层和强大 这里补充一下...大多数情况下,普通的类和装饰器就足够了。 性能考虑:元类会在类创建时执行额外的代码,如果使用不当可能影响性能。 调试困难:使用元类的代码往往较难调试,因为它们改变了类的创建过程。

    9310

    Python 高级特性

    ① 以@做为定义为装饰器函数前缀的表达式②。在 @ 后的部分必须是简单的表达式,通常只是函数或类的名字。这一部分先求值,在下面的定义的函数准备好后,装饰器被新定义的函数对象作为单个参数调用。...装饰器返回的值附着到被装饰的函数名。 装饰器可以应用到函数和类上。对类语义很明晰——类定义被当作参数来调用装饰器,无论返回什么都赋给被装饰的名字。...第一种情况中,装饰器利用函数或类对象是可变的添加属性,例如向类添加文档字符串(docstring).装饰器甚至可以在不改变对象的情况下做有用的事,例如在全局注册表中注册装饰的类。...在第二种情况中,简直无所不能:当什么不同的东西取代了被装饰的类或函数,新对象可以完全不同。然而这不是装饰器的目的:它们意在改变装饰对象而非做不可预料的事。...这意味着当装饰器被定义为类时,使用无参数的形式没什么意义:最终被装饰的对象只是装饰类的一个实例而已,被构建器(constructor)调用返回,并不非常有用。

    1K10
    领券