python eval()函数_eval()函数的作用是什么?python_html中eval函数作用

我自己写Python已经四五年了,我一直在用我的“强迫症”来维持我的代码质量。 不得不去Google的Python代码规范,简单记一下这几年的工作经历。 如果你也在学pythpn,那你就要学python了。 我希望这篇文章对你有用。

1.首先

建议1.理解Pythonic的概念——详见Python之《Zen of Python》

建议2. 编写Pythonic代码

(1) 避免不规范的代码,比如只用大小写区分变量,使用容易混淆的变量名,害怕变量名太长等。有时候长变量名反而让代码更易读。

(2) 深入学习Python相关知识,如语言特性、库特性等,如Python的演进过程等。深入学习一两个业界公认的Pythonic代码库,如如烧瓶等

建议3:理解Python和C的区别,比如缩进和{},单引号和双引号,三元运算符? , Switch-Case 语句等

建议四:在代码中适当添加注释

建议五:适当加入空行,让代码布局更合理

建议6:编写函数的4条原则

(1) 功能设计尽量短,嵌套层次不要太深

(2)函数声明要合理、简单、易用

(3) 功能参数设计要考虑向后兼容

(4) 一个函数只做一件事,尽量保证函数粒度的一致性

建议七:将常量集中在一个文件中,常量名尽可能全部使用大写字母

2. 编程习语

建议8:使用assert语句发现问题,但要注意断言assert会影响效率

建议九:交换值时不建议使用临时变量,直接a,b = b,a

建议10:充分利用惰性求值(Lazy evaluation)的特性eval()函数的作用是什么?python,避免不必要的计算

建议11:了解枚举的替代实现的陷阱(枚举功能已添加到最新版本的Python中)

建议十二:不建议使用type进行类型检查,因为有时候type的结果不一定可靠。如果有需求,建议改用isinstance函数

建议13:做除法前尽量把变量转成浮点型(Python3以后不用考虑)

建议14:警惕eval()函数中的安全漏洞,有点类似于SQL注入

建议 15:使用 enumerate() 获取序列迭代的索引和值

建议16:区分==和is的适用场景,尤其是比较字符串等不可变类型变量时(详见注释)

建议17:尽可能使用Unicode。Python2编码很头疼,Python3不用想太多

建议18:构建合理的包层次结构来管理Modules

3. 基本用法

建议 19:谨慎使用 from…import 语句以防止命名空间污染

建议20:先使用绝对导入来导入模块(相对导入在Python3中已经被移除)

建议21:i+=1不等于++i。 Python中++i前面的加号只表示正数,不是运算

建议22:习惯使用with自动关闭资源eval()函数的作用是什么?python,尤其是文件读写

建议 23:使用 else 子句简化循环(异常处理)

建议 24:遵循异常处理的一些基本原则

(1)注意异常的粒度,try块中尽量少写代码

(2)谨慎使用单独的except语句,或者exceptException语句,但是定位具体的异常

(3)注意异常捕获的顺序,在合适的层级处理异常

(4) 使用更友好的异常信息,遵守异常参数规范

建议 25:避免 finally 中可能出现的陷阱

建议26:深入理解None,正确判断对象是否为空。

建议 27:对于连接字符串,应优先使用 join 函数而不是 + 操作

建议28:格式化字符串时尽量使用.format函数代替%形式

建议 29:区别对待可变和不可变对象,尤其是作为函数参数

建议30:[]、{}和():容器初始化的一致形式。使用列表理解可以让代码更清晰,同时更高效

建议31:函数传递参数,既不是按值也不是按引用,而是按对象或对对象的引用

建议 32:警惕默认参数的潜在问题,尤其是当默认参数是可变对象时

建议 33:谨慎使用函数中的可变长度参数 args 和 kargs

(1) 这种使用过于灵活,导致函数签名不够清晰,可读性差

(2) 如果因为函数参数太多而用变长参数简化函数定义,那么一般可以重构函数

建议34:深入理解str()和repr()的区别

(1)两者的目标不同:str主要是面向客户的,其目的是可读性,返回形式是字符串形式,具有很高的易读性和可读性; 而 repr 是给 Python 解释器或者 Python 开发者使用的,其目的是准确,其返回值代表 Python 解释器内部的定义

(2)在解释器中直接输入变量,默认调用repr函数,print(var)默认调用str函数

