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,下方二维码),我会第一时间在订阅号推送图文教程和视频教程。

时间: 2024-12-23 18:08:38

Python黑帽编程2.1 Python编程哲学的相关文章

Python黑帽编程 3.4 跨越VLAN

Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络障碍,将不同子网中的用户划到同一个VLAN中.图2是一个VLAN划分的例子. 图2 实现VLAN的方式有很多种,基于交换设备的VLAN划分,一般有两种: l  基于交换机的端口划分 l  基于IEEE 802.1q协议,扩展以太网帧格式 基于第二层的VLAN技术,有个Trunking的概念,Tr

Python黑帽编程 3.1 ARP欺骗

Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监听.篡改.重放.钓鱼等攻击方式. 在进行ARP欺骗的编码实验之前,我们有必要了解下ARP和ARP欺骗的原理. 3.1.1 ARP和ARP欺骗原理 ARP是地址转换协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,工作在OSI 模型的第二层,在本层和硬件接

Python黑帽编程2.7 异常处理

Python黑帽编程2.7 异常处理 异常是个很宽泛的概念,如果程序没有按预想的执行,都可以说是异常了.遇到一些特殊情况没处理会引发异常,比如读文件的时候文件不存在,网络连接超时.程序本身的错误也可以算作异常,比如把字符串当整数来处理,拼写错误. 不论是系统还是框架,都会对基本异常进行分类,比如IO异常,内存溢出等等.很多时候,针对特有的业务,我们也可以自定异常. 下面我们先看一个引发异常的例子: Print 'hello' 这个例子很简单,我们将print的首字母大写.这会引发一个错误: 图2

Python黑帽编程2.4 流程控制

Python黑帽编程2.4  流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # -*- coding: UTF-8 -*- x=int(input('请输入一个整数:')) if x==0: print '%d ==0' % x elif x<0: print '%d <0' % x else: print '%d >0' % x 这段代码使用if,elif和else三个

PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获--补充

荒废了一个多月了,重新捡起来,手生了不少.发现在<4.1下>的文章里没有 提到pcap库,实在是不应该. 在网络数据分析的工具中,tcpdump绝对是大名鼎鼎,tcpdump底层是libpcap库,由C语言编写. Pcapy模块则是基于libpcap的Python接口.pcapy在github上的项目地址为: https://github.com/CoreSecurity/pcapy. 下面我们来看看如何使用pcapy实现数据包的捕获. #!/usr/bin/python import pca

Python黑帽编程 4.0 网络互连层攻击概述

Python黑帽编程 4.0 网络互连层攻击概述 是时候重新温习下下面这张图了. 图2 本章的内容核心包含上图中的网络层和传输层.TCP/IP是整个网络协议体系中的核心,因为从这里开始,数据传输从局域网迈向了广阔的互联网,我们的程序也有能力处理来自互联网的数据,可以直接对互联网上的主机进行攻击和测试. 还是老话,希望各位深入的学习协议,通过抓包工具练习数据包分析,通过实例理解协议.下面我们把本章涉及到的内容做简略的描述. 4.0.1 嗅探与嗅探器原理 嗅探是一个综合概念,涉及到我们之前讲到的第二

Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上)

Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上) 网络嗅探,是监听流经本机网卡数据包的一种技术,嗅探器就是利用这种技术进行数据捕获和分析的软件. 编写嗅探器,捕获数据是前置功能,数据分析要建立在捕获的基础上.本节就数据捕获的基本原理和编程实现做详细的阐述. 4.1.1 以太网网卡的工作模式 以太网网卡是我们日常生活中见得最多的网卡,我们的电脑通过网线或者wifi接入网络,使用的都是以太网网卡. 图2 常用的以太网卡支持以下工作模式:广播模式.多播模式.直接模式和混杂模式.

Python黑帽编程2.9 面向对象编程

Python黑帽编程2.9 面向对象编程 我个人认为,计算机语言的发展,有两个方向,一个是从低到高的发展过程,在这个过程中,语言的思考和解决问题的方式是面向硬件的.硬件本质上处理的是信号,在此基础上,我们给硬件赋予了一定的"逻辑思维"能力,为了方便硬件帮我们做事,抽象出了指令的概念,进而出现了汇编语言,然后有了Pascal和C这样的标准的结构化语言.语言一路向上发展,都是根植于指令的,根植于指令就意味着流程和数据代表了一切,数据的变化成为我们表达和抽象这个世界的根本.不可否认,宇宙间的

Python黑帽编程3.0 第三章 网络接口层攻击基础知识

3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP四层模型之间的对应关系,最后是本章教程需要的几个核心Python模块. 3.0.1 TCP/IP分层模型 国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model).