2基礎語法

 

註釋:#標註的文本;

 

數字:

整數,不區分longint,進制:0xa0o100b10

浮點數,1.4be9等價於1.46*10^9

複數:1+2ja+bj);

 

字符串:

使用'''引用的字符的序列;

'''""",可跨行,可在其中自由的使用單雙引號;

在字符串前加上rR前綴,表示該字符串不作特殊處理,前綴r會把裏面的所有字符當普通字符對待;

轉義序列:

\\

\t

\r

\n

\'

\"

 

縮進:

約定使用4個空格;

未使用c語言的花括號,而是採用縮進的方式表示層次關係;

 

續行:

在行尾使用\

如果使用各種括號,認爲括號內是一個整體,內部跨行不用\

 

標識符:

一個名字,用來指定一個值;

只能字母、下劃線、數字;

只能以字母或下劃線開頭;

不能是python的關鍵字,如defclass等;

大小寫敏感;

約定:不允許使用中文;不允許使用歧義單詞,如class_;在python中不要隨便使用下劃線開頭的標識符;

 

常量:

一旦賦值就不能改變值的標識符;

python中無法定義常量;

 

字面常量:

一個單獨的量,如12'abc''234123.03e-9'

 

變量:

賦值後,可以改變值的標識符;

 

 

python的語言類型:

python是動態語言、強類型語言;

1.jpg

 

靜態編譯語言:

事先聲明變量類型,類型不能改變;

編譯時檢查;

 

動態編譯語言:

不用事先聲明類型,隨時可賦值爲其它類型;

編程時不知道是什麼類型,很難推斷;

 

注:

賦值即定義(動態語言與靜態語言的差別);

 

強類型語言:

不同類型之間操作,必須先強制類型轉換爲同一類型,print('a' + 1)

 

弱類型語言:

不同類型之間可以操作,自動隱式轉換,jsconsole.log(1 + 'a')

 

 

operator運算符:

算術運算符:

+-*/%**

/自然除結果爲浮點數,//整除結果爲整數;

2.*版本中///都是整除;

2**32**0.5開方;

 

位運算符:

&|~^<<>>

常用方式:乘除2的倍數,32//4相當於32>>2

例:120xc0o140b1100

規律:~n的結果爲-(n+1)

 

注:

8421-->2^3,2^2,2^1,2^0

 

例:

~12,按位取反;

12-->0b00001100

取反後0b11110011   #符號位爲1則計算機認爲是負數,負數的補碼是符號位不變,其餘按位取反後加1;此處取反爲未知數X的補碼形式;

取反後0b10001100

10b10001101-->-13

 

原碼:

5-->0b1011-->0b1-1-->-0b1bin(-1)

 

反碼:

正數的反碼,與原碼相同;

負數的反碼,符號位不變,其餘按位取反;

 

補碼:

正數的補碼,與原碼相同;

負數的補碼,符號位不變,其餘按位取反後加1

 

例:

-7的補碼:

-7-->0b10000111

取反0b11111000

10b11111001

 

例:

-64的補碼:

-64-->0b11000000

取反0b10111111

10b11000000

 

負數表示法:

數字電路的cpu中的運算器實現了加法器,但是沒有減法器,減法是轉換成加法;

負數在計算機中使用補碼存儲,-1-0b1)的補碼爲11111111-1在內存中0xff

5-1-->5+(-1),直覺上是0b101-0b1,其實計算機上是0b101+0b11111111,溢出位捨棄;

10^910^-9結果?

 

例:

10^9^爲異或,異或相同爲0不同爲1

10-->00001010

9-->00001001

結果爲00000011-->3

 

例:

10^-9

10-->00001010

-9-->10001001

結果爲10000011-->131

 

比較運算符:

==!=<><=>=

返回bool值;

1 < '1',不能比較,不可以用<><=>=比較不同類型;

1 == '1'==!=可以比較不同類型,返回False

 

邏輯運算符:

and,位相乘;

or,位相加;

not,非;

短路運算符:

and,如果第一個表達式爲False(乘法中的0),後面就沒有必要計算了,這個邏輯表達式一定False

or,如果第一個表達爲True(加法中的1),後面就沒有必要計算了,這個邏輯表達式一定True

 

賦值運算符:

a=min(3,5)

+=-=*=/=%=

python中沒有++--

x=y=z=10,坑,少用;

 

成員運算符:

in

not in

 

身份運算符:

is

is not

 

運算符優先級:

算術運算符 > 位運算符 > 身份運算符 > 成員運算符 > 邏輯運算符;

單目運算符優先級 > 雙目運算符;

記不住,用括號;

長表達式用括號,多用括號,易懂易讀;

 

expression表達式:

由數字、符號、括號、變量等的組合;

算術表達式;

邏輯表達式;

賦值表達式,python中賦值即定義(排錯用),如果一個變量已經定義,賦值相當於重新定義;

 

內存管理:

變量無須事先聲明,也不需要指定類型(動態語言的特性);

編程中一般無須關心變量的存亡,也不用關心內存的管理;

python使用引用計數記錄所有變量的引用數(引用計數機制);

當變量引用計數變爲0,它就可以被GC

計數增加,賦值給其它變量就增加引用計數,如x=3;y=x

計數減少,函數運行結束時,局部變量就會被自動銷燬,對象引用計數減少;變量被賦值給其它對象,如x=3;y=x;x=4

有關性能時,就需要考慮變量的引用問題,但是該釋放內存,還是儘量不釋放內存,看需求;

 

程序控制:

順序,按先後順序一條條執行,如先洗手再吃飯再洗碗;

分支,根據不同的情況判斷,條件滿足執行某條件下的語句,如先洗手,如果飯沒做好,玩遊戲,如果飯做好了,就吃飯,如果飯都沒有做,叫外賣;

循環,條件滿足就反覆執行,不滿足就不執行或不再執行,如先洗手,看飯做好了沒有,沒有好,一會來看一次是否好了,一會再來看一次,直到飯做好了,纔可以吃飯,這裏的循環條件是飯沒有好,飯沒有好,就循環的來看飯好了沒有;

 

單分支結構:

if condition:   #condition必須是一個bool類型,此處有一個隱式轉換bool(condition)

         block   #冒號後面就是一個代碼塊,在if/for/def/class等後面

 

真值表:

""

False

"string"

True

0

False

>=1

True

<=-1

False

()

False

[]

False

{}

False

None

False

 

多分支結構:

if...elif...else語句,elifN次;

 

分支嵌套:

可以是分支、循環的嵌套;

可互相嵌套多層;

 

類三目運算符:

真值 if 條件 else 假值   #如果語句簡單(不超過3行),可用類三目運算符;

python中沒有三目運算符;

 

 

循環:

while condition:   #conditionTrue進入循環體,執行block

         block

while True:爲死循環,while False:無用語句;

 

for element in interable:   #當可迭代對象中有元素可以迭代,進入循環體,執行block

         block

range函數,前包後不包,[0,10)

 

continue語句:

中斷當前循環的當次執行,繼續下一次循環;

whilefor中都可用;

例:

for i in range(10):

    if i%2 == 0:

        continue

    print(i)

for i in range(10):

    if i%2 == 0:

        continue

    else:

        print(i)

最好使用第一種;

 

break語句:

終止當前循環;

 

else子句:

如果循環正常的執行結束,就執行else子句;

如果使用break終止,else子句不會執行;

 

注:

n=1

for i in range(1,10):   #此處i可用_替代,表示不關心此變量,僅作爲循環次數使用

    n=(n+1)*2

print(n)

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章