真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python編碼類型函數(shù),python代碼的編碼規(guī)范

python類和函數(shù)的區(qū)別

類,class,用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。

公司專注于為企業(yè)提供網(wǎng)站設(shè)計、成都做網(wǎng)站、微信公眾號開發(fā)、商城網(wǎng)站建設(shè),成都小程序開發(fā),軟件按需開發(fā)網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。

函數(shù),是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。

函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫作用戶自定義函數(shù)。

python語言中類和函數(shù)的區(qū)別

1、規(guī)則不同

類是一種引用數(shù)據(jù)類型,類似于byte、short、int(char)、long、float、double等基本數(shù)據(jù)類型;

函數(shù)必須聲明后才可以被調(diào)用,調(diào)用格式為:函數(shù)名(實參)調(diào)用時函數(shù)名后的小括號中的實參必須和聲明函數(shù)時的函數(shù)括號中的形參個數(shù)相同。

2、主體不同

類是面向?qū)ο蟪绦蛟O(shè)計實現(xiàn)信息封裝的基礎(chǔ);

函數(shù)是指一段在一起的、可以做某一件事的子程序。

3、特點不同

類是一種用戶定義的引用數(shù)據(jù)類型,也稱類類型,每個類包含數(shù)據(jù)說明和一組操作數(shù)據(jù)或者傳遞消息的函數(shù),類的實例稱為對象;

函數(shù)分為全局函數(shù)、全局靜態(tài)函數(shù),在類中還可以定義構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、成員函數(shù)、友元函數(shù)、運算符重載函數(shù)、內(nèi)聯(lián)函數(shù)等。

python的str(anything)和unicode(anything)函數(shù)

python 2有兩個全局函數(shù)可以把對象強制轉(zhuǎn)換成字符串:unicode()把對象轉(zhuǎn)換成Unicode字符串,還有str()把對象轉(zhuǎn)換為非Unicode字符串。

python 3只有一個字符串類型,Unicode字符串,所以str()函數(shù)即可完成所有的功能。(Unicode()函數(shù)在python3 里已經(jīng)不存在了。)

另外:

沒有專門的char()數(shù)據(jù)類型,確實沒有需要有這個類型。

單引號和雙引號字符串是完全相同的——他們沒有在任何方面不同。

正則表達(dá)式,一定要用自然字符串處理正則表達(dá)式,否則會需要很多的反斜杠。

使用help(str)可查看字符串對象定義的所有方法及屬性。

由于百分號有特殊作用,所以字符串里面要用百分號的話需要使用"%%",如:"select * from my_table where name like '%%測試' "。

Python有哪些常用的數(shù)據(jù)類型?

Numbers(數(shù)字型):

即我們常說的1,2,3等等這些數(shù)字,Python有兩個常見的數(shù)據(jù)類型轉(zhuǎn)化函數(shù):int和float,一般數(shù)據(jù)類型可以用來做一些算術(shù)功能,如加減乘除乘方等等,還可以用作比較功能,一般返回的是true和false,也就是大于、等于、小于、小于等于諸如此類的有很多,這里就不一一解釋了。

String(字符串):

字符串是Python中比較常見的數(shù)據(jù)類型之一,能夠使用str函數(shù)將其他類型的數(shù)據(jù)強制轉(zhuǎn)換為字符串類型,有三種生成方法,即單引號'XXX',雙引號"XXX",三引號'''XXX

''',其中三引號一般用于字符串內(nèi)容較長的時候。

List(列表):

列表可以說是Python中最為活躍的一個數(shù)據(jù)類型,使用也很頻繁,操作也很多,可以通過list函數(shù)或方括號[]進(jìn)行列表的創(chuàng)建。常見函數(shù)如求長度,用len,合并多個列表用+,列表元素重復(fù)*等等。

Tuple(元組):

元組可以看成是一種不可修改的特殊列表,可以通過小括號()或者tuple函數(shù)來創(chuàng)建,即便是只有一個元素,元組中的元素最后也要有逗號。常見操作有求長度len,元組元素重復(fù)*,元組拼接+,查看最值max、min等。

Dictionary(字典):字符串、列表、元組都是有序的數(shù)據(jù)類型,字典是無序的數(shù)據(jù)類型,主要是用來存放具有一定映射關(guān)系的數(shù)據(jù)??梢酝ㄟ^兩種方法創(chuàng)建,1、{}2、dict函數(shù)創(chuàng)建。

