主頁 > 軟體設計 > python notes

python notes

2020-11-01 22:05:08 軟體設計


python notes


一、python的定義

:Python 是一個高級動態、解釋性、編譯性、互動性和面向物件的腳本語言,

二 、python的特點:

1、簡單靈活
2、 開源免費
3、 跨平臺
4、 高級動態
5、 支持命令式編程
6、函式式編程
7、 面向物件編程

三、python的基本資料型別

標準資料型別:數字(Number)、字串(String)、串列(List)、元組(Tuple)、集合(Set)和字典(Dictionary);
(1):不可變資料:Number(數字)、String(字串)、Tuple(元組);
(2):可變資料:List(串列)、Dictionary(字典)、Set(集合),

1、數字型別:


```python
>>> a=10    #整型
>>> b=2.12  #浮點型
>>> c=True  #bool型
>>> d=1+2j  #complex(復數型)
>>> print(type(a))   #單個輸出
<class 'int'>
>>> print(type(a),type(b),type(c),type(d))  #全部輸出
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
>>> 


2、運算子:
算數運算、比較運算、賦值運算、位運算、邏輯運算、成員運算、身份運算
(1)、算數運算子
+
加 - 兩個物件相加

```python
>>>a=10
>>> b=20
>>> a
10
>>> a+b
30

減 - 得到負數或是一個數減去另一個數

>>>a=10
>>> b=20
>>> a-b
-10

乘 - 兩個數相乘或是回傳一個被重復若干次的字串

>>>a=10
>>> b=20
>>> a*b
200

/
除 - x 除以 y

>>>a=10
>>> b=20
>>> a/b
0.5

%
取模 - 回傳除法的余數

>>>a=10
>>> b=20
>>> a%b
10

**
冪 - 回傳x的y次冪

>>>a=10
>>> b=20
>>> a**b
100000000000000000000

//
取整除 - 向下取接近商的整數

>>>a=10
>>> b=20
>>> a//b
0

