欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Python的一些學(xué)習(xí)總結(jié)

 更新時間:2018年05月25日 23:56:48   作者:Yabea  
這篇文章主要介紹了關(guān)于Python的一些總結(jié),希望自己以后在學(xué)習(xí)Python的過程中可以邊學(xué)習(xí)邊總結(jié),就自己之前的學(xué)習(xí)先做以總結(jié),之后將不斷總結(jié)更新

一、類型

1.變量沒有類型,數(shù)據(jù)有類型

  例:num = 1  ---->num是沒有類型的,1是int類型

二、格式化輸出

2.name = "張三"

  age = 18

     print("我是" + name + ",今年" + age + "歲")    #這樣會報錯,用+進行拼接時,正數(shù)和字符串不能拼接

3.占位符

%c      字符
%s 字符串
%d   有符合的十進制整數(shù)
%u  無符號十進制整數(shù)
%o  八進制整數(shù)
%x  十六進制整數(shù)(小字母0x)
%X  十六進制整數(shù)(大寫字母0X)
%f  浮點數(shù)
%e  科學(xué)計數(shù)法(小寫'e')
%E  科學(xué)計數(shù)法(小寫'E')
%g  %f和%e的簡寫
%G  %f和%E的簡寫

三、運算符

1.

/ 除 得到結(jié)果是浮點數(shù)

//取整除  不是四舍五入 是取比結(jié)果小的第一個整數(shù)

%取余

**指數(shù)

2.復(fù)合運算符(在進行符合運算的時候,不論什么情況,都首先算等號右邊的式子)

  +=
  -=
  *=
  /=
  **=
  //=

3.常用數(shù)據(jù)類型轉(zhuǎn)換(input()輸入的是字符串)

int(x)  將x轉(zhuǎn)換成一個整數(shù)
float(x)  將x轉(zhuǎn)換成一個浮點數(shù)
complex(real,[,imag])  創(chuàng)建一個復(fù)數(shù),real為實部,imag為虛部
str(x)  將x轉(zhuǎn)換成一個字符串
repr(x)  將x轉(zhuǎn)換成表達式字符串
eval(str)  用來計算在字符串中的有效的python表達式,并返回一個對象
tuple(s)  將序列s轉(zhuǎn)換成一個元組
list(s)  將序列s轉(zhuǎn)換成一個列表
chr(x)  將一個整數(shù)轉(zhuǎn)換成一個Unicode字符
ord(x)  將一個字符轉(zhuǎn)成一個ASCII整數(shù)值
hex(x)  將一個整數(shù)轉(zhuǎn)成一個十六進制的字符串

4.切片

name = "abcdef"
print(name[0:3])   取下標0-2的字符
print(name[0:5])  取下標0-4的字符
print(name[3:5])  取下標3-4的字符
print(name[2:])  取下標2之后到最后的的字符
print(name[1:-1])  取下標1開始到最后第二個的字符

5.字符串常見的操作

find(str,0,len(mystr))  查找字符串中是否出現(xiàn)str字符,從下標為0開始到最后;沒有找到則打印-1
index(str,0,len(mystr))  跟find()方法一樣,只不過如果str不在 mystr中會報一個異常.
count()  返回 str在start和end之間 在 mystr里面出現(xiàn)的次數(shù)
replace()  把 mystr 中的 str1 替換成 str2,如果 count 指定,則替換不超過 count 次.
nystr.solit(str,2)   以 str 為分隔符切片 mystr,2則表示 只分割幾個字符串
capitalize 把字符串第一個字符大寫
title   把字符串的每個單詞首字母大寫
startswith 檢查字符串是否以"str"開頭,是則返回True
endswith  檢查字符串是否以"str"結(jié)尾,是則返回True
lower  將字符中所有大寫轉(zhuǎn)換成小寫
upper   將字符中的所有小寫轉(zhuǎn)換成大寫
ljust  返回一個原字符串左對齊,并使用空格填充至剩下長度的新字符串
rjust  返回一個原字符串右對齊,并使用空格填充至剩下長度的新字符串
center   返回一個原字符串居中,并使用空格填充至長度 width 的新字符串
lstrip  刪除str左邊的空白字符
rstrip  刪除str左邊的空白字符
strip  刪除mystr字符串兩端的空白字符
rfind  從右查找與find差不多
rindex  類似于 index(),不過是從右邊開始.
partition    把mystr以str分割成三部分,str前,str和str后
rpartition  類似于 partition()函數(shù),不過是從右邊開始.
splitlines   按照行分隔,返回一個包含各行作為元素的列表
isalpha  如果 mystr 所有字符都是字母 則返回 True,否則返回 False
isdigit  如果 mystr 只包含數(shù)字則返回 True 否則返回 False.
isalnum  如果 mystr 所有字符都是字母或數(shù)字則返回 True,否則返回 False
isspace  如果 mystr 中只包含空格,則返回 True,否則返回 False.
join    mystr中每個字符串后面插入str構(gòu)成一個新的字符串

 

