一、類型
站在用戶的角度思考問題,與客戶深入溝通,找到溧陽網(wǎng)站設(shè)計與溧陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋溧陽地區(qū)。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 科學計數(shù)法(小寫'e')
%E 科學計數(shù)法(小寫'E')
%g %f和%e的簡寫
%G %f和%E的簡寫
三、運算符
1.
/ 除 得到結(jié)果是浮點數(shù)
//取整除 不是四舍五入 是取比結(jié)果小的第一個整數(shù)
%取余
**指數(shù)
2.復合運算符(在進行符合運算的時候,不論什么情況,都首先算等號右邊的式子)
+=
-=
*=
/=
**=
//=
3.常用數(shù)據(jù)類型轉(zhuǎn)換(input()輸入的是字符串)
int(x) 將x轉(zhuǎn)換成一個整數(shù)
float(x) 將x轉(zhuǎn)換成一個浮點數(shù)
complex(real,[,imag]) 創(chuàng)建一個復數(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.列表的常見操作(列表是有序的,可以重復,可變)
添加操作:
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ù)里為形參重新復制
結(jié)果:可變類型作為實參,如果為形參重新復制,修改形參不影響實參
關(guān)于Python的一些總結(jié)
希望自己以后在學習Python的過程中可以邊學習邊總結(jié),就自己之前的學習先做以總結(jié),之后將不斷總結(jié)更新。
為什么選擇Python
經(jīng)常會有同學問我為什么選擇Python。我很喜歡這門語言,因為它的簡潔靈活,易學,易讀,可移植并且功能強大。
高級
可以說,每一代編程語言的產(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ā)者負責的。所以哪怕是對于一個很少訪問、修改和管理內(nèi)存的應(yīng)用程序,程序員也必須在執(zhí)行了基本任務(wù)之外履行這些職責。這些加諸在開發(fā)者身上的沒有必要的負擔和責任常常會分散精力。
在 Python 中,由于內(nèi)存管理是由 Python 解釋器負責的,所以開發(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語言中只需要一個機器指令ADD就好,而對于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中沒有重復的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