set(集合):

集合不能有重復(fù)元素,可以看作是列表和字典的“雜合體”,可以通過三種方式創(chuàng)建,1、set函數(shù),空集合只能用這種方法;2、{}創(chuàng)建,3、創(chuàng)建凍集合,frozenst。

python中函數(shù)包括

1. print()函數(shù):打印字符串

2. raw_input()函數(shù):從用戶鍵盤捕獲字符

3. len()函數(shù):計算字符長度

4. format(12.3654,'6.2f'/'0.3%')函數(shù):實現(xiàn)格式化輸出

5. type()函數(shù):查詢對象的類型

6. int()函數(shù)、float()函數(shù)、str()函數(shù)等:類型的轉(zhuǎn)化函數(shù)

7. id()函數(shù):獲取對象的內(nèi)存地址

8. help()函數(shù):Python的幫助函數(shù)

9. s.islower()函數(shù):判斷字符小寫

10. s.sppace()函數(shù):判斷是否為空格

11. str.replace()函數(shù):替換字符

12. import()函數(shù):引進(jìn)庫

13. math.sin()函數(shù):sin()函數(shù)

14. math.pow()函數(shù):計算次方函數(shù)

15. 3**4: 3的4次方

16. pow(3,4)函數(shù):3的4次方

17. os.getcwd()函數(shù):獲取當(dāng)前工作目錄

18. listdir()函數(shù):顯示當(dāng)前目錄下的文件

19. socket.gethostbyname()函數(shù):獲得某主機的IP地址

20. urllib.urlopen(url).read():打開網(wǎng)絡(luò)內(nèi)容并存儲

21. open().write()函數(shù):寫入文件

22. webbrowser.open_new_tab()函數(shù):新建標(biāo)簽并使用瀏覽器打開指定的網(wǎng)頁

23. def function_name(parameters):自定義函數(shù)

24. time.sleep()函數(shù):停止一段時間

25. random.randint()函數(shù):產(chǎn)生隨機數(shù)

python3.4 編碼有哪些

Python3中的編碼問題前,第一個段落對字節(jié)、ASCII與Unicode與UTF-8等進(jìn)行基本介紹,如果不對這幾種編碼犯頭暈,可直接跳過。

ASCII與Unicode與UTF-8與GBK

首先從老大哥說起。跟很多人一樣,大學(xué)讀了這么久,久仰ASCII編碼的大名。要說這個老大哥,我們再先從字節(jié)說起。一個字節(jié)包括八個比特位,每個比特位表示0或1,一個字節(jié)即可表示從00000000到11111111共2^8=256個數(shù)字。一個ASCII編碼使用一個字節(jié)(除去字節(jié)的最高位作為作奇偶校驗位),ASCII編碼實際使用一個字節(jié)中的7個比特位來表示字符,共可表示2^7=128個字符。比如那時寫C語言的程序,就經(jīng)常要背下ASCII編碼中的01000001(即十進(jìn)制的65)表示字符‘A’,01000001加上32之后的01100001(即十進(jìn)制的97)表示字符‘a(chǎn)’?,F(xiàn)在打開Python,調(diào)用chr和ord函數(shù),我們可以看到Python為我們對ASCII編碼進(jìn)行了轉(zhuǎn)換。

第一個00000000表示空字符,因此ASCII編碼實際上只包括了

字母、標(biāo)點符號、特殊符號等共127個字符。因為ASCII是在美國出生的,對于由字母組成單詞進(jìn)而用單詞表達(dá)的英文來說也是夠了。但是中國人、日本人、

韓國人等其他語言的人不服了。中文是一個字一個字,ASCII編碼用上了渾身解數(shù)256個字符都不夠用。

因此后來出現(xiàn)了Unicode編碼。Unicode編碼通常由兩個字節(jié)組成,共表示256*256個字符,即所謂的UCS-2。某些偏僻字還會用到四個字節(jié),即所謂的UCS-4。也就是說Unicode標(biāo)準(zhǔn)也還在發(fā)展。但UCS-4出現(xiàn)的比較少,我們先記?。鹤钤嫉腁SCII編碼使用一個字節(jié)編碼,但由于語言差異字符眾多,人們用上了兩個字節(jié),出現(xiàn)了統(tǒng)一的、囊括多國語言的Unicode編碼。