6.列表的常見操作(列表是有序的,可以重復(fù),可變)

添加操作:

  list_1.append("asd")  直接添加到最后
  list_1.extend([1,2])    將另一個集合中的元素逐一添加到列表中
  list_1,insert(index,obj)  index表示添加到指定下標處,obj代表要添加的內(nèi)容

改操作:

  list_1[1]    根據(jù)對應(yīng)的位置進行修改

查:

  in(存在),如果存在那么結(jié)果為true,否則為false
  not in(不存在),如果不存在那么結(jié)果為true,否則false
  index和count與字符串中的用法相同    a.index('a',1,4)按照索引1到索引4查找a出現(xiàn)的位置(這個位置還是原理的索引)

刪除操作:

  del:根據(jù)下標刪除 
  pop:刪除最后一個元素
  remove:根據(jù)元素的值進行刪除

 

排序:sort reverse

  sort是將list按照特定的順序進行排列參數(shù)reverse=True可改為倒序,由大到小,
  reberse是將list逆置

 

7:元組(元組的元素是不能修改的)

  index和count與字符串和列表中的用法相同

8:字典(無序可變)只有不可變的數(shù)據(jù)類型才能作為字典的鍵

  若訪問不存在的鍵值時則會報錯,

  在我們不確定字典中是否存在某個鍵而又想獲取其值時,可以使用get方法,還可以設(shè)置默認值

添加操作:

  1.根據(jù)索引訪問不存在的元素會報錯

  2.如果在使用 變量名['鍵'] = 數(shù)據(jù) 時,這個“鍵”在字典中,不存在,那么就會新增這個元素

demo:添加新的元素

刪除操作:
  del   
  del  info["name"]
  clear()   清空整個字典,但是字典本身還存在
len(dic)  測量字典中,鍵值對的個數(shù)
dic.keys  返回一個包含字典所有KEY的列表
dic.values  返回一個包含字典所有value的列表
dic.items  返回一個包含所有(鍵,值)元祖的列表
dic.has_key  dict.has_key(key)如果key在字典中,返回True,否則返回False

遍歷字典的元素

dict = {"name":"zhangsan","sex":"nan"}
for item in dict.items()
  print item
>>('name','zhangsan')
>>('sex','nan')

遍歷所有鍵值對

dict = {"name":"zhangsan","sex":"nan"}
for k,v in dict.items()
  print (k,v)
>>name,zhangsan
>>sex,nan

實現(xiàn)帶下標的索引遍歷

>>> chars = ['a', 'b', 'c', 'd']
>>> for i, chr in enumerate(chars):
...     print i, chr
...
0 a
1 b
2 c
3 d
cmp?python中才有

cmp(item1, item2) 比較兩個值
 

關(guān)于引用:

  使用1:不可變類型,修改形參,不影響實參
  使用2:可變類型作為實參  修改則改變實參
  使用3:可變類型作為實參時,在函數(shù)里為形參重新復(fù)制
  結(jié)果:可變類型作為實參,如果為形參重新復(fù)制,修改形參不影響實參