(3)repr函数的返回值一般可以使用eval函数还原对象

(4) 两者分别调用对象的内置函数__str__()和__repr__()

建议35:区分staticmethod和classmethod的使用场景

4.图书馆的使用

建议36:掌握字符串的基本用法

建议 37:根据需要选择 sort() 和 sorted() 函数

sort() 就地对列表进行排序,因此无法对元组等不可变类型进行排序。

sorted() 可以在不改变原始变量本身的情况下对任何可迭代类型进行排序。

建议38:使用copy模块深拷贝对象,区分浅拷贝和深拷贝

建议39:使用Counter进行计数统计,Counter是dictionary类的子类,在collections模块中

建议40:深入掌握ConfigParse

建议 41:使用 argparse 模块处理命令行参数

建议 42:使用 pandas 处理大型 CSV 文件

Python本身提供了CSV文件处理模块,并提供了reader和writer等功能。

Pandas可以提供分块、合并处理等,适用于大数据量,更方便二维数据操作。

建议 43:使用 ElementTree 解析 XML

建议 44:了解模块酸洗的利弊

优点:接口简单,全平台通用,支持的数据类型广泛,可扩展性强

缺点:不保证数据操作的原子性,安全问题,不同语言不兼容

建议 45:序列化 JSON 模块的另一种选择:加载和转储操作

建议 46:使用 traceback 获取堆栈信息

建议 47:使用日志记录记录日志信息

建议48:使用线程模块编写多线程程序

建议 49:使用 Queue 模块让多线程编程更安全

5. 设计模式

建议50:使用模块实现单例模式

建议 51:使用 mixin 让程序更灵活

建议 52:使用发布订阅实现松散耦合

建议 53:用状态模式美化你的代码

六、内部机制

建议 54:了解内置对象

建议55:__init__()不是构造函数,理解__new__()和它的区别

建议56:理解变量查找机制,即scope

本地范围

全球范围

嵌套范围

内置范围

建议 57:为什么需要 self 参数

建议 58:了解 MRO(方法解析顺序)和多重继承

建议 59:了解描述符机制

建议 60:区分 __getattr__() 和 __getattribute__() 方法

建议 61:使用更安全的属性

建议 62:掌握元类

建议 63:熟悉 Python 对象协议

建议 64:对中缀语法使用运算符重载

建议 65:熟悉 Python 的迭代器协议

建议 66:熟悉 Python 的生成器

建议 67:基于生成器的协程和 greenlets,了解协程、多线程和多处理之间的区别

建议 68:了解 GIL 的局限性

建议 69:对象管理和垃圾回收

7.使用工具辅助项目开发

建议 70:从 PyPI 安装第三方包

建议 71:使用 pip 和 yolk 安装和管理包

建议 72:做 paster 来创建包

建议 73:了解单元测试的概念

建议 74:为包编写单元测试

建议 75:使用测试驱动开发 (TDD) 来提高代码的可测试性

建议 76:使用 Pylint 检查代码风格

代码风格审查

代码错误检查

查找重复和不合理的代码,便于重构

高度可配置和可定制

支持集成各种IDE和编辑器

能够根据Python代码生成UML图

可结合Jenkins等持续集成工具,支持自动代码审查

建议 77:进行有效的代码审查

建议 78:将包发布到 PyPI

8.性能分析与优化

建议 79:了解代码优化的基础知识

建议 80:使用性能优化工具

建议 81:使用 cProfile 定位性能瓶颈

建议 82:使用 memory_profiler 和 objgraph 分析内存使用情况

建议 83:努力降低算法复杂度

建议 84:掌握循环优化的基本技巧

减少循环内的计算

把显式循环改成隐式循环,当然这样会牺牲代码的可读性

尝试在循环中引用局部变量

专注于内部嵌套循环

建议 85:使用发电机提高效率

建议 86:使用不同的数据结构来优化性能

建议 87:充分利用 set

建议 88:使用多处理模块克服 GIL 缺陷

建议 89:使用线程池提高效率

建议 90:使用 Cythonb 编写扩展模块

结尾

送书

html中eval函数作用_eval()函数的作用是什么?python_python eval()函数

点击下方卡片,关注“web前端营”,回复529506即可下载

eval()函数的作用是什么?python_python eval()函数_html中eval函数作用

点开“在看”的人都变美了