在Unicode中,原本ASCII中的127個字符只需在前面補一個全零的字節(jié)即可,比如前文談到的字符‘a(chǎn)’:01100001,在Unicode中變成了00000000 01100001。不久,美國人不開心了,吃上了世界民族之林的大鍋飯,原本只需一個字節(jié)就能傳輸?shù)挠⑽默F(xiàn)在變成兩個字節(jié),非常浪費存儲空間和傳輸速度。

人們再發(fā)揮聰明才智,于是出現(xiàn)了UTF-8編碼。因為針對的是空間浪費問題,因此這種UTF-8編碼是可變長短的,從英文字母的一個字節(jié),到中文的通常的三個字節(jié),再到某些生僻字的六個字節(jié)。解決了空間問題,UTF-8編碼還有一個神奇的附加功能,那就是兼容了老大哥的ASCII編碼。一些老古董軟件現(xiàn)在在UTF-8編碼中可以繼續(xù)工作。

注意除了英文字母相同,漢字在Unicode編碼和UTF-8編碼中通常是不同的。比如漢字的‘中’字在Unicode中是01001110

00101101,而在UTF-8編碼中是11100100 10111000

10101101。

我們祖國母親自然也有自己的一套標(biāo)準(zhǔn)。那就是GB2312和GBK。當(dāng)然現(xiàn)在挺少看到。通常都是直接使用UTF-8。記得我唯一一次看到GB編碼的網(wǎng)頁,是一個成人網(wǎng)站。

Python3中的默認(rèn)編碼

Python3中默認(rèn)是UTF-8,我們通過以下代碼:

import sys

sys.getdefaultencoding()

可查看Python3的默認(rèn)編碼。

Python3中的encode和decode

Python3中字符編碼經(jīng)常會使用到decode和encode函數(shù)。特別是在抓取網(wǎng)頁中,這兩個函數(shù)用的熟練非常有好處。我的理解,encode的作用,使我們看到的直觀的字符轉(zhuǎn)換成計算機內(nèi)的字節(jié)形式。decode剛好相反,把字節(jié)形式的字符轉(zhuǎn)換成我們看的懂的、直觀的、“人模人樣”的形式。如下圖。

\x表示后面是十六進(jìn)制,\xe4\xb8\xad即是二進(jìn)制的11100100 10111000

10101101。也就是說漢字‘中’encode成字節(jié)形式,是11100100 10111000

10101101。同理,我們拿11100100

10111000 10101101也就是\xe4\xb8\xad來decode回來,就是漢字‘中’。完整的應(yīng)該是b'\xe4\xb8\xad',在Python3中,以字節(jié)形式表示的字符串則必須加上前綴b,也就是寫成上文的b'xxxx'形式。

前文說的Python3的默認(rèn)編碼是UTF-8,所以我們可以看到,Python處理這些字符的時候是以UTF-8來處理的。因此從上圖可以看到,就算我們通過encode('utf-8')特意把字符encode為UTF-8編碼,出來的結(jié)果還是相同:b'\xe4\xb8\xad'。

明白了這一點,同時我們知道UTF-8兼容ASCII,我們可以猜想大學(xué)時經(jīng)常背誦的‘A’對應(yīng)ASCII中的65,在這里是不是也能正確的decode出來呢。十進(jìn)制的65轉(zhuǎn)換成十六進(jìn)制是41,我們嘗試下:

b'\x41'.decode()

結(jié)果如下。果然是字符‘A’

Python3中的編碼轉(zhuǎn)換

據(jù)說字符在計算機的內(nèi)存中統(tǒng)一是以Unicode編碼的。只有在字符要被寫進(jìn)文件、存進(jìn)硬盤或者從服務(wù)器發(fā)送至客戶端(例如網(wǎng)頁前端的代碼)時會變成utf-8。但其實我比較關(guān)心怎么把這些字符以Unicode的字節(jié)形式表現(xiàn)出來,露出它在內(nèi)存中的廬山正面目的。這里有個照妖鏡:

xxxx.encode/decode('unicode-escape')

輸出如下