關(guān)于Python的一些總結(jié)
希望自己以后在學(xué)習(xí)Python的過程中可以邊學(xué)習(xí)邊總結(jié),就自己之前的學(xué)習(xí)先做以總結(jié),之后將不斷總結(jié)更新。

為什么選擇Python
經(jīng)常會有同學(xué)問我為什么選擇Python。我很喜歡這門語言,因為它的簡潔靈活,易學(xué),易讀,可移植并且功能強大。

高級

可以說,每一代編程語言的產(chǎn)生,我們都會達到一個新的高度。從匯編語言,到C Pascal等,伴隨著C語言的誕生,產(chǎn)生了C++、Java這樣的現(xiàn)代編譯語言,之后有了強大的可以進行系統(tǒng)調(diào)用的解釋性腳本語言Python、 Perl...
比如Python中就有一些高級的數(shù)據(jù)結(jié)構(gòu),列表和字典就是內(nèi)建于語言本身可以直接使用的,在核心語言中提供這些重要的構(gòu)建單元,可以縮短開發(fā)時間和代碼量,產(chǎn)生可讀性更好的代碼。

面向?qū)ο?/strong>

Python是面向?qū)ο缶幊?/strong>

內(nèi)存管理器

C 或者 C++最大的弊病在于內(nèi)存管理是由開發(fā)者負責(zé)的。所以哪怕是對于一個很少訪問、修改和管理內(nèi)存的應(yīng)用程序,程序員也必須在執(zhí)行了基本任務(wù)之外履行這些職責(zé)。這些加諸在開發(fā)者身上的沒有必要的負擔和責(zé)任常常會分散精力。
在 Python 中,由于內(nèi)存管理是由 Python 解釋器負責(zé)的,所以開發(fā)人員就可以從內(nèi)存事務(wù)中解放出來,全神貫注于最直接的目標,僅僅致力于開發(fā)計劃中首要的應(yīng)用程序。這會使錯誤更少、程序更健壯、開發(fā)周期更短。

解釋性和編譯性

Python 是一種解釋型語言,這意味著開發(fā)過程中沒有了編譯這個環(huán)節(jié)。一般來說,由于不是以本地機器碼運行,純粹的解釋型語言通常比編譯型語言運行的慢。然而,類似于 Java,Python實際上是字節(jié)編譯的,其結(jié)果就是可以生成一種近似機器語言的中間形式。這不僅改善了 Python的性能,還同時使它保持了解釋型語言的優(yōu)點。

Python為什么運行速度相較于C語言慢

因為Python等動態(tài)語言每一個簡單的操作都需要大量的指令才能完成。Python是動態(tài)語言,變量只是對象的引用,比如對于一個簡單的操作:a+b,在C語言中只需要一個機器指令A(yù)DD就好,而對于Python而言,變量a和b本身沒有類型,而它們的值有類型,所以在相加之前需要先判斷類型,之后,讀取數(shù)值,相加,生成一個新對象,將運算結(jié)果存入,返回對象,當然,可能還會考慮內(nèi)存溢出等問題。

Python基礎(chǔ)
數(shù)據(jù)類型

python中的數(shù)據(jù)類型可以分為:字符串、布爾類型、整數(shù)、浮點數(shù)、數(shù)字、列表、元組、字典和日期。

字符串

不可變對象,可使用單引號,雙引號擴起來表示單行字符串,使用三引號表示多行字符串,在三引號可以自由的使用單引號和雙引號。

ASCII碼

字符串比較特殊的是編碼問題 我們知道,計算機是美國人發(fā)明的,最初只有127個字母被編碼到計算機中,包括大小寫字母、數(shù)字和一些符號,這個編碼表被稱為ASCII碼表。

Unicode

