安全学习Week2
Python
·編程語言分:機器語言、匯編語言、高級語言
·高級語言分:解釋型語言(如python、編譯型語言(如c
·C:預處理、編譯、連接、可執行文件
·Cpython、Jython、Ipython、Pypy
·一個廣泛的標準庫、可擴展、互動模式
·膠水語言、腳本語言、快捷語言、快捷開發、插件語言等
·動態語言
·用縮進代替{}
·變量類型:數字、字符串、列表、元素、字典
面向對象
·編程思想:面向對象和面向過程
·簡介:類、類變量、實例化、對象
·三大特性:封裝、繼承、多態
·子類對象的指針可以賦值給父類對象的指針
·Python中一切皆為對象
Python
Python簡介
Python是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言
Python的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構
·Python是一種解釋型語言:開發過程中沒有了編譯這個環節。類似于PHP和Perl語言
·Python是交互式語言:可以在一個Python提示符>>>后直接執行代碼
·Python是面向對象語言:這意味著Python支持面向對象的風格或代碼封裝在對象的編程技術
·Python是初學者的語言:Python對初級程序員而言,是一種偉大的語言,它支持廣泛的應用程序開發,從簡單的文字處理到WWW瀏覽器再到游戲
·編寫中文字符 如果在ide下用#coding=utf-8
Python標識符
·以下劃線開頭的標識符是有特殊意義的。以單下劃線開頭_foo的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用from xxx import *而導入
·Python可以同一行顯示多條語句,方法是用分號;分開,如print(“Hello,”);print(“World!”)
Python基礎語法
行和縮進
·學習Python與其他語言最大的區別就是,Python的代碼塊不使用大括號{}來控制類,函數以及其他邏輯判斷。python最具特色的就是使用縮進來寫模塊。
縮進的空白數量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數量,這個必須嚴格執行。
實例
if True:
? ? print("Hello,")
? ? print("World!")
else:
? ? print("dont give me hope")
if里面語句沒對齊編譯器會報錯
多行語句
·Python語句中一般以新行作為語句的結束符
·但我們可以使用斜杠(\)將一行的語句分為多行顯示 如下所示
a=1;b=2;c=3
h=a+\
?? ? b+\
?? c
print(h)
·語句中包含[],{}或()括號就不需要使用多行連接符。如下實例:
hope=["you give"
? ? ,"give up"]
print(hope[1])
Python引號
·Python可以使用引號(‘)、雙引號(“)、三引號(‘’’或”””)來表示字符串,引號的開始與結束必須是相同類型的。其中三引號可以由多行組成,編寫多行文本的快捷語法,常用于文檔字符串,在文件的特定地點,被當做注釋。
#coding=utf-8
word='詞'
sentence="這不是句子"
home="""就這點字也能叫句子
? ? 嘛"""
print(word);print(sentence);print(home);
Python注釋
·python中單行注釋采用#開頭
#這不是注釋
print(“不是”)#不是注釋
·Python中多行注釋使用三個單引號(‘’‘)或三個雙引號(“”“)
#coding=utf-8
#這不是注釋
print('不是')#這也不是注釋
'''
這是
多行
注釋
'''
Python空行
函數之間或類的方法之間用空行分割,表示一段新的代碼開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行與代碼縮進不同,空行并不是Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。但是空行的作用在于分隔兩段不同功能或含義的代碼,便于日后代碼的維護或重構。
空行也是程序代碼的一部分
#coding=utf-8
raw_input('按下enter結束,其他鍵繼續顯示\n')
同一行顯示多條語句
·Python可以這同一行中使用多條語句,語句之間使用分號(;)
print輸出
·print默認輸出是換行的,如果要實現不換行需要在變量末尾加上逗號,
a=1;b=2
print(a),
print(b)
多個語句構成代碼組
·縮進相同的一組語句構成一個代碼塊,我們稱之為代碼組。
·像if、while、def和class這樣的復合語句,首行以關鍵字開始,以冒號(:)結束,該行之后的一行或多行代碼構成代碼組。我們將首行及后面的代碼組稱為一個子句(clause)。
a=0
b=0
if a:
? ? ? ? print(a)
elif b:
?? print(a)
else:
? ? print"--"
Python變量類型
多個變量賦值
·Python允許你同時為多個變量賦值 例如:
a=b=c=1
·你也可以為多個對象指定多個變量。例如:
a,b,c=1,2,’hello’
標準數據類型
·在內存中存儲的數據可以有多種類型。
·例如,一個人的年齡可以用數字來存儲,他的名字可以用字符來存儲。
·Python定義了一些標準類型,用于存儲各種類型的數據。
·Python有五個標準的數據類型:
·Numbers(數字)
·String(字符串)
·List(列表)
·Tuple(元組)
·Diction(字典)
Python數字
·數字數據類型用于存儲數值。
·他們是不可改變的數據類型,這意味著改變數字數據類型會分配一個新的對象。
·當你指定一個值時,Number對象就會被創建:
a=1
b=2
·你也可以用del語句刪除一些對象的引用。
·del語句的語法是:
del var1[,var2[,var3[....,varN]]]#我不理解
·你也可以通過用del語句刪除單個或多個對象的引用。例如
del a
·Python支持四種不同的數字類型:
·int(有符號整型)
·long(長整型,也可以代表八進制和十六進制)
·float(浮點型)
·complex(復數)
| int | long | float | complex |
| 10 | 51924361L | 0.0 | 3.14j |
| 100 | -0x19323L | 15.20 | 45.j |
| -786 | 0122L | -21.9 | 9.322e-36j |
| 080 | 0xDEFABCECBDAECBFBAEl | 32.3e+18 | .876j |
| -0490 | 535633629843L | -90. | -.6545+0J |
| -0x260 | -052318172735L | -32.54e100 | 3e+26J |
| 0x69 | -4721885298529L | 70.2E-12 | 4.53e-7j |
Python字符串
·字符串或串(String)是由數字、字母、下劃線組成的一串字符。
·一般記為:
s=“a1a2…an”
·它是編程語言中表示文本的數據類型。
·python的字串列表有2種取值順序:
·從左到右索引默認0開始的,最大范圍是字符串長度少1
·從右到左索引默認-1開始的,最大范圍是字符串開頭
·如果你要實現從字符串中獲取一段字符串的話,可以使用[頭下表:尾下表]來截取相應的字符串,其中下標是從0開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。
比如:
d='do not give me hope'
print d[0:19]#do not give me hope
print d[-19:-1]#do not give me hop
print d[0:]#do not give me hope
print d[-19:]#do not give me hope
·加號(+)是字符串連接運算符,星號(*)是重復操作。如下實例
d='do not give me hope'
print d+' please'
s=d+' '
print s*2
·Python列表截取可以接收第三個參數,參數作用是截取的步長,以下實例在索引1到索引4的位置并設置為步長為2(間隔一個位置)來截取字符串:
? ? ? 0 ? 1.? 2. 3. 4
d=['d','o','n','o','t']
? ? ? ? ? ? >? 2? < ? ? ? ?
print d[1:4:2]
Python列表
·List(列表)是Python中使用最頻繁的數據類型。
·列表可以完成大多數集合類的數據結構實現。它支持字符,數字,字符串甚至可以包含列表(即嵌套)。
·列表用[]標識,是python最通用的復合數據類型。
·列表中值的切割也可以用到變量[頭下標:尾下標],就可以截取相應的列表,從左到右索引默認0開始,從右到左索引默認-1開始,下標可以為空表示取到頭或尾。
d=['d','o','n','o','t']
print d[:]
·加號+是列表連接運算符,星號*是重復操作。如下實例:
d=['d','o','n','o','t']
g=['g','i','v','e']
print d*2
print d+g
Python元組
·元組是另一個數據類型,類似于List(列表)。
·元組用()標識。內部元素用逗號隔開。但是元組不能二次賦值,相當于只讀列表。
Python字典
·字典(dictionary)是除列表以外python之中最靈活的內置數據結構類型。列表是有序的對象集合,字典是無序的對象集合。兩者之間的區別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
·字典用”{}”標識。字典由索引(key)和它對應的值value組成
d={}
d['one']="do not give me hope"
print d.values()
print d.keys()
dictionary={'so':'see','called':'me?'}
print dictionary.values()
print dictionary.keys()
輸出結果為:
['do not give me hope']
['one']
['see', 'me?']
['so', 'called']
Python數據類型轉換
·有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,你只需要將數據類型作為函數名即可。
·以下幾個內置的函數可以執行數據類型之間的轉換。這些函數返回一個新的對象,表示轉換的值
| 函數 | 描述 |
| int(x[,base]) | 將x轉換為一個整數 |
| float(x) | 將x轉換到一個浮點數 |
| Complex(real[,imag]) | 創建一個復數 |
Python運算符#a=10 b=20
| 運算符 | 描述 | 實例 |
| ** | 冪-返回x的y次冪 | a**b為10的20次方,輸出結果100000000000000000000 |
| // | 取整除-返回商的整數部分(想下取整) | 9//2=4。 ? ? -9//2=-5 |
·整數除整數,只能得出整數。如果想要得到小數部分,把其中一個數改成浮點數即可
1.0/2=0.5
1/float(2)=0.5
Python比較運算符
·和c語言差不多這里不再贅述
Python賦值運算符
·同上 加了**=和//=
Python位運算符#a=60 b=13
·按位運算符是把數字看作二進制來進行計算的。Python中的按位運算法則如下:
| 運算符 | 描述 | 實例 |
| & | 按位與運算符:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0 | (a&b)輸出結果為12 |
| | | 按位或運算符:只要對應的二個二進位有一個為1時,結果位就為1 | (a|b)輸出結果為61 |
| ^ | 按位異或運算符:當兩對應的二進位相異時,結果為1 | (a^b)輸出結果為49 |
| ~ | 按位取反運算符:對數據的每個二進制位取反,即把1變為0,把0變為1.~x類似于-x-1 | (~a)輸出結果為-61(不太理解,像是一個二進制數有倆符號位一樣) |
| << | 左移動運算符:運算數的各二進位全部左移若干位,由<<右邊的數字指定了移動的位數,高位丟棄,低位補0。 | a<<2輸出結果240(不太理解,可能符號位被頂走了?) |
| >> | 右移動運算符:把>>左邊的運算數的各二進位全部右移若干位,>>右邊的數字指定了移動的位數 | a>>2輸出結果15 |
Python邏輯運算符
| 運算符 | 邏輯表達式 | 描述 | 實例 |
| and | x and y | 布爾“與”-如果x為False,x and y返回False,否則它返回y的計算值。 | (a and b)返回20 |
| or | x or y | 布爾“或”-如果x是非0,它返回x的計算值,否則它返回y的計算值 | (a or b)返回10 |
| not | not x | 布爾“非”-如果x為True,返回False。如果x為False,它返回True | not(a and b)返回False |
Python成員運算符
·除了以上的一些運算符之外,Python還支持成員運算符,測試實例中包含了一系列的成員,包括字符串,列表或元組。
| 運算符 | 描述 | 實例 |
| in | 如果在指定的序列中找到值返回True,否則返回False | x在y序列中,如果x在y序列中返回True |
| not in | 如果在指定的序列中沒有找到值返回True,否則返回False | x不在y序列中,如果x不在y序列中返回True |
Python身份運算符
·身份運算符用于比較兩個對象的存儲單元
| is | is是判斷兩個標識符是不是引用一個對象 | x is y,類似id(x)==id(y),如果引用的是同一個對象則返回True,否則返回False |
| is not | is not是判斷兩個標識符是不是引用自不同對象 | x is not y,類似id(a)!=id(b)。如果引用的不是同一個對象則返回結果True,否則返回False |
·is與==區別
·is用于判斷兩個變量引用對象是否為同一個(同一塊內存空間),==用于判斷引用變量的值是否相等。
a=[1,2,3]
b=a[:]
if a==b:
? ? print("YES")
if a is b:
? ? ? ? print("Identical")
Python運算符優先級
| 運算符 | 描述 |
| ** | 指數(最高優先級) |
| ~+- | 按位翻轉,一元加號和減號(最后兩個的方法名為+@和-@) |
| */%// | 乘,除,取模和取整除 |
| += | 加法減法 |
| >><< | 右移,左移運算符 |
| & | 位‘AND’ |
| ^| | 位運算符 |
| <= < > >= | 比較運算符 |
| = %= /= //= -= += *= **= | 賦值運算符 |
| is is not | 身份運算符 |
| in not in | 成員運算符 |
| not and or | 邏輯運算符 |
Python條件語句
·和c差不多 除了符號 還有if while里不用加括號 這里就不贅述了
·有一個不同 elif
Python循環語句
·while可以有個else
·for循環不像c 可以用個list
語法格式如下:
for iterating_var in sequence:
statements(s)
for letter in ‘Python’:
print(“%s” %letter)
a=[‘do’,’not’,’give’]
for as in a:
print(‘%s’%as)
我的博客雖然不好 但你努力看到了這 不留下一個贊嘛0.0
總結
- 上一篇: Web安全学习 Week1
- 下一篇: Web安全学习Week5