一前弯、變量和數(shù)據(jù)類型
變量名字母全小寫, 常量名字母全大寫望伦,多個單詞用下劃線隔開。
標(biāo)識符
1)第一個字符必須是字母表中字母或下劃線 _ 古程。
2)標(biāo)識符的其他部分由字母蔼卡、數(shù)字和下劃線組成。
3)標(biāo)識符對大小寫敏感籍琳。
4)不可以是python中的關(guān)鍵字菲宴,如False贷祈、True、None喝峦、class等势誊。
注意:self不是python中的關(guān)鍵字。類中參數(shù)self也可以用其他名稱命名谣蠢,但是為了規(guī)范和便于讀者理解粟耻,推薦使用self。字符串
str.endswith()
S.endswith(suffix[, start[, end]]) -> bool
用于判斷字符串是否以指定后綴結(jié)尾眉踱,可選參數(shù)"start"與"end"為檢索字符串的開始與結(jié)束位置挤忙。
- 字典
- 對字典排序
# 按照key對字典進(jìn)行排序
sorted(dict1.items(), key = lambda x: x[0])
# 按照value對字典進(jìn)行排序
sorted(dict1.items(), key = lambda x: x[1])
二、面向?qū)ο缶幊?/h2>
Python是動態(tài)語言谈喳,根據(jù)類創(chuàng)建的實例(對象)可以任意綁定屬性册烈。
- 類、對象婿禽、屬性和方法
名稱 | 說明 | 例 |
---|---|---|
類 | 類名首字母大寫赏僧,多個單詞采用駝峰式命名。如:ValueError扭倾。私有類可用一個下劃線開頭 | 人類淀零;手機 |
對象 | 對象=類名() | 張三、李四膛壹;華為驾中、oppo |
屬性 | 對象集合的共同特征 | 身高、體重模聋、年齡 |
方法 | 即:動作肩民。python 類語法中有三種方法:實例方法(self)、靜態(tài)方法撬槽、類方法(cls)此改。方法名一律小寫,如有多個單詞侄柔,用下劃線隔開共啃;私有方法在方法前加一個下劃線_ | 吃飯、上班 |
函數(shù)的命名規(guī)格與方法的命名規(guī)格相同暂题。
- 內(nèi)置類屬性
-
__name__
:__name__
是一個變量移剪,前后加了雙下劃線是因為這是系統(tǒng)定義的名字,普通變量不要使用此方式命名變量薪者。__name__
天生就存在于一個 python 程序中纵苛,代表對應(yīng)程序名稱。import的時候是要執(zhí)行所import的模塊的。直接運行py文件(__name__
='__main__'
)和導(dǎo)入py文件(__name__
= 文件名攻人,不加后面的.py)輸出的__name__
值不同取试,因此通過判斷__name__
的值,就可以區(qū)分py文件是直接被運行怀吻,還是被引入到其他程序中瞬浓。 -
__module__
:類定義所在的模塊,如果在當(dāng)前模塊返回__main__
; 如果類位于一個導(dǎo)入模塊mymod中蓬坡,那么className.__module__
等于mymod) -
__bases__
:類的所有父類(包含了所有父類組成的元組) -
__doc__
:類的文檔字符串猿棉,也就是類的幫助信息。 -
__dict__
:類的屬性(獲取類所有信息):結(jié)果返回一個字典包含類屬性及屬性值屑咳,類方法等所有類信息
參考:python類屬性用法總結(jié)
-
__new__
和__init__
區(qū)別
__init__
是當(dāng)實例對象創(chuàng)建完成后被調(diào)用的萨赁,然后設(shè)置對象屬性的一些初始值。(實例方法)
__new__
是在實例創(chuàng)建之前被調(diào)用的兆龙,因為它的任務(wù)就是創(chuàng)建實例然后返回該實例杖爽。(靜態(tài)方法)
即,__new__
在__init__
之前被調(diào)用详瑞,__new__
的返回值(實例)將傳遞給__init__
方法的第一個參數(shù)掂林,然后__init__
給這個實例設(shè)置一些參數(shù)臣缀。
只有在__new__
返回一個cls的實例時坝橡,后面的__init__
才能被調(diào)用。 -
常用內(nèi)置函數(shù)
所有內(nèi)置函數(shù)
-
sorted()
:對所有可迭代的對象進(jìn)行排序操作精置。 -
eval()
:執(zhí)行一個字符串表達(dá)式计寇,并返回表達(dá)式的值。
-
ord()
與chr()
ord()
(ordinal序數(shù)的)對表示單個 Unicode 字符的字符串脂倦,返回代表它 Unicode 碼點的整數(shù)番宁。是chr()
的逆函數(shù)。ord('a') = 97, chr(97) = 'a' -
round()
:round(number[, ndigits]) -> number 保留n位小數(shù)
- 封裝赖阻、繼承蝶押、多態(tài)
- 封裝:(1)私有化屬性(__屬性),訪問范圍僅限于類中火欧;(2)定義共有set和get方法棋电;(3)裝飾器@property進(jìn)行私有化處理。
class Student:
def __init__(self, age):
self.__age = age # 低層變?yōu)椋篲Student__age
# 先有g(shù)et_age
@property
def age(self):
return self.__age
# 再有set_age苇侵,因為set依賴get
@age.setter
def age(self, age):
if 0 <= age <= 120:
self.__age = age
x = Student(17)
print(x.age) # 17
print(dir(x)) # ['_Student__age',...... '__str__', 'age']
三赶盔、常見模塊
模塊使用小寫命名,首字母保持小寫榆浓,盡量不要用下劃線(除非多個單詞于未,且數(shù)量不多的情況)
-
bisect
bisect.bisect_left(a, x)
返回x元素可以插入有序序列a的最左邊的位置或者x在a里最左邊的位置O(log n)
bisect.insort_left(a, x)
將 x 插入到一個有序序列 a 里,并維持其有序。O(n) -
collections
x = defaultdict(list)
defaultdict是dict的子類烘浦,defaultdict提供一個default_factory屬性抖坪,該屬性所指定的函數(shù)負(fù)責(zé)為不存在的key來生成 value。(訪問x[0]得到[]) -
sortedcontainers
其主要包含SortedList
闷叉、SortedDict
和SortedSet
三個類柳击,容器內(nèi)數(shù)據(jù)一直保持有序。
from sortedcontainers import SortedList
sl = SortedList(['e', 'a', 'c', 'd', 'b'])
sl.add("ab") # SortedList(['a', 'ab', 'b', 'c', 'd', 'e'])
sl.bisect_left('e') # 5
詳見:http://www.grantjenks.com/docs/sortedcontainers/
-
itertools
模塊中主要包含了 一些用于生成迭代器的函數(shù)片习。
參考:
虐齐龋客網(wǎng)-知識點專項練習(xí)
Python 標(biāo)準(zhǔn)庫
持續(xù)更新中......