要處理一個中文顯然一個字節(jié)是不夠用的,又不能和ASCII碼沖突,因此中國制定了GB2312編碼。而全世界有很多的語言,在多語言混合的文本中,顯示出來的話一定會有亂碼,因此,Unicode應(yīng)運而生,它將所有語言統(tǒng)一到一套編碼中,就不會有亂碼問題了。ASCII碼用一個字節(jié)表示了一個字符,而Unicode用兩個字節(jié)表示一個字符。以Unicode表示的字符串用u'...'表示。

UTF-8

經(jīng)常在.py文件的開頭寫的"#coding:utf-8”是什么意思?我們知道Unicode編碼要比ASCII編碼多一倍的存儲空間,在存儲和傳輸上會十分的不劃算,如果寫的文本全是英文的話,使用Unicode編碼就十分浪費。于是UTF-8編碼出現(xiàn)了,UTF-8編碼是把一個Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個字節(jié),并且可以將ASCII碼看成是UTF-8的一部分。

編碼解碼

在Python2.7中,操作系統(tǒng)給它什么編碼的字符串,它就接收啥格式的字符串,默認的格式與使用的格式不同,就會出現(xiàn)各種錯誤。
解決方法:
1.知道系統(tǒng)所使用的編碼格式
2.把獲取的頁面先用系統(tǒng)格式解碼,然后在編碼為utf8格式
3.你的腳本中統(tǒng)一使用uft8編碼
4.處理結(jié)束,把你的字符串先utf8解碼,然后系統(tǒng)格式編碼。
Python中,通常使用decode()和encode()進行解碼和編碼。

布爾類型

一個布爾值只有True和Flase兩種值

整數(shù)

包括整數(shù)和負整數(shù)。

浮點數(shù)

就是小數(shù) 整數(shù)和浮點數(shù)在計算機內(nèi)部的存儲是不同的 整數(shù)的運算永遠是精確的 而浮點運算可能有四舍五入的誤差 

列表List

list是一個是一個可變的有序表,是Python內(nèi)置的一種數(shù)據(jù)類型,可以隨時添加、刪除、替換其中的元素。
Python中的列表就是一個迭代器,我們知道Python是使用C編寫的,那么list的內(nèi)部實現(xiàn)是怎樣的呢?Python中的列表是基于PyListObject實現(xiàn)的,PyListObject是一個變長對象,在內(nèi)部通過一些方法維護列表的地址,進行內(nèi)存管理等實現(xiàn)列表的功能。

元組Tuple

除了元組以外的另一種有序表稱為元組tuple,但是tuple一旦初始化便不能修改,在定義時,tuple的元素就被確定了。為什么要引入tuple呢?因為tuple不可變,所以代碼更為安全,能用tuple代替list的情況就盡量使用tuple。
由于元組是不可變的,因此修改元素操作是非法的,但是可通過對元素進行連接組合,比如:tuple3 = tuple1 + tuple2。
使用del語句可刪除整個元組。

字典Dict

Python內(nèi)置了字典,使用key-value存儲,具有極快的查找速度。和list相比,查找速度要高很多。
為什么dict查找速度這么快?因為dict的實現(xiàn)原理和查字典是一樣的。假設(shè)字典包含了1萬個漢字,我們要查某一個字,一個辦法是把字典從第一頁往后翻,直到找到我們想要的字為止,這種方法就是在list中查找元素的方法,list越大,查找越慢。第二種方法是先在字典的索引表里(比如部首表)查這個字對應(yīng)的頁碼,然后直接翻到該頁,找到這個字,無論找哪個字,這種查找速度都非常快,不會隨著字典大小的增加而變慢。
dict的初始化如下:

a = {}
a['A'] = 1
Dict和List的區(qū)別:Dict的查找速度和插入速度都是極快的,不會隨著key的增加而增加;但dict要占用大量的內(nèi)存,內(nèi)存浪費多。
Dict是不可變對象,因為使用key來計算value的存儲位置,為了保證結(jié)果的正確性,作為key的對象不能變,可使用字符串、整數(shù)等不可變的對象作為dict中的key。

結(jié)合Set

set和dict類似,也是一組key的集合,但是不同的是在set中沒有重復(fù)的key。

