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学习的正式阶段了,可以写一些功能性的小代码了。一定要着手去练,保持代码量的书写,才能巩固自己所学到的所有知识。

 

 

原文地址:https://www.cnblogs.com/jinzejun/p/8589799.html