zoukankan      html  css  js  c++  java
  • Python 3 学习——深浅拷贝以及函数

    Python 学习的第八小节

     写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享

    一、学习笔记

      1.深浅拷贝

        浅copy—— copy.copy()  #shallow copy

        使用 b = a.copy() 这样b是对a进行了浅copy  包含了浅copy的一切特点 

        特点:只copy“一层”  这个一层是指(假如a[ [ 1 , 2 ] , 3 , 4 ])这样,b copy后只能修改 b[1]、b[2]的值cai不会影响 a 的值,如果b修改了列表中元素的值,那么就是将a元素列表中的值同时进行了修改(内存机制)。这就是浅copy。

        深copy—— copy.deepcopy

        特点:copy过后是完全独立的  a = copy.deepcopy(b)  但是在使用深copy前  必须要导入copy   "import copy"

     

      2.集合(set)——把不同的元素组合到一起

        ①集合怎么创建

          s1 = ['liufeiduo','zuishuai']

          s = set (s1)

        ②集合对象是可哈希的,可以作为字典的键

        ③取出集合的值:for循环迭代、迭代器

        ④可变集合:set( ) 集合本身是非可哈希的、不能作为字典的键可添加或删除元素  不可变集合:frozenset( )   与前者正好相反

        ⑤集合的访问

          集合本身是无序的,不能通过切片或创建索引、只能循环遍历或使用in、not in 来进行访问

        ⑥集合的更新

          s.add( ) 添加一个元素 

          s.updata( )  每个元素都添加到序列中

          s.remove(‘liufeiduo’)  删除选中元素

          s.pop( )  随机删除

          s.clear( )  清空集合

        ⑦集合——关系测试

          并集:取两者并集   a.union(b)    ==  a | b

          交集:取两者交集   a.intersection(b)  == a & b 

          差集:取两者差集   a.difference(b)   == a - b  #in a but not in b    b.difference(a) #in b but not in a 

          对称差集:取交集的补集合  a.symmtric_difference(b)  == a ^ b    # not in a and not in b

          子集:A是不是B的子集  a.issubset(b)  == a < b

          超集:A是否完全包含B  a.issuperset(b)  == a > b

          

        特点:无序、不重复的

        作用:1.去重 2.关系测试  给一个列表去重,最简单方法就是将其转换成集合

      3.函数(重点)

        ①作用:减少了重复代码、方便修改,更易扩展维护、保持代码一致性。

        ②语法:

          def 函数名():

            函数代码

          命名规范:名字必须是下划线字母开头的、区分大小写的。

        ③含参函数

      def shuohua(name,age,sex='male'):
          print('name: %s'%name) 
          print('age: %d'%age)
         print(sex)   shuohua(name
    ='liufeiduo',age=25) # 关键字参数 shuohua('liufeiduo','25') #必需参数   sex是默认参数

     

        不定长参数

    def add(*args):  #定义参数这是重点
        sum = 0
        for i in args:
            sum += i
        print(sum)
    add(1,2,3,4,6,7,8,9,43,4,345,4,54,65,6)

        无命名参数

    def add(**kwargs):
    # print(kwargs)  #将键和键值存到字典中
    for i in kwargs:
    print('%s:%s'%(i,kwargs[i])) #打印出键和键值了

    add(job = 'IT',sex = 'male')

        通用参数

    def liufeiduo(*args,**kwargs):  #可以接受各种参数  12,2,3,4,5  age = 52 这两种都可以接收
        print(args)
        print(kwargs)
    
    liufeiduo('123',34,567,age = 23)  #无命名参数*args要放在左面,有命名参数**kwargs要放在右边,如果有默认参数,默认参数要放在最左面。  

       函数返回值

         return  作用:

              1.结束函数

              2.返回某个对象

         注意:

          函数如果没有 return ,会默认返回一个NONE。

          如果return 多个对象,那么python 会将多个对象封装成一个元组进行返回。

      函数作用域

        L: local 局部作用域

        E: enclosing 嵌套作用域

        G: global 全局变量

        B: built_in Python内置作用域

         变量查找顺序:L作用域局部>E外层(嵌套)作用域>G当前模块中的全局>Bpython内置作用域。

         局部变量不能修改全局变量,局部要想修改全局变量也可以——加个 global “global 变量”  这样就可以了。

         变量如果在Enclosing中,用关键字 nonlocal + 变量 然后才可以对变量进行修改。

     

    二、心得

      学到了函数,开始逐渐步入了Python学习的正式阶段了,可以写一些功能性的小代码了。一定要着手去练,保持代码量的书写,才能巩固自己所学到的所有知识。

     

     

  • 相关阅读:
    Python小白学习之路(五)—【类和对象】【列表】【列表相关功能】
    Python小白学习之路(四)——第一次练习题
    Python小白学习之路(三)—【数字功能】【字符串功能】
    Python小白学习之路(二)—【Pycharm安装与配置】【创建项目】【运算符】【数据类型】
    Python初体验(一)—【配置环境变量】【变量】【input】【条件语句】【循环语句】
    HTML下直接调用Less文件
    继承的几种方式
    sublime从官网纯净版到插件完整版
    bower工具的简单使用
    sublime修改代码字体颜色
  • 原文地址:https://www.cnblogs.com/jinzejun/p/8589799.html
Copyright © 2011-2022 走看看