可變和不可變

綜上所述,Python中的不可變對象有:字符串、整數(shù)、元組;可變對象有:列表,集合,字典。
對于可變對象,比如list,對list進行操作,list內(nèi)部的內(nèi)容是會變化的,而對于不可變對象,比如str,使用replace()方法,雖然可以更改值,但是變量的值并不會發(fā)生改變,為什么呢?
比如:

#coding:utf-8

a = 'abc'
b = a.replace('a','A')
print b
print a

a是變量,而'abc'才是字符串對象,為什么a的值在執(zhí)行完上述代碼之后還是'abc',是因為a本身是一個變量,指向的對象是'abc',調(diào)用方法replace是作用在字符串對象'abc'上的,但并沒有改變'abc‘的內(nèi)容,只是新創(chuàng)建了一個對象并賦值給b變量。
對于不可變對象,調(diào)用自身的任意方法,并不會改變對象自身的內(nèi)容,這些方法會創(chuàng)建新的對象并返回,保證了不可變對象本身是永遠不可變的。

傳值還是傳引用

Python在參數(shù)傳遞時遇到的一個有趣的問題是:函數(shù)的傳參是傳值還是傳引用?
對于不可變對象作為函數(shù)參數(shù),相當于C系語言的值傳遞;
對于可變對象作為函數(shù)參數(shù),相當于C系語言的引用傳遞。

高級特性
迭代器

Python中的迭代器是什么呢?
迭代器是訪問集合元素的一種方式,迭代器的對象是從集合的第一個元素開始訪問,直到所有的元素訪問完結(jié)束,迭代器只能前進而不能后退。
對于遍歷支持隨機訪問的數(shù)據(jù)結(jié)構(gòu)(tuple,list),迭代器相比于for循環(huán)并無優(yōu)勢,因為迭代器丟失了索引值。但對于無法隨機訪問的數(shù)據(jù)結(jié)構(gòu),迭代器是唯一的訪問元素的方式。
迭代器不要求事先準備好整個迭代過程中的所有元素,迭代器僅在迭代到某個元素時才計算該元素,迭代器僅僅在迭代到某個元素時才計算該元素,在這之前或之后,元素可以不存在或者被銷毀,這個特點使得迭代器特別適合用于遍歷一些巨大的或是無限的集合。
迭代器中有兩個基本的方法:
next方法:返回迭代器的下一個元素
__iter__方法:返回迭代器對象本身。

生成器

帶有yield的函數(shù)在Python中被稱為生成器。yield就是將函數(shù)變成了一個生成器,函數(shù)執(zhí)行過程中使用yield就好像是用yield將執(zhí)行中斷多次,每次中斷都會通過yield返回當前的迭代值。
當數(shù)據(jù)量較大時,使用生成器的效率更高。

裝飾器

函數(shù)是一個對象,函數(shù)對象也可以被賦值給變量,所以,通過變量也能調(diào)用該函數(shù)。在代碼運行期間動態(tài)增加功能的方式,稱為裝飾器。使用Python的@語法,把裝飾器置于函數(shù)的定義處。

元類

類是用來描述如何生成一個對象的代碼段,在Python中,類同樣是一個對象,只要使用class關(guān)鍵字,Python解釋器在執(zhí)行的時候就會創(chuàng)建一個對象。這個對象自身擁有創(chuàng)建對象的能力,所以它是一個類,但它本身還是一個對象,因此,可以實現(xiàn)以下操作:可以將它賦值給一個變量、可以拷貝它、可以為它增加屬性、可以將它作為函數(shù)參數(shù)進行傳遞。
這也是動態(tài)語言和靜態(tài)語言最大的不同,函數(shù)和類的定義,不是編譯時定義的,而是運行時動態(tài)創(chuàng)建的。也就是在Python中,可以動態(tài)的創(chuàng)建類,類也是對象,這就是使用關(guān)鍵字class時Python在幕后做的事情,這些都是通過元類實現(xiàn)的。
那么到底什么是元類呢?
元類就是用來創(chuàng)建類的東西,創(chuàng)建類就是為了創(chuàng)建類的實例對象,但是我們知道類就是對象,元類就是用來創(chuàng)建這些類(對象)的,所以元類就是類的類。
元類是創(chuàng)建類這種對象的東西,可以將元類稱為類工廠。
元類的主要用途是創(chuàng)建API。