b'\\u4e2d'還是b'\u4e2d,一個斜杠貌似沒影響。同時可以發(fā)現(xiàn)在shell窗口中,直接輸'\u4e2d'和輸入b'\u4e2d'.decode('unicode-escape')是相同的,都會打印出漢字‘中’,反而是'\u4e2d'.decode('unicode-escape')會報錯。說明說明Python3不僅支持Unicode,而且一個‘\uxxxx’格式的Unicode字符可被辨識且被等價于str類型。

如果我們知道一個Unicode字節(jié)碼,怎么變成UTF-8的字節(jié)碼呢。懂了以上這些,現(xiàn)在我們就有思路了,先decode,再encode。代碼如下:

xxx.decode('unicode-escape').encode()

測試如下:

可以看到最后輸出的UTF-8字節(jié)與上面的相同。嘗試成功。所以其他的編碼之間的轉(zhuǎn)換,大概也是如此。

最后的擴(kuò)展

還記得剛剛那個ord嗎。時代變遷,老大哥ASCII被人合并,但ord還是有用武之地。試試ord('中'),輸出結(jié)果是20013。20013是什么呢,我們再試試hex(ord('中')),輸出結(jié)果是'0x4e2d',也就是20013是我們在上文見面了無數(shù)次的x4e2d的十進(jìn)制值。這里說下hex,是用來轉(zhuǎn)換成十六進(jìn)制的函數(shù),學(xué)過單片機的人對hex肯定不會陌生。

最后的擴(kuò)展,在網(wǎng)上看到的他人的問題。我們寫下類似于'\u4e2d'的字符,Python3知道我們想表達(dá)什么。但是讓Python讀取某個文件的時候出現(xiàn)了'\u4e2d',是不是計算機就不認(rèn)識它了呢?后來下文有人給出了答案。如下:

import codecs

file = codecs.open( "a.txt", "r", "unicode-escape" )

u = file.read()

print(u)

Python中冷門但非常好用的內(nèi)置函數(shù)

Python中有許多內(nèi)置函數(shù),不像print、len那么廣為人知,但它們的功能卻異常強大,用好了可以大大提高代碼效率,同時提升代碼的簡潔度,增強可閱讀性

Counter

collections在python官方文檔中的解釋是High-performance container datatypes,直接的中文翻譯解釋高性能容量數(shù)據(jù)類型。這個模塊實現(xiàn)了特定目標(biāo)的容器,以提供Python標(biāo)準(zhǔn)內(nèi)建容器 dict , list , set , 和 tuple 的替代選擇。在python3.10.1中它總共包含以下幾種數(shù)據(jù)類型:

容器名簡介

namedtuple() 創(chuàng)建命名元組子類的工廠函數(shù)

deque 類似列表(list)的容器,實現(xiàn)了在兩端快速添加(append)和彈出(pop)

ChainMap 類似字典(dict)的容器類,將多個映射集合到一個視圖里面

Counter 字典的子類,提供了可哈希對象的計數(shù)功能

OrderedDict 字典的子類,保存了他們被添加的順序

defaultdict 字典的子類,提供了一個工廠函數(shù),為字典查詢提供一個默認(rèn)值

UserDict 封裝了字典對象,簡化了字典子類化

UserList 封裝了列表對象,簡化了列表子類化

UserString 封裝了字符串對象,簡化了字符串子類化

其中Counter中文意思是計數(shù)器,也就是我們常用于統(tǒng)計的一種數(shù)據(jù)類型,在使用Counter之后可以讓我們的代碼更加簡單易讀。Counter類繼承dict類,所以它能使用dict類里面的方法

舉例

#統(tǒng)計詞頻

fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']

result = {}

for fruit in fruits:

if not result.get(fruit):

result[fruit] = 1

else:

result[fruit] += 1

print(result)

#{'apple': 2, 'peach': 3, 'lemon': 1}下面我們看用Counter怎么實現(xiàn):

from collections import Counter

fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']

c = Counter(fruits)

print(dict(c))

#{'apple': 2, 'peach': 3, 'lemon': 1}顯然代碼更加簡單了,也更容易閱讀和維護(hù)了。

elements()

返回一個迭代器,其中每個元素將重復(fù)出現(xiàn)計數(shù)值所指定次。元素會按首次出現(xiàn)的順序返回。如果一個元素的計數(shù)值小于1,elements()將會忽略它。

c = Counter(a=4, b=2, c=0, d=-2)