(2)、比較運算子
★☆ 等于(==) : (a == b) 比較物件是否相等
★☆ 不等于(!=): (a != b) 比較兩個物件是否不相等
★☆ 大于(>): (a > b)
★☆ 小于(<):所有比較運算子回傳1表示真,回傳0表示假,與變數True和False等價,
★☆ 大于等于 (>=): (a >= b)
★☆ 小于等于(<=) : (a<=b),
(3)、賦值運算子(=)
★☆簡單的賦值運算子(=)
c = a + b
★☆ 加法賦值運算子(+=)
c += a 和 c = c + a表示的相同,只是不同的寫法,
★☆ 減法賦值運算子(-=)
c -= a 和 c = c - a表示的相同,只是不同的寫法,
★☆ 乘法賦值運算子(*=)
c *= a 和 c = c * a表示的相同,只是不同的寫法,
★☆ 除法賦值運算子(/=)
c /= a 和c = c / a表示的相同,只是不同的寫法,
★☆ 取模賦值運算子(%=)
c % = a和 c = c % a表示的相同,只是不同的寫法,
★☆ 冪賦值運算子(**=)
c **= a 和c = c ** a表示的相同,只是不同的寫法,
★☆ 取整除賦值運算子(//=)
c //= a 和 c = c // a表示的相同,只是不同的寫法,
★☆ 海象運算子(:=):可在內部給變數賦值,
(4)、位運算子( &)
☆按位與運算子:
參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0
☆& :

>>> a,b=12,34
>>> print(a&b)
0

☆|:
按位或運算子:只要對應的二個二進位有一個為1時,結果位就為1,

>>> a,b=12,34
>>> print(a|b)
46

☆^:
按位異或運算子:當兩對應的二進位相異時,結果為1

>>> a,b=12,34
>>> print(a^b)
46

☆~:
按位取反運算子:對資料的每個二進制位取反,即把1變為0,把0變為1,~x 相當于 -x-1

>>> a,b=12,34
>>> print(~a)
-13

左移動運算子(<<):"<<"右邊的數指定移動的位數,高位丟棄,低位補0,

>>> a,b=12,34
>>> a<<2
48

☆>>:右邊的數指定移動的位數

>>> a,b=12,34
>>> a>>2
3

(5)、邏輯運算子
☆ and:

>>> a,b=10,20
>>> print(a and b)
20

☆or:

>>> a,b=10,20
>>> print(a or b)
10

☆not:

>>> a,b=10,20
>>> print(not a)
False
>>> a,b=10,20
>>> print(not a and b)
False

(6)、成員運算子
?in:
在指定的序列中找到值,回傳 True,否則回傳 False,
x 在 y 序列中為True,
?not in:
在指定的序列中沒有找到值回傳 True,否則回傳 False,
x 不在 y 序列種為 True,
(7)、身份運算子
?is:is 是判斷兩個識別符號是不是參考一個物件
x is y,參考的同一個物件為True,反之為False
?is not:is not 是判斷兩個識別符號是不是參考不同物件
x is not y ,參考的不是同一個物件為 True,反之為 False,

2、字串

字串的常用方法:索引、拼接、重復、切片…
★字串中的索引
索引

格式:變數[起始下標:終止下標]
索引的值是從零開始的,-1為尾,
★ 字串的切片
格式:[起始值:結束值:步長值]:

```python
>>> a='qwerty'
>>> print(a[0]) #取第一個值,字串的起始位置的下標為0
q
>>> print(a[-1])#取最后一個值
y
>>> print(a[1:3])#取下標為1到3的值
we
```>>> print(a[2:])#取下標為2到尾部的值`
erty
>>> print(a[:3])#取下標初始位置的到下標結束的值(切片)
qwe
>>> print(a[0:5]+'hello')#字串的拼接用加號+
qwerthello
>>> print(a*2)#重復
qwertyqwerty

3、轉義字符
★ (在行尾時)\續行符
★ \反斜杠符號
★ '單引號
★ "雙引號
★ \a響鈴
★ \b退格
★ \000空
★ \n換行
★ \v縱向制表符
★ \t橫向制表符
★ \r回車
★ \f換頁
★ \oyy八進制數,yy 代表的字符,例如:\o12 代表換行,其中 o 是字母,不是數字 0,
★ \xyy十六進制數,yy代表的字符,例如:\x0a代表換行
★ \other其它的字符以普通格式輸出
例子:

>>> sad="a:\"let\'s together study python!\"\nsadq:'nice'"
>>> print(sad)
a:"let's together study python!"
sadq:'nice'
>>> 

★字串是由數字、字母、下劃線組成的一串字符,表示文本的資料型別

集合

只包含鍵的字典,元素不重復
set()創建函式,其沒有引數則為空集
集合簡例:

>>> s1=set([1,2,3,44])#集合可去重
>>> print(s1)
{1, 2, 3, 4}

集合運算:
?交集:

>>> s1=set([1,2,3,4,4])
>>>> s2=set([2,3,4,5,6])
>>> print(s1 & s2) #交集結果取兩組資料中共有的數
{2, 3, 4}

?并集:

>>> s1=set([1,2,3,4,4])
>>> s2=set([2,3,4,5,6])
>>> print(s1 | s2)#并集結果取兩組資料中所有的數
{1, 2, 3, 4, 5, 6}

?差集:

>>> s1=set([1,2,3,4,4])
>>> s2=set([2,3,4,5,6])
>>> print(s2-s1)
{5, 6}
>>> 

?對稱差集:

>>> s1=set([1,2,3,4,4])
>>> s2=set([2,3,4,5,6])
>>> print(s1^s2)#相當于并集-交集
{1, 5, 6}

集合的常用方法:
★add()添加元素
★remove()和discard()洗掉元素,兩者區別:如果要洗掉的元素不存在,remove()會報錯,discard()不報錯,
★pop()隨機洗掉,內部自動排序
★clear()清空集合

串列

?串列的語法:[運算式 for 變數 in 串列]
[運算式 for 變數 in 串列 if 條件]
?運算式:串列生成元素運算式,可以是有回傳值的函式,
?for變數 in串列:迭代串列將元素傳入運算式中,如果有if則先交給if過濾,
?if條件根據條件過濾
?用法:

>>> lis=[1,2,3,4]
>>> [x**2 for x in lis]#求所有元素的平方
[1, 4, 9, 16]
>>> [x for x in lis if x%2==0]#篩選出偶數
[2, 4]
>>>#4和6的倍數
>>> [i for i in range(1,10)if i%4==0 or i%6==0]
[4, 6, 8]
>>> sum([i for i in range(1,10)if i%4==0 or i%6==0])
18
>>> 

?del 陳述句來洗掉串列的的元素

>>> list = ['P', 'U', 16, 20]
>>> print(list)
['P', 'U', 16, 20]
>>> del list[3]
>>> print(list)
['P', 'U', 16]#串列中的下標為三且在其居第四個位置的元元素16已被洗掉
>>> print(len([1,2,3]))#長度
3
>>> print(['i','love']+['python'])#組合
['i', 'love', 'python']
>>> print(['python']*4)#重復
['python', 'python', 'python', 'python']
>>> print(5in [1,3,5,7])#元素是否在串列中,True則在
True

>>> 

元組

? 元組的創建符號是()

>>> y=(1,2,3,4,'a','b')
>>> u=('y','u','z','16')
>>> y,u
((1, 2, 3, 4, 'a', 'b'), ('y', 'u', 'z', '16'))
>>> 
>>> z=16,
>>> type(z)
<class 'tuple'>
>>> 
>>> null=()#空元組
>>> null
()
>>> print(len((1,2,3)))#元組的個數
3
>>> print((1,2,3,4)+(5,6))#連接
(1, 2, 3, 4, 5, 6)
>>> print(('good',)*6)#復習
('good', 'good', 'good', 'good', 'good', 'good')
>>> print(3 in (1, 2, 6))#元素是否存在
False#元素不存在則為False
>>> 

? 元組的內置函式
?len(tuple)計算元組元素個數,

>>> tuple1 = ('G', 'U', 'IOOO')
>>> len(tuple1)
3

?max(tuple)回傳元組中元素最大值,

>>> tuple2 = ('1', '5', '10')
>>> max(tuple2)
'10'

?min(tuple)回傳元組中元素最小值,

>>> tuple2 = ('0', '6', '8')
>>> min(tuple2)
'0'

?tuple(iterable)將可迭代系列轉換為元組,

>>> list=['A','B','C','D']
>>> tuple=tuple(list)
>>> tuple
('A', 'B', 'C', 'D')
>>> 

字典


字典的組成:鍵(key)和值(value)字典中的值沒有特殊的順序,鍵可以是數字、字串、元組,鍵只能是不可變資料型別

格式:變數名={key:value}

>>> dict = {'Name': 'marry', 'Age': 20, 'Class': 'D3'}
>>> print ("dict['Name']: ", dict['Name'])
dict['Name']:  marry
>>> print ("dict['Age']: ", dict['Age'])
dict['Age']:  20
>>> 
>>> del dict['Age']#洗掉元素Age
>>> print(dict)
{'Name': 'marry', 'Class': 'D3'}
>>> 
>>> dict.clear()#清空字典
>>> print(dict)
{}
>>> dict = {'Name': 'R', 'Age': 7, 'Class': 'F9'}
>>> dict['Age'] = 20               # 更新 Age
>>> dict['School'] = "www"         # 添加資訊
>>> print ("dict['Age']: ", dict['Age'])
dict['Age']:  20
>>> print ("dict['School']: ", dict['School'])
dict['School']:  www
>>> 


字典的內置函式(方法)
☆len(dict)計算字典元素總數,

>>> dict = {'Name': 'A', 'Age': 9, 'Class': 'F8'}
>>> len(dict)
3

☆str(dict)輸出字典,列印,

>>> dict = {'Name': 'S', 'Age': 17, 'Class': '8'}
>>> str(dict)
"{'Name': 'S', 'Class': '8', 'Age': 17}"

☆type(variable)回傳輸入的變數型別,如果變數是字典就回傳字典型別,

>>> dict = {'Name': 'A', 'Age': 3, 'Class': '5'}
>>> type(dict)
<class 'dict'>

函式

🎈函式的定義:一個被封裝的具有特定功能的代碼段
🎈函式的特點:重復使用
🎈函式名:給封裝好的代碼段起別名
🎈形參:本質上一個區域變數,用于接收外部的資料,它是在定義函式時定義的
🎈實參:在函式呼叫執行時,傳遞的資料
回傳值:將函式中的區域變數傳遞到外部,return為關鍵字,回傳一個值,注意:return陳述句一旦執行函式就會終止,其他陳述句都不會執行,yield可以讓函式多次回傳多個值

>>> def a(x):
	if x<0:
		return-x
	else:
		return x
	print(x)#無效

🎈變數作用域:(起作用的范圍)就是定義在變數可以使用的代碼范圍
🎈全域變數:在整個函式中都可以被呼叫的變數,一般直接定義在函式的外部或者用global關鍵字在函式內部定義,(是可以被所有的函式訪問的,除非被刪掉否則一直存活到腳本運行結束,)

>>> l='hello'
>>> def f():
	global l
	l='hello '#全域變數l
	print(l)

>>> print(l)
hello

🎈區域變數:(只在函式內部有用)
函式內部定義的變數包括形參,只能在函式內部被呼叫,函式內部優先使用區域變數(速度快)
🎈注意:在函式中使用全域變數時可以呼叫全部變數的值,不能直接修改全域變數的值(值如果是可變型別,值是可以改變 )

引數的型別

〇位置引數:實參的賦值時和形參定義的順序一致

>>> def t1(x,y,z):
	print(x,y,z)

>>> t1(1,2,3)
1 2 3

〇命名引數:可以不按順序賦值

>>> t1(z=1,x=2,y=3)
2 3 1

〇默認值引數:定義形參時給形參默認值,默認值引數寫在引數串列的最右側

>>> def t2(x=1,y=2,z=3):
	print(x,y,z)

	
>>> t2()#默認值
1 2 3
>>> t2(3,2,1)
3 2 1
>>> t2(y=100)
1 100 3
>>> 

〇可變長度引數:在普通引數前加*,將任意長度的東西存在元組中

>>> def t3(*args):
	print(args)
>>> t3(1,2,3,4,5)
(1, 2, 3, 4, 5)
>>> 
>>> def my_a(*args):
	m=args[0]
	for i in args[1:]:
		if m<i:
			m=i
			return m
>>> print(my_a(3,4,8,900,6,100,29))
4

〇可變長度的命名引數:作用為接收命名引數,在普通形參前加**

def l(**k):
	print(k)
l(name="root",password="123456",port=3306)

def l(**k):
	for i in k:
		print(i,"->",k[i])
		data={'host':'ll','username':'olo','password':'11122334'}
		l(**data)

		

匿名函式

? 格式:lambda[形參]:回傳值

print((lambda x:x**2)(8))#第一個x表示形參,第二個x表示回傳值

64
>>> f=lambda name:print("hello%s" % (name))
>>> f("ameery")
helloameery

? 三目運算:
值1 if條件 else 值2 條件為真結果值為值1,結果為假結果為值2

>>> f1=lambda age:"你已經成年"if age>18 else "你還沒有成年"
>>> print(f1(19))
你已經成年
>>> print(f1(17))
你還沒有成年
>>> 

高階函式:

?定義:將函式作為引數或回傳值的函式,
?高階函式的特點:函式可以作為引數被傳遞,可以作為回傳值輸出

>>> def a_add(f,x,y):
	return f(x)+f(y)
>>> print(a_add(lambda a:a**2,3,4))#將函式作為引數
25#相當于2的平方加3的平方加4的平方

?函式柯里化:是把接受多個引數的函式變成接受一個單一引數(最初函式的第一個引數)的函式,并且回傳接受余下的引數且回傳結果的新函式的技術,

>>> def func1(x):
	def func2(y):
		return x+y
	return func2
>>> f3=func1(3)
>>> print(f3(4))
7	

?高階函式五個常用的函式(map、reduce、filter、sorted、resersed)
(1)map函式

  • map()函式接收兩個引數,一個是函式一個是序列
  • map的作用:將傳入的函式依次作用到序列的每一個元素,并把結果作為新的序列物件回傳,
  • 例如:一個函式f(x)=x2,把這個函式作用在一個list[1,2,3,4,5,6,7,8,9]上,就可以用map()實作:

在這里插入圖片描述
?map()代碼例子:

#map(f,lis)至少需要一個形參
>>> def dunc(x):
	return x**3

>>> items=map(dunc,range(10))
>>> print(list (items))
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
>>> 

(2)reduce()函式
累加函式需引入模塊
作用:前兩個值結果和后一個值結果運算

>>> from functools import reduce#引入模塊
>>> def add(x,y):
	return x+y

>>> res=reduce(add,range(5))
>>> print(res)
10      #結果程序是0+1→1+2→3+3→6+4=10
>>> 

(3)filter()內置函式

  • filter()函式用于過濾序列
  • 與map()類似,filter()也接收一個函式和一個序列,不同的是filter()把傳入的函式依次用作于每個元素,
  • 作用:函式回傳值為真則保留,為假則舍掉,
>>> r1=filter(None,[0,1,"","a",[],{},(),True,False])
>>> print(r1)
<filter object at 0x0000019C92CFAEE0>
>>> r1=filter(lambda x: True if x>5 else False,[0,1,2,3,4,5,6,7,8,9,] )
>>> print(list(r1))
[6, 7, 8, 9]

(4)sorted()內置函式

  • sorted()函式也是一個高階函式,也稱之為排序函式
  • 作用:接受收一個key函式來實作自定義的排序,(比如按照絕對值大小排序,按照字串長度排序)
>>> import random
>>> lis=[random.randint(1,100) for i in range(10)]
>>> print(sorted(lis))
[11, 20, 28, 35, 38, 51, 53, 60, 63, 90] #按照大小排序

閉包函式:

  • 閉:函式里面還嵌套了函式
  • 包:包含了對外部函式作用域中變數的參考
  • .內部函式:包含對外部作用域而非全域作用域變數的參考,該內部函式成為閉包函式,
  • 特點:內不含食宿參考了外部函式的變數
 def outer(a):   #outer是外部函式
	b=10     #a,b都是函式外部的臨時變數
	def inner():   #inner是內函式
		print(a+b) #在內函式中用到了外部哈桑農戶的臨時變數
		return inner #外函式的回傳值是內函式的參考

☆裝飾器函式:
裝飾器本質上也是一個函式,只不過這個函式接收其他函式作為引數并對其進行一定的改造之后回傳新函式,

函式

☆遞回函式:
☆定義:程式呼叫自身的編程技巧稱之為遞回(recursion)

☆注意:寫遞回函式一定要有結束條件,遞回有層次限制
☆例如:5的階乘

>>> def func(n):
	if n==1 or n==0 :
		return 1
	else:
		return n *func(n-1)

	
>>> print(func(5))
120     #結果的運算順序:  5!
						5*45*4*35*4*3*2!
						5*4*3*2*1!



☆正確輸出第n個數字的斐波那契數

>>> def fun(n):
	if n<0:
		print('輸入有誤')
	elif n==1 or n==2:
		return 1
	else:
		return fun(n-1)+fun(n-2)

	
>>> print(fun(6))
8

☆生成器函式:

  • yield陳述句的函式可以用來創建成生成器物件
  • 每一次執行到yield陳述句并回傳一個值之后會暫停或者掛起后面代碼的執行
  • 生成器函式用于處理海量資料
  • 作用;節省記憶體空間(減小記憶體空間壓力)
  • 獲取生成器物件的值得兩種方法:
  • (1)使用next()–———一個個獲取資料
  • (2)使用回圈for i in 變數 print(i) 一次性獲取完畢i
    -只有使用next()函式執行生成器物件或者回圈生成器物件時才會一個個回傳資料,
def func(c):
	yield "a"
	yield "b"
	yield  "c"
	g=func(c)#執行生成器哈桑農戶時回傳生成器物件
>>> print(next(g))#單次輸出,只輸出一個a,再次運行輸出b...
>>>for i in g:	#多次輸出a,b,c
	print(i)

☆串列推導式:

>>> lis=[i for i in range(10) if  i%2==0]
>>> print(lis)
[0, 2, 4, 6, 8]

☆元組生成器:

>>> l=[('a',['1','2'])]
>>> q_l=tuple(i for i in l)
>>> print(q_l)
(('a', ['1', '2']),)

☆利用生成器函式寫出斐波那契數列(兔子數列)
斐波那契數列特點:后一個值是前兩個數之和,例如:01,1,2,3,5,8,13,21,,,(0+1=1,1+1=2,2+1=3…)

>>> def fib(n):
	a,b=0,1
	while a<n:
		yield a #暫停執行,需要時再產生一個顯得元素
		a,b=b,a+b #繼續生成新元素

>>> 
>>> for i in fib(10):
	print(i)

	
0
1
1
2
3
5
8

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/198553.html

標籤:其他

上一篇:python百行有效代碼實作漢諾塔小游戲(簡約版)

下一篇:Windows環境下Python 3.6.8 import matplotlib.pyplot 時出現的 importError: DLLload failed:找不到指定的模塊

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more