閉包

Python中的閉包是什么?
如果在一個內(nèi)部函數(shù)里,對在外部作用域的變量進行引用,那么內(nèi)部函數(shù)就被認為是閉包。用Python的語言介紹就是,調(diào)用一個函數(shù)A,這個函數(shù)A返回了一個函數(shù)B給你,這個返回的函數(shù)B就叫做閉包。
裝飾器就是一個閉包。

相關(guān)文章

  • 使用Python處理Excel文件并將數(shù)據(jù)存儲到PostgreSQL的方法

    使用Python處理Excel文件并將數(shù)據(jù)存儲到PostgreSQL的方法

    在日常工作中,我們經(jīng)常會遇到需要處理大量文件并將數(shù)據(jù)存儲至數(shù)據(jù)庫或整合到一個文件的需求,本文將向大家展示如何使用Python處理Excel文件并將數(shù)據(jù)存儲到PostgreSQL數(shù)據(jù)庫中,需要的朋友可以參考下
    2024-01-01
  • Python裝飾器如何實現(xiàn)修復(fù)過程解析

    Python裝飾器如何實現(xiàn)修復(fù)過程解析

    這篇文章主要介紹了Python裝飾器如何實現(xiàn)修復(fù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 一款Python工具制作的動態(tài)條形圖(強烈推薦!)

    一款Python工具制作的動態(tài)條形圖(強烈推薦!)

    有時為了方便看數(shù)據(jù)的變化情況,需要畫一個動態(tài)圖來看整體的變化情況,下面這篇文章主要給大家介紹了一款Python工具制作的動態(tài)條形圖的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • python中threading和queue庫實現(xiàn)多線程編程

    python中threading和queue庫實現(xiàn)多線程編程

    這篇文章主要介紹了python中threading和queue庫實現(xiàn)多線程編程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 深度學(xué)習(xí)環(huán)境搭建anaconda+pycharm+pytorch的方法步驟

    深度學(xué)習(xí)環(huán)境搭建anaconda+pycharm+pytorch的方法步驟

    本文主要介紹了深度學(xué)習(xí)環(huán)境搭建anaconda+pycharm+pytorch的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼

    基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼

    這篇文章主要介紹了基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python實現(xiàn)的knn算法示例

    Python實現(xiàn)的knn算法示例

    這篇文章主要介紹了Python實現(xiàn)的knn算法,結(jié)合實例形式詳細分析了Python實現(xiàn)knn算法的原理與相關(guān)操作技巧,并附帶給出了statsmodels模塊與pandas模塊的下載、安裝操作方法,需要的朋友可以參考下
    2018-06-06
  • Python讀寫Json涉及到中文的處理方法

    Python讀寫Json涉及到中文的處理方法

    下面小編就為大家?guī)硪黄狿ython讀寫Json涉及到中文的處理方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • python?包實現(xiàn)?time?時間管理操作

    python?包實現(xiàn)?time?時間管理操作

    這篇文章主要介紹了python包實現(xiàn)time時間管理操作,文章通過獲取當前時間戳,即當前系統(tǒng)內(nèi)表示時間的一個浮點數(shù),下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • Python?庫?PySimpleGUI?制作自動化辦公小軟件的方法

    Python?庫?PySimpleGUI?制作自動化辦公小軟件的方法

    Python?在運維和辦公自動化中扮演著重要的角色,PySimpleGUI?是一款很棒的自動化輔助模塊,讓你更輕松的實現(xiàn)日常任務(wù)的自動化,下面通過本文給大家介紹下Python?庫?PySimpleGUI?制作自動化辦公小軟件的過程,一起看看吧
    2021-12-12

最新評論