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放右边


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





















 

posted @ 2020-02-28 17:24  chiy  阅读(464)  评论(0编辑  收藏  举报