当前位置:首页 > 天道酬勤 > 正文内容

poco支持(pocsuite3)

张世龙2021年12月21日 11:22天道酬勤1060

从Python入门到写POC系列文章,这是IC春秋论坛作家“Exp1ore”懦弱的母鸡原创的完整教程。 想系统地学习Python技能的伙伴,请不要错过哦。

今天,我们将分享从Python入门到创建POC特殊函数、模块、软件包和库的知识点。

01、特殊函数

lambda函数。 这个函数是一行可以解决问题的函数。

在Python解释器中运行多行版本:

defadd(x,y ) :a=xy.printa.add ) 3,5 )八行版(引入了lambda函数) :

add=lambda x,y : xy add (3,5 )8 ) ) ) ) ) ) )。

使用方法:

在lambda函数之后直接加入变量,在变量之后直接加入冒号,在冒号之后加入表达式,完美解决。

请给我仪式:

在lambda arg1、arg2、argn : expressionusingarguments中,可以使用help命令显示map函数的官方文档。

帮助(地图)帮助建筑-信息管理模块_建筑_ :地图.函数,序列, --listreturnalistoftheresultsofapplyingthefunctiontotheitemsoftheargumentsequence (s ).if more than one sequence is given thefuncttence (s ).if more than一次谐波连接性tlistconsistingofthecorrespondingitemofeachsequence,substitutingnoneformissingvalueswhennotallsequenceshavethesamelength.iii returnalistoftheitemsofthesequence (Oralistoftuplesifmorethanonesequence ).

使用方法:

列举map (函数、序列对象)0-10的平方数的例子:

numbers=range(11 ) map ) lambdax:x**2,numbers (0,1,4,9,16,25,36,49,64,81,100 )一种简单的方法:

[ x * * 2福利函数] [ 0,1,4,9,16,25,36,49,64,81,100 ] reduce函数也可以通过帮助命令学习。

顾名思义,filter函数是过滤器的意思,其用法与map相同。 过滤器(函数、序列对象)。

举一个例子:

numbers范围(-2,11 )数字(-2,- 1,0,1,2,3,4,5,6,7,8,9,10 )过滤器) lambdax3360x5,数字

zip ) )是Python的内置函数,它接收一组可重复的对象作为参数,将对象中的对应元素打包为tuple (元组),然后返回由这些tuples组成的list )列表。 如果传递的参数长度不同,则返回的list长度与参数中最长的对象相同。 * *使用符号操作符,可以进行list unzip (解冻)。

通过help命令可以看到:

帮助(zip )帮助套件-信息管理模块_构建_ : zip…) zip(seQ1[,seq2 [.]] ) ) )

-> [(seq1[0], seq2[0] ...), (...)] Return a list of tuples, where each tuple contains the i-th element from each of the argument sequences. The returned list is truncated    in length to the length of the shortest argument sequence.

举个例子:

>>> a = [1,2,3]>>> b = [4,5,6]>>> zip(a,b)[(1, 4), (2, 5), (3, 6)]

长度不等时,取长度最小的。

>>> c = 'HELL0'>>> d = 'MOMO'>>> zip(c,d)[('H', 'M'), ('E', 'O'), ('L', 'M'), ('L', 'O')]

还有个常用的是构造字典:

>>> demo1 = ['a','b','c']>>> demo2 = ['d','e','f']>>> demo3 = zip(demo1,demo2)>>> demo = dict(demo3)>>> print demo{'a': 'd', 'c': 'f', 'b': 'e'}

02、模块

有C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的。那么在Python中,如果要引用一些内置的函数,该怎么处理呢?

在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块。

很多熟悉import语句的朋友都知道,在前面的内容讲述中,用到过base64这个库。

例子是这样的:

#coding = utf-8import base64def demo(): str = "TU9NTyBpcyBhIGJlYXV0aWZ1bCBnaXJs" result = base64.b64decode(str) print result return print "KISS MOMO"demo()

这个是base64库,Python标准库之一,总而言之,就是一个模块,用import语句引入了这个模块,然后就可以使用模块中的函数了,不用自己动手写具体的函数,节约时间。

也可以这么理解,模块是一个程序,就是.py的程序,如何引入模块?

有以下四种方法:

【1】导入整个模块

>>> import sys>>> print sys.argv['']

【2】只导入我们要用到的

>>> from sys import argv>>> print argv['']

【3】模块名太长,可以起个别名

>>> import sys as s>>> print s.argv['']

【4】从模块中导入所有

>>> from sys import *>>> print path #输出sys模块中的path['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk','/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages','/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat','/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

最后一种导入方法不建议使用,原因:若自己定义的变量或函数与所导入模块中的变量或函数同名,易产生混淆。

定义一个自己的模块,在一个目录下,创建了一个demo.py当作模块。

# coding = utf-8lang = 'HELL0 MOMO'

接下来,创建一个py,引入这个模块:

#coding = utf-8import demoprint demo.lang

如果是不同的目录该咋办呢?

这里我们就要用到sys库,把demo.py这个模块放到了c盘。

>>> import sys>>> sys.path.append("C:\Users\20148\Desktop\demo.py")

用这种方法告诉Python解释器,我写的文件在哪里,C:\Users\20148\Desktop\demo.py是我的文件路径,然后就可以直接引入了。

>>> import demo>>> demo.lang'HELL0 MOMO'

回到demo.py的储存目录,会发现多一个pyc文件。

这是为什么呢?

因为当Python解释器都去了.py的文件,先将它变成由字节码组成的pyc文件,然后这个pyc文件把文件给了一个叫Python虚拟机的东西运行。

继续深入,将demo.py这个文件改造。

#coding = utf-8def lang(): return "HELL0 MOMO!!!"if __name__ == '__main__':        print lang()

如果将它作为模块,导入上面的方法,sys.path.append("路径"),然后查看模块属性,dir( )。

>>> dir(demo)['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'lang']

都是一个文件,我们可以把它当作程序执行,也可以当作模块引入。

>>> __name__'__main__'>>> demo.__name__'demo'

如果是程序执行的话,__name__=="__main__"。

如果是模块呢?demo.__name__==“demo”,即为模块的名称。

如果是模块的引入,就不用写if __name=="__main__"了。

03、包和库

包(带 __init__.py 的文件夹)和库,比模块大了,一个包(就是咱们熟悉的目录)里面有好多的模块(即为.py文件),就跟你钱包一样,有好多钱一样,当然了,库就更大了,一个Python的标准库有好多的包,包又有一堆的模块。

举个例子:

建立一个叫ichunqiu的目录,里面放两个py文件,一个BaZong.py,一个MoMo.py,再建立一个空文件__init__.py。

BaZong.py源码如下:

#coding = utf-8 def BaZong():        print 'HELL0 MOMO!!!'

MoMo.py源码如下:

#coding = utf-8 def MoMo():        print 'HELL0 BaZong!!!'

然后,咱们在与ichunqiu同级的目录中,创建一个demo.py调用这个ichunqiu的包。

#coding = utf-8 import ichunqiu.BaZongimport ichunqiu.MoMo ichunqiu.BaZong.BaZong()ichunqiu.MoMo.MoMo()

以上是今天要分享的内容,大家看懂了吗?

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26280.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。