sorted(c.elements())

['a', 'a', 'a', 'a', 'b', 'b']most_common([n])

返回一個列表,其中包含n個最常見的元素及出現(xiàn)次數(shù),按常見程度由高到低排序。如果n被省略或為None,most_common()將返回計數(shù)器中的所有元素。計數(shù)值相等的元素按首次出現(xiàn)的順序排序:

Counter('abracadabra').most_common(3)

[('a', 5), ('b', 2), ('r', 2)]這兩個方法是Counter中最常用的方法,其他方法可以參考 python3.10.1官方文檔

實戰(zhàn)

Leetcode 1002.查找共用字符

給你一個字符串?dāng)?shù)組words,請你找出所有在words的每個字符串中都出現(xiàn)的共用字符(包括重復(fù)字符),并以數(shù)組形式返回。你可以按任意順序返回答案。

輸入:words = ["bella", "label", "roller"]

輸出:["e", "l", "l"]

輸入:words = ["cool", "lock", "cook"]

輸出:["c", "o"]看到統(tǒng)計字符,典型的可以用Counter完美解決。這道題是找出字符串列表里面每個元素都包含的字符,首先可以用Counter計算出每個元素每個字符出現(xiàn)的次數(shù),依次取交集最后得出所有元素共同存在的字符,然后利用elements輸出共用字符出現(xiàn)的次數(shù)

class Solution:

def commonChars(self, words: List[str]) - List[str]:

from collections import Counter

ans = Counter(words[0])

for i in words[1:]:

ans = Counter(i)

return list(ans.elements())提交一下,發(fā)現(xiàn)83個測試用例耗時48ms,速度還是不錯的

sorted

在處理數(shù)據(jù)過程中,我們經(jīng)常會用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時候就需要用到sorted(),它可以對任何可迭代對象進(jìn)行排序,并返回列表

對列表升序操作:

a = sorted([2, 4, 3, 7, 1, 9])

print(a)

# 輸出:[1, 2, 3, 4, 7, 9]對元組倒序操作:

sorted((4,1,9,6),reverse=True)

print(a)

# 輸出:[9, 6, 4, 1]使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長度來排序:

fruits = ['apple', 'watermelon', 'pear', 'banana']

a = sorted(fruits, key = lambda x : len(x))

print(a)

# 輸出:['pear', 'apple', 'banana', 'watermelon']all

all() 函數(shù)用于判斷給定的可迭代參數(shù)iterable中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False外都算True。注意:空元組、空列表返回值為True。

all(['a', 'b', 'c', 'd']) # 列表list,元素都不為空或0

True

all(['a', 'b', '', 'd']) # 列表list,存在一個為空的元素

False

all([0, 1,2, 3]) # 列表list,存在一個為0的元素

False

all(('a', 'b', 'c', 'd')) # 元組tuple,元素都不為空或0

True

all(('a', 'b', '', 'd')) # 元組tuple,存在一個為空的元素

False

all((0, 1, 2, 3)) # 元組tuple,存在一個為0的元素

False

all([]) # 空列表

True

all(()) # 空元組

Trueany函數(shù)正好和all函數(shù)相反:判斷一個tuple或者list是否全為空,0,F(xiàn)alse。如果全為空,0,F(xiàn)alse,則返回False;如果不全為空,則返回True。

F-strings

在python3.6.2版本中,PEP 498提出一種新型字符串格式化機制,被稱為 “字符串插值” 或者更常見的一種稱呼是F-strings,F(xiàn)-strings提供了一種明確且方便的方式將python表達(dá)式嵌入到字符串中來進(jìn)行格式化:

s1='Hello'

s2='World'

print(f'{s1} {s2}!')

# Hello World!在F-strings中我們也可以執(zhí)行函數(shù):

def power(x):

return x*x

x=4

print(f'{x} * {x} = {power(x)}')

# 4 * 4 = 16而且F-strings的運行速度很快,比傳統(tǒng)的%-string和str.format()這兩種格式化方法都快得多,書寫起來也更加簡單。

本文主要講解了python幾種冷門但好用的函數(shù),更多內(nèi)容以后會陸陸續(xù)續(xù)更新~


分享題目:python編碼類型函數(shù),python代碼的編碼規(guī)范
文章網(wǎng)址:http://weahome.cn/article/hcdijh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部