Python3,,集合class se


集合

class set(object):    """    set() -> new empty set object    set(iterable) -> new set object         Build an unordered collection of unique elements.    """    def add(self, *args, **kwargs): # real signature unknown        """        Add an element to a set,添加元素                 This has no effect if the element is already present.        """        pass     def clear(self, *args, **kwargs): # real signature unknown        """ Remove all elements from this set. 清除内容"""        pass     def copy(self, *args, **kwargs): # real signature unknown        """ Return a shallow copy of a set. 浅拷贝  """        pass     def difference(self, *args, **kwargs): # real signature unknown        """        Return the difference of two or more sets as a new set. A中存在,B中不存在                 (i.e. all elements that are in this set but not the others.)        """        pass     def difference_update(self, *args, **kwargs): # real signature unknown        """ Remove all elements of another set from this set.  从当前集合中删除和B中相同的元素"""        pass     def discard(self, *args, **kwargs): # real signature unknown        """        Remove an element from a set if it is a member.                 If the element is not a member, do nothing. 移除指定元素,不存在不保错        """        pass     def intersection(self, *args, **kwargs): # real signature unknown        """        Return the intersection of two sets as a new set. 交集                 (i.e. all elements that are in both sets.)        """        pass     def intersection_update(self, *args, **kwargs): # real signature unknown        """ Update a set with the intersection of itself and another.  取交集并更更新到A中 """        pass     def isdisjoint(self, *args, **kwargs): # real signature unknown        """ Return True if two sets have a null intersection.  如果没有交集,返回True,否则返回False"""        pass     def issubset(self, *args, **kwargs): # real signature unknown        """ Report whether another set contains this set.  是否是子序列"""        pass     def issuperset(self, *args, **kwargs): # real signature unknown        """ Report whether this set contains another set. 是否是父序列"""        pass     def pop(self, *args, **kwargs): # real signature unknown        """        Remove and return an arbitrary set element.        Raises KeyError if the set is empty. 移除元素        """        pass     def remove(self, *args, **kwargs): # real signature unknown        """        Remove an element from a set; it must be a member.                 If the element is not a member, raise a KeyError. 移除指定元素,不存在保错        """        pass     def symmetric_difference(self, *args, **kwargs): # real signature unknown        """        Return the symmetric difference of two sets as a new set.  对称差集                 (i.e. all elements that are in exactly one of the sets.)        """        pass     def symmetric_difference_update(self, *args, **kwargs): # real signature unknown        """ Update a set with the symmetric difference of itself and another. 对称差集,并更新到a中 """        pass     def union(self, *args, **kwargs): # real signature unknown        """        Return the union of sets as a new set.  并集                 (i.e. all elements that are in either set.)        """        pass     def update(self, *args, **kwargs): # real signature unknown        """ Update a set with the union of itself and others. 更新 """        pass

函数

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:

while True:    if cpu利用率 > 90%:        #发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接        if 硬盘使用空间 > 90%:        #发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接        if 内存占用 > 80%:        #发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接

腚眼一看上述代码,if条件语句下的内容可以被提取出来公用,如下:

def 发送邮件(内容)    #发送邮件提醒    连接邮箱服务器    发送邮件    关闭连接    while True:        if cpu利用率 > 90%:        发送邮件(‘CPU报警‘)        if 硬盘使用空间 > 90%:        发送邮件(‘硬盘报警‘)        if 内存占用 > 80%:

对于上述的两种实现方式,第二次必然比第一次的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:

  -函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可

  -面向对象:对函数进行分类和封装,让开发“更快更好更强...”

函数式编程最重要的是增强代码的重用性和可读性

定义和使用

def 函数名(参数):           ...    函数体    ...    返回值

函数的定义主要有如下要点:

  -def:表示函数的关键字

  -函数名:函数的名称,日后根据函数名调用函数

  -函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...

  -参数:为函数体提供数据

  -返回值:当函数执行完毕后,可以给调用者返回数据。

参数

 为什么要有参数

  无参数实现

def CPU报警邮件()    #发送邮件提醒    连接邮箱服务器    发送邮件    关闭连接def 硬盘报警邮件()    #发送邮件提醒    连接邮箱服务器    发送邮件    关闭连接def 内存报警邮件()    #发送邮件提醒    连接邮箱服务器    发送邮件    关闭连接 while True:     if cpu利用率 > 90%:        CPU报警邮件()     if 硬盘使用空间 > 90%:        硬盘报警邮件()     if 内存占用 > 80%:        内存报警邮件()

有参数实现

def 发送邮件(邮件内容)    #发送邮件提醒    连接邮箱服务器    发送邮件    关闭连接 while True:     if cpu利用率 > 90%:        发送邮件("CPU报警了。")     if 硬盘使用空间 > 90%:        发送邮件("硬盘报警了。")     if 内存占用 > 80%:        发送邮件("内存报警了。")

三种不同参数

普通参数

# ######### 定义函数 ######### # name 叫做函数func的形式参数,简称:形参def func(name):    print name# ######### 执行函数 ######### #  ‘tom‘ 叫做函数func的实际参数,简称:实参func(‘tom‘)

默认参数

def func(name, age = 18):        print "%s:%s" %(name,age)# 指定参数func(‘tom‘, 19)# 使用默认参数func(‘jerry‘)

动态参数

def func(*args):    print args# 执行方式一func(11,33,4,4454,5)# 执行方式二li = [11,2,2,3,3,4,54]func(*li)
def func(**kwargs):    print args# 执行方式一func(name=‘tom‘,age=18)# 执行方式二li = {‘name‘:‘tom‘, age:18, ‘gender‘:‘male‘}func(**je)
def func(*args, **kwargs):    print args    print kwargs

Python3

评论关闭