zoukankan      html  css  js  c++  java
  • python 學習深淺拷貝、集合、、作用域、函數

    python 學習深淺拷貝、集合、、作用域、函數

    2020開年新冠肺炎流行大部分人員、工廠、單位無法復工生產,人員隔離每天外出都要戴口罩,在家隔離期間悶壞了感覺把半年的口糧都幹掉了,嚴重考察大家的資本厚度,估計很多年輕人快要吃土,咱們還是要繼續學習python爭取有機會增加錢包厚度,爭取在以後的生活中可以像有錢人一樣實現財務自由

    深淺拷貝


    # 淺拷貝----只拷貝第一層copy()
    import copy
    husband = ['xiaohu', 111, [15000, 6000]]

    wife = husband.copy() #淺拷貝
    wife[0] = 'jiujingfazi'
    wife[1] = 222
    wife[2][1] -= 3000
    print(husband)
    print(wife)

    # 深拷貝----deepcopy() 拷貝一份
    xiaosan = copy.deepcopy(husband) #深拷貝
    xiaosan[0] = 'cangjingkong'
    xiaosan[1] = 333
    xiaosan[2][1] -= 1999
    print(xiaosan)
    print(wife)



    #****************************************

    set集合,

    特點:去除重複(如下打印),無序,可變集合:可添加和刪除元素,非可哈希的,不可做鍵
    集合是一个无序的,不重复的数据组合,它的主要作用如下:

    去重,把一个列表变成集合,就自动去重了
    关系测试,测试两组数据之前的交集、差集、并集等关系





    s = set('cangjingkong')
    print(s) #{'k', 'i', 'a', 'c', 'g', 'j', 'o', 'n'}


    s4 = set([12, 'dd', 'ff'])
    s4.add('uu')#添加一個元素
    print(s4)

    #*******************************************

    s4.update('fuck')#更新
    print(s4)

    s4.update('jjj')#更新,重複的話只更新進去1個
    print(s4)


    s4.update([33, 'li', 'dd'])#更新
    print(s4)

    s4.update('45', '67')#更新
    print(s4)


    s4.remove(33)
    print(s4)


    s4.pop()
    print(s4)

    s4.clear()
    print()



    del s4
    print(s4)
    #*******************************
    #集合類型操作符

    print(set('hua') == set('huaua'))#返回一個True
    print(set('hua') < set('huawwww'))#返回一個Tru


    s = set([3,5,9,10]) #创建一个数值集合

    t = set("Hello") #创建一个唯一字符的集合


    a = t | s # t 和 s的并集

    b = t & s # t 和 s的交集

    c = t – s # 求差集(项在t中,但不在s中)

    d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)



    基本操作:

    t.add('x') # 添加一项

    s.update([10,37,42]) # 在s中添加多项



    使用remove()可以删除一项:

    t.remove('H')


    len(s)
    set 的长度

    x in s
    测试 x 是否是 s 的成员

    x not in s
    测试 x 是否不是 s 的成员

    s.issubset(t)
    s <= t
    测试是否 s 中的每一个元素都在 t 中

    s.issuperset(t)
    s >= t
    测试是否 t 中的每一个元素都在 s 中

    s.union(t)
    s | t
    返回一个新的 set 包含 s 和 t 中的每一个元素

    s.intersection(t)
    s & t
    返回一个新的 set 包含 s 和 t 中的公共元素

    s.difference(t)
    s - t
    返回一个新的 set 包含 s 中有但是 t 中没有的元素

    s.symmetric_difference(t)
    s ^ t
    返回一个新的 set 包含 s 和 t 中不重复的元素

    s.copy()
    返回 set “s”的一个浅复制



    作用域

    變量查找順序:LEGB,局部作用域>外層作用域>當前模塊作用域>python內置作用域

    L:local局部作用域
    E:enclosing 嵌套作用域
    G:global 全局作用域
    B:built-in 系統固定模塊裏面的變量
    ******************
    x= int(2.9) #int built-in

    count = 0 #global

    def outer():
    o_count = 1 #enclosing
    def inner():
    i_count = 2 #local
    print(o_count)
    inner()
    outer()
    *****************

    只對模塊,類,函數才能引入新作用域
    對於一個變量,內部作用域先聲明就會覆蓋外部變量,不聲明直接使用就是使用的外部作用域變量
    內部作用域要修改外部作用域變量時,全局變量要使用glob關鍵字,嵌套作用域變量要使用nonlocal關鍵字


    函數是有作用域的,函數中的變量只能在這個函數中使用
    先找自己的部分,找不到再找外部作用域


    由內而外的找

    global :全局變量
    nonlocal:局部變量




    函數

    1.避免重複代碼
    2.方便修改,更易擴展
    3.保持代碼一致性


    函數創建
    **************************
    define 函數名(參數):#定義一個函數
    print('ok')

    函數名()#調用這個函數
    ***************************

    函數名命名規則:
    函數名區分大小寫
    函數名必須以下劃線或者字母開頭,不能以數字或者特殊字符命名
    函數名不能是保留字
    *******************
    def add(a,b):
    print(a+b)

    add(2,3)
    add(4,5)
    *******************


    函數的參數:
    必備參數
    關鍵字參數
    默認參數
    不定長參數:*args放左邊,**kwargs放右边


    函數名可以進行賦值
    函數名可以作為函數參數,還可以作為函數的返回值





















    无论你选择做什么,追求完美的程度决定你成就的高度。
  • 相关阅读:
    HUB_mysql学习笔记
    SQL学习笔记
    java_cmd_命令行
    JavaScript_2016_8_28
    linux mysql 安装配置
    solr 添加索引
    solr 查询 实例分析
    solr update接口常用方法
    solr schema.xml文档节点配置
    solr4.5安装配置 linux+tomcat6.0+mmseg4j-1.9.1分词
  • 原文地址:https://www.cnblogs.com/chiyhua/p/12378113.html
Copyright © 2011-2022 走看看