zoukankan      html  css  js  c++  java
  • python基础知识(三)

    摘要:主要涉及新数据类型set集合、三元运算、深浅拷贝、函数基础、全局变量与局部变量

    一、set --> 无序,不允许重复的集合 不允许重复的列表,
       1,创建
        s = set() 接收一个可迭代参数
         l = [11,22,11,22] s = set(l) --> print s --> {11,22}
        s = {11,22,33}
        创建空集合 默认使用 s = set()
       2,方法
        .add()  添加一个元素
        .clear()
        a.difference(b)  a中存在,b中不存在,返回新值,变量接收
        a.difference_update(b)  a中存在,b中不存在,a更新
        .discard()  移除,不存在不报错
        .remove()  移除,不存在报错
        .pop() 移除,并可以把移除元素接收称为新变量
        .intersection() 交集 --> 返回交集部分并形成新变量
        a.intersection_update(b) ---> 返回a与b的交集,并把它更新为a
        a.isdisjoint(b) --->  a 与 b 没有任何交集 才会返回True,否则都为False
        a.issubset(b) ---> 询问a 是 b的 子集合,返回True or False
        a.issuperset(b) ---> 询问a 是 b的 父集合,返回True or False
        a.symmetric_difference(b) ---> 判断a 与 b 集合的差别之处,并把所有的返回生成新变量
        a.symmetric_difference_update(b)  ---> 判断a 与 b 集合的差别之处,并把所有差别来更新a
        .union() ---> 把2哥集合 组合成1个集合
        a.update(b) ---> 把a 与 b 集合 组合为1个集合,并更新为a

    二、三元运算/三目运算   

      if 1==1:    

        print('alex')   

      else:    

        print('ethan')

       转成三元运算形式 --> name='alex' if 1==1 else 'ethan' --> print(name)

       变量=值1 if 条件成立 else 值2

    三、深浅拷贝:

       数字,字符串的修改:就是在内存中重新创建,数字,字符串或是赋值,只要是拷贝,无论深拷贝 还是浅拷贝 ,id都是一样的

       其他 列表,元组,字典:深拷贝:除了最后一层字符串或是数字无需拷贝,地址不变外,其他的所有层都copy 产生新的id地址    

                 浅拷贝:只拷贝最外面一层,其余层id都不变

    四、函数:  

     1,定义函数    关键字 def --> 函数名():   

     2,返回值    函数里不设置return,默认返回NONE    函数里设置return,调用函数的返回值就是return之后的值    

      一旦遇到return 函数return以下代码不再执行,函数执行了return语句,那么函数的生命就结束了,   

     3,参数    

      形参、实参:

      普通参数,默认数量要一致,并且一一对应    

      指定参数: 执行函数时,指定参数    

      默认参数:定义函数时设置默认值,调用函数时,可传可不传,传的话就覆盖默认值,默认参数放在参数尾部    def func(a1,a2,a3='ethan')  

          动态参数:实参传几个,就接收几个       

        *args 得到的是元组 tuple ,传的参数为元组元素         

         **kwargs ---> 需要传成 k1=123,k2=456 这种键值对形式,得到的是字典      

      万能参数: *args,**kwargs    

          例1 --> def f1(*args):       

                print (args,type(args))

                 l1 =[11,22,33]     

              f1(l1) --> ([11,22,33],)      

              f1(*l1) --> (11,22,33)

                 f1(123,456,[12,32]) ---> (123,456,[12,32])

            例2 --> def f2(**kwargs):       

                print (kwargs,type(kwargs))

                 f2(k1=123,k2=345)  ---> {'k1':123,'k2':345}   

    4,为动态参数传入 列表,元组,字典类型的参数    

    **************************** 例题 *****************************   

     list_new = [11,22,33]    tuple_new = (44,55,66)    dict_new = {'k1':234,'k2':345}

     如果1, def f1(*args):       

          print(args)

             def f2(**kwargs):       

          print(kwargs)

     f1(list_new) ---> ([11,22,33],)      f1(tuple_new) ---> ((44,55,66),)      f2(dict_new) ---> ({'k1':234,'k2':345},)

     f1(*list_new) ---> (11,22,33)      f1(*tuple_new) ---> (44,55,66)      f2(**dict_new) ---> {'k1':234,'k2':345}

    五、局部变量,全局变量:    

      规则:命名时全局变量大写,局部变量小写    

      局部变量:仅仅在定义的函数部分使用 --> 修改为全局变量 global

      

      对于 set集合、列表、字典等 作为参数进行传递,传的是引用,id不变,不是新创建   

      对于def 函数,一旦参数args 在代码段里使用了 args = xxxx 相当于在内存里重新创建,导入的实参跟这个args新赋值没啥关系

  • 相关阅读:
    图片上传-下载-删除等图片管理的若干经验总结3-单一业务场景的完整解决方案
    图片上传-下载-删除等图片管理的若干经验总结2
    HDU 1195 Open the Lock
    HDU 1690 Bus System
    HDU 2647 Reward
    HDU 2680 Choose the best route
    HDU 1596 find the safest road
    POJ 1904 King's Quest
    CDOJ 889 Battle for Silver
    CDOJ 888 Absurdistan Roads
  • 原文地址:https://www.cnblogs.com/ethancui/p/5530685.html
Copyright © 2011-2022 走看看