Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学
本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言。我带大家膜拜下Python作者的Python之禅,然后再来了解下Python的编程规范。
2.1.1 Zend Of Python
在Kali中启动终端,输入Python,进入交互模式。
图2
输入命令
import this
“一首诗”呈现在我们眼前。
图3
内容如下:
Beautiful is better than ugly.
优美胜于丑陋
Explicit is better than implicit.
明了胜于晦涩
Simple is better than complex.
简单胜过复杂
Complex is better than complicated.
复杂胜过凌乱
Flat is better than nested.
扁平胜于嵌套
Sparse is better than dense.
间隔胜于紧凑
Readability counts.
可读性很重要
Special cases aren't special enough to break the rules.
即使假借特例的实用性之名,也不违背这些规则
Although practicality beats purity.
虽然实用性次于纯度
Errors should never pass silently.
错误不应该被无声的忽略
Unless explicitly silenced.
除非明确的沉默
In the face of ambiguity, refuse the temptation to guess.
当存在多种可能时,不要尝试去猜测
There should be one-- and preferably only one --obvious way to do it.
应该有一个,最好只有一个,明显能做到这一点
Although that way may not be obvious at first unless you're Dutch.
虽然这种 方式可能不容易,除非你是python之父
Now is better than never.
现在做总比不做好
Although never is often better than *right* now.
虽然过去从未比现在好
If the implementation is hard to explain, it's a bad idea.
如果这个实现不容易解释,那么它肯定是坏主意
If the implementation is easy to explain, it may be a good idea.
如果这个实现容易解释,那么它很可能是个好主意
Namespaces are one honking great idea -- let's do more of those!
命名空间是一种绝妙的理念,应当多加利用
关于这段圣经般的描述,我这里也不做过多解释了,随着编程经验的丰富,理解也会越来越深刻。此刻,你只需默默的读一遍,然后放到自己的收藏夹里。
2.1.2 编码规范
下面的内容很重要,建议初学者当做金科玉律来遵守。
对于初学者,我必须要强调的是,Python没有C语言那样的大括号,可以表示代码块和代码之间的层级关系,也没有VB那样的begin…end,它是靠缩进来表示这些的。对于用惯了大括号的的程序员来说,多少会有些不适应,因为有大括号的情况下,我们可以随意调整缩进,让代码按照我们的审美来排列,但是在Python里就不能这么做了。看下面一个简短的示例:
stringStest = 'abcdefghijk'
for char in stringStest[1:]:
if char !='c':
print 'not c'
这段代码很简单,首先声明了一个字符串变量stringStest,然后遍历字符串中的中的字符,判断是不是字母“c”,如果不是打印“not c”。运行之后,会看到如下错误:
图4
简单的分析下,for循环和变量声明处于同级,二者目前作为测试代码的顶级,不需要缩进。if条件判断是for的子集,应该有4个空格的缩进,print语句是if的子集,应该和if参照再有4个空格的缩进。修改完毕的代码如下:
图5
运行结果如图6.
图6
下面我把PEP8的Python编码规范转引过来,翻译不是我的原创,来自于http://damnever.github.io/2015/04/24/PEP8-style-guide-for-python-code/,感谢damnever的辛苦付出,请大家点击链接阅读原文。
第2.2节《数据类型》已经在微信订阅号抢先发布,心急的同学进入订阅号(二维码在下方),从菜单“网络安全”—>”Python黑帽编程”进入即可。
由于教程仍在创作过程中,在整套教程完结前,感兴趣的同学请关注我的微信订阅号(xuanhun521,下方二维码),我会第一时间在订阅号推送图文教程和视频教程。问题讨论请加qq群:Hacking (1群):303242737 Hacking (2群):147098303。
关注之后,回复请回复“Python”,获取更多内容。
Python黑帽编程2.1 Python编程哲学的更多相关文章
- Python 黑帽编程大纲(变化中)
Python 黑帽编程大纲(预览版) 教程说明: 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Pytho ...
- Python黑帽编程 3.4 跨越VLAN
Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理 ...
- Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016
Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Att ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- Python黑帽编程1.3 Python运行时与包管理工具
Python黑帽编程1.3 Python运行时与包管理工具 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...
- Python黑帽编程 2.0 第二章概述
Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...
- Python黑帽编程2.2 数值类型
Python黑帽编程2.2 数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...
- Python黑帽编程2.3 字符串、列表、元组、字典和集合
Python黑帽编程2.3 字符串.列表.元组.字典和集合 本节要介绍的是Python里面常用的几种数据结构.通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储.查询 ...
随机推荐
- Git版本控制管理学习笔记4-文件管理和索引
可以认为使用Git时,我们会遇到3个空间:工作目录.索引.版本库.我们关心的,就是在新建.修改等操作时,这三者之间发生了怎样的变化. 笼统的讲,就是在工作目录下编辑,在索引中积累修改, ...
- react native AsyncStorage的使用
如果现在有一个需求,是要把用户的账号密码保存到本地,大家会怎么做的呢?如果在android中,我相信一大部分人会想到SharedPreferences,这是一个以键值对的形式进行存储的.那如果在rea ...
- Objective-C 源码初探 __attribute__
#import <Foundation/Foundation.h> //延迟执行,delayFunc函数即为延迟执行的函数 #define onExit\ __strong void (^ ...
- [软件推荐]快速文件复制工具(Limit Copy) V4.0 绿色版
快速文件复制工具(Limit Copy)绿色版是一款智能变频超快复制绿色软件. 快速文件复制工具(Limit Copy)功能比较完善,除了文件复制还可以智能变频,直接把要复制的文件拖入窗口即可,无需手 ...
- 求单链表L各结点的阶乘之和(c语言)
链表需要用到指针 阶乘需要用到递归 链表中的注意事项: 1.链表L是否等于NULL ----------是循环结束的条件 2.链表L->Data ---------取链表L中各个结点的值 3.L ...
- Android图书应用-西游记
下载App 屏幕截图: 功能介绍:1. 侧边滑动目录导航2. 阅读偏好设置3. 记忆阅读进度 内容介绍: 西游记,中国古典名著,内容分三大部分: 第一部分(一到七回)介绍孙悟空的神通 ...
- jQuery中设置form表单中action的值的方法
下面介绍在jQuery中设置form表单中action的值的方法. $("#myFormId").attr("action", "userinfo.s ...
- HTML5 与 CSS3 jQuery部分知识总结【转】
一. HTML5 为什么需要HTML5 什么是HTML5 HTML5现状及浏览器支持 HTML5优点与缺点 HTML5语法规则与文档声明 HTML5新增表达标签 HTML5多媒体组件 HTML5 ...
- javascript变量的作用域
javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象 讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...
- <!DOCTYPE html>很重要
噩梦开始的源头:之前写html或者jsp页面,从来不注意doctype的声明,也不太明白doctype的作用.直到最近碰到了一个非常奇葩的 bug:某一个页面在IE7和8,Chrome,ff等下正常, ...