python的函数与模块
Python中的函数可以分为两种:一种是Python中内置的函数,例如众所周知的print();而另一种就是自定义函数。
编写一个函数很简单,Python中的函数一般包含以下五个部分。
- 函数的标识符。首先要用def来创建一个函数,这里的def就是标识符(define的缩写)
- 函数名。每一个函数都要有一个名字,最好这个函数名字能体现出他的作用。
- 函数的参数。如果将函数比作一个机器,那么参数就是放入这个机器的原料。函数的参数需要放在()中。
- 函数体。这部分是函数的主体,里面是实现函数功能的代码。但是函数体的语句需要相对函数标识符缩进。
- 函数的return语句。表示函数结束,可以返回一个值,若没有return语句,则返回None。
下面定义一个计算平方的函数:
def square(x):
y = x**2
return y
如果需要使用这个函数,只需要使用这个函数名和参数即可,例如计算99的平方,只需要输入square(99)即可。
除了加上定义的函数之外,Python还支持匿名函数的使用。匿名函数使用lambda关键字创建。Python中Lambda表达式的形式如下所示:
在Python中Lambada表达式用于简单的函数,例如,上例中的square函数就可以写成下面的形式,输出的结果是一样的。
如果将一些经常使用的函数编写到一个Python文件中,在任何程序中都可以调用这些函数,则会更加方便,C语言的头文件以及JAVA中的包就实现了这样的功能,在Python中,这种文件称为模块,学过C的一定对#include<stdio.h>这句不陌生,而Python中就是import语句。
0x01 import语句
如果希望引入某一个模块,可以使用import加上模块的名字,例如要引用Socket模块,就可以使用:
import socket
如果要同时引用多个模块,可以使用逗号隔开:
import socker,random
这样引用之后,再调用模块中的函数时,必须使用“模块名.函数名”来引用。
0x02 from…import语句
一个模块可能包含大量函数,但是一个程序又不会使用它的全部函数,而是用哪个引入那个,这时候就要使用from···import语句。例如,只需要引入scapy.all模块中的srp函数,就可以使用以下语句:
from scapy.all import srp
通过这种方式引入的时候,调用韩式时只需要给出函数名,不需要给出模块名。如果需要把一个模块的所有内容全部导入,使用的语句只需将函数名写成*即可。
from scapy.all import *
- import 模块:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径。
- from…import:导入了一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是个绝对路径。
- from…import*:是把一个模块中所有函数都导入进来; 注:相当于:相当于导入的是一个文件夹中所有文件,所有函数都是绝对路径。
0x03 总结
from…import *语句与import区别在于:
- import 导入模块,每次使用模块中的函数都要是定是哪个模块。(哪个文件夹中的哪个文件)
- from…import * 导入模块,每次使用模块中的函数,直接使用函数就可以了;注因为已经知道该函数是那个模块中的了。(已经绑定了文件夹,只需要知道要用哪个文件即可)
例如:
import random
for i in range(3):
print(random.randint(1,9))
注:因randint()函数属于random模块,必须在函数名称之前先加上random,告诉Python在random这个“文件夹”中寻找这个randint()这个“文件”。
from random import *
for i in range(3):
print(randint(1,9))
注:这里我们没有加random这个前缀,直接引用了randint()这个函数,这是因为我们已经给这个程序绑定了random这个“文件夹”,我们只需要告诉程序我们要使用这个“文件夹”下面的randeint()这个“文件”即可。