python實用小知識

2021-07-23 05:50:01 字數 3131 閱讀 4816

python是解釋型語言,你的**在執行時會一行一行地翻譯成cpu能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而c程式是執行前直接編譯成cpu能執行的機器碼,所以非常快

如果字串內部既包含』又包含」怎麼辦?可以用轉義字元\來標識,比如:

『i\』m \」ok\」!』

表示的字串內容是:

i』m 「ok」!

python還允許用r」表示」內部的字串預設不轉義,可以自己試試:

print 『\\t\』

\ \

print r』\\t\』

\\t\

print 」』line1

… line2

… line3」』

line1

line2

line3

空值

空值是python裡乙個特殊的值,用none表示。

普通的字串』abc』在python內部都是ascii編碼的。python提供了ord()和chr()函式,可以把字母和對應的數字相互轉換:

ord(『a』)

65 chr(65)

『a』

python在後來新增了對unicode的支援,以unicode表示的字串用u』…』表示,比如:

print u』中文』

中文 u』中』

u』\u4e2d』

寫u』中』和u』\u4e2d』是一樣的,\u後面是十六進製制的unicode碼。因此,u』a』和u』\u0041』也是一樣的。

兩種字串如何相互轉換?字串』***』雖然是ascii編碼,但也可以看成是utf-8編碼,而u』***』則只能是unicode編碼。

把u』***』轉換為utf-8編碼的』***』用encode(『utf-8』)方法:

u』abc』.encode(『utf-8』)

『abc』

u』中文』.encode(『utf-8』)

『\xe4\xb8\xad\xe6\x96\x87』

反過來,把utf-8編碼表示的字串』***』轉換為unicode字串u』***』用decode(『utf-8』)方法:

『abc』.decode(『utf-8』)

u』abc』

『\xe4\xb8\xad\xe6\x96\x87』.decode(『utf-8』)

u』\u4e2d\u6587』

print 『\xe4\xb8\xad\xe6\x96\x87』.decode(『utf-8』)

中文

但是,要定義乙個只有1個元素的tuple,如果你這麼定義:

t = (1)

t 1

定義的不是tuple,是1這個數!這是因為括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,python規定,這種情況下,按小括號進行計算,計算結果自然是1。

所以,只有1個元素的tuple定義時必須加乙個逗號,,來消除歧義:

t = (1,)

t (1,)

如果要計算1-100的整數之和,從1寫到100有點困難,幸好python提供乙個range()函式,可以生成乙個整數序列,比如range(5)生成的序列是從0開始小於5的整數:

range(5)

[0, 1, 2, 3, 4]

0到4的乙個list

set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作:

s1 = set([1, 2, 3])

s2 = set([2, 3, 4])

s1 & s2

set([2, 3])

s1 | s2

set([1, 2, 3, 4])

list 中括號[ ] list是可變物件

dic 大括號

set 小括號裡包含乙個集合:s = set([1, 2, 3]) 元素不可重複

tuple 小括號 元素不可變的list

函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個「別名」:

a = abs # 變數a指向abs函式

a(-1) # 所以也可以通過a呼叫abs函式

1

空函式如果想定義乙個什麼事也不做的空函式,可以用pass語句:

def nop():

pass

pass語句什麼都不做,那有什麼用?實際上pass可以用來作為佔位符,比如現在還沒想好怎麼寫函式的**,就可以先放乙個pass,讓**能執行起來。

pass還可以用在其他語句裡,比如:

if age >= 18:

pass

缺少了pass,**執行就會有語法錯誤。

函式可以同時返回多個值,但其實就是乙個tuple。

x,y=(54,13)

python的函式具有非常靈活的引數形態,既可以實現簡單的呼叫,又可以傳入非常複雜的引數。

預設引數一定要用不可變物件,如果是可變物件,執行會有邏輯錯誤!

要注意定義可變引數和關鍵字引數的語法:

*args是可變引數,args接收的是乙個tuple;

**kw是關鍵字引數,kw接收的是乙個dict。

以及呼叫函式時如何傳入可變引數和關鍵字引數的語法:

可變引數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過args傳入:func((1, 2, 3));

關鍵字引數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過kw傳入:func()。

使用*args和**kw是python的習慣寫法,當然也可以用其他引數名,但最好使用習慣用法。

IS IS 簡單實用小知識

is指路由器.isis屬於大型內部閘道器路由協議類似ospf,多用於運營商,普通企業網很少使用.使用spf演算法,鏈路狀態類路由協議.isis最早是基於osi模型設計,而ospf,rip 以及常見的乙太網資料報封裝都是基於tcp ip模型.isis劃分區域是基於路由器的.即乙個路由器只能屬於乙個區域...

python小知識 Python小知識

1 python是一種解釋性語言,當程式執行時,一行一行的解釋,並執行 優點 除錯 很方便,開發效率高,並且可以跨平台 不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。缺點 執行速度慢。python的種類 cpython ipython pypy jython ironpython ...

python小知識 python小知識

一 列表 l 1,2 m l l和m同時指向列表物件,內容為 1,2 l l 3,4 系統新增了乙個物件,內容為 1,2,3,4 l,m 1,2,3,4 1,2 l 1,2 m l l 3,4 對列表在原處做修改 l,m 1,2,3,4 1,2,3,4 二 python程式設計中的中文編碼問題 問題...