Python_day2_基礎(chǔ)知識(shí)

執(zhí)行過程

首先來說下python的執(zhí)行過程:

  1. python解釋器讀取源代碼到內(nèi)存中
  2. 解釋器進(jìn)行詞法語(yǔ)法檢測(cè)
  3. 解釋器將源代碼翻譯成字節(jié)碼
  4. 將字節(jié)碼交由python虛擬機(jī)執(zhí)行

Note:.pyc文件就是字節(jié)碼的文件存儲(chǔ)忱嘹。python解釋器會(huì)優(yōu)先執(zhí)行pyc文件嘱腥。如果源碼
文件修改時(shí)間較新,則會(huì)執(zhí)行源碼并重新生成pyc文件拘悦。

三元運(yùn)算

如果if條件表達(dá)式成立齿兔,變量A=值A(chǔ)。否則值A(chǔ)=值B
變量A = 值A(chǔ) if ... else 值B

運(yùn)算符

數(shù)學(xué)運(yùn)算符:

運(yùn)算符 描述
+
-
*
/
% 求模-返回余數(shù)
** 冪-返回x的y次方
// 取商的整數(shù)部分

比較運(yùn)算符:

運(yùn)算符 描述
== 等于,比較值
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

賦值運(yùn)算符:

運(yùn)算符 描述
= 賦值分苇,如 x = 10
+= x += y 等同于 x = x + y
-= x -= y 等同于 x = x - y
*= x *= y 等同于 x = x * y
/= x /= y 等同于 x = x / y
%= x %= y 等同于 x = x % y
**= x **= y 等同于 x = x ** y
//= x //= y 等同于 x = x // y

邏輯運(yùn)算符:

運(yùn)算符 描述
and
or
not

成員運(yùn)算符:

運(yùn)算符 描述
in 如果x是y的成員添诉,返回True
not in 如果x不是y的成員,返回True

同一性運(yùn)算符:

運(yùn)算符 描述
is 判斷是否是同一個(gè)引用地址医寿,即id(x) 與 id(y) 是否相等
is not 判斷是否不是同一個(gè)引用地址

注意:
這里容易和 == 混淆栏赴。==是判斷值相等。而is是判斷
是否是指向同一個(gè)內(nèi)存地址

優(yōu)先級(jí):

編碼

為什么會(huì)有編碼問題靖秩?
因?yàn)橛?jì)算機(jī)最早只支持255個(gè)字符须眷,即ASCII編碼,只包括大小寫字母盆偿,數(shù)字還有一些符號(hào)柒爸,然后根本沒有考慮外國(guó)人。
后來很多國(guó)家都搞了自己使用的編碼事扭。然后混亂了捎稚!
后來,出來了萬國(guó)碼unicode求橄。它包含世上所有的字符今野,終結(jié)編碼混亂的局面。
再后來罐农,出來了utf-8.在兼顧編碼統(tǒng)一的情況下条霜,可以更加節(jié)省存儲(chǔ)成本。

再來說說Python:
因?yàn)閜ython2.x默認(rèn)使用了ASCII編碼涵亏。所以默認(rèn)打印中文亂碼宰睡。這里要顯示指定使用utf-8來存儲(chǔ)代碼。
# -*- coding: utf-8 -*-

編碼轉(zhuǎn)換:
python2.x: 首先要先將編碼轉(zhuǎn)換成unicode气筋,然后在轉(zhuǎn)換成gbk等
python3.x: 默認(rèn)使用unicode編碼拆内。所以在轉(zhuǎn)換編碼時(shí),直接轉(zhuǎn)換成gbk等編碼了宠默。

對(duì)象麸恍,對(duì)象,對(duì)象

結(jié)論:

  1. 一切皆對(duì)象
  2. 對(duì)象是由類創(chuàng)建的搀矫。
  3. 對(duì)象具有的功能都是從類里找的
x = 0 # x = int()
x = '' # x = str()
x = [] # x = list()
x = () # x = tuple()
x = {} # x = dict()

int內(nèi)部功能介紹

Note: 3.x中沒有l(wèi)ong類型抹沪。統(tǒng)一為int

常用方法:

  • __abs__ # 返回絕對(duì)值,可以直接調(diào)用abs()
  • __add__ # 3+2的加號(hào)就是調(diào)用的這個(gè)方法
  • __bool__ # 返回True 或 False
  • bit_length() # 返回當(dāng)前數(shù)的最小位數(shù)(二進(jìn)制)
  • __divmod__ # 返回一個(gè)由商和余數(shù)組成的元組
In [160]: divmod(10,3)
Out[160]: (3, 1)
  • __eq__ # 判斷兩個(gè)數(shù)的值是否相等
In [161]: s = 19
In [162]: s.__eq__(20)
Out[162]: False
  • __float__ # 轉(zhuǎn)換成浮點(diǎn)型
  • __floordiv__ #只保留商的整數(shù)部分
In [170]: s
Out[170]: 19
In [171]: s.__floordiv__(3)
Out[171]: 6
In [172]: 19 / 3
Out[172]: 6.333333333333333
  • __or__ # 等同于a|b
  • __pow__ #冪運(yùn)算
  • __rdivmod__

字符串

定義:使用一對(duì)單引號(hào)或一對(duì)雙引號(hào)括起來的一串字符瓤球。當(dāng)字符含有單引號(hào)或雙引號(hào)時(shí)融欧,需使用 \ 來轉(zhuǎn)義。
多行字符串:使用一對(duì)"""'''來生成多行字符串卦羡。

轉(zhuǎn)換字符串:str()

聲明及使用:

聲明:

>>> my_str = 'hello world'
>>> print(my_str)
'hellow world'

字符串重復(fù):

>>> '123' * 2
'123123'
>>> ('abc' * 2) + '123'
'abcabc123'

字符串拼接:
使用 '+', 但是這種方式浪費(fèi)內(nèi)存蹬癌,效率也不高权她。推薦使用格式化字符串。

字符串格式化:
使用 %s

>>> print('Hello,%s.' %('wang'))
'hello,wang.'

遍歷字符串:
字符串是可迭代對(duì)象:

s = 'abcde'
for i in s:
    print(i)

使用索引打印:

>>> s = 'abcde'
>>> s[0]
'a'

字符串切片:

>>> s = 'abcde'
>>> s[:2]
'ab'
>>> s[-2:]
'de'

字符串替換:
使用 replace()

>>> s = 'hello world'
>>> s.replace('world','hello')

字符串查找:

  • S.index(sub[, start[, end]])
 >>> s = 'abca'
 >>> s.index('a')
 0
 >>> s.index('a',1)
 3
  • find()
    • 和 index() 用法一樣. 但是在找不到時(shí)返回 -1逝薪,而 index() 找不到會(huì)報(bào)錯(cuò)
  • rindex()
    • 反向查找
>>> s = 'abca'
>>> s.rindex('a')
3
  • rfind()
    • 反向查找

字符串分割:
可以用split,rsplit方法隅要,通過相應(yīng)的規(guī)則來切割成生成列表對(duì)象

>>> s = 'a b c d e'
>>> s.split() # 默認(rèn)使用空格,可以指定其他
['a', 'b', 'c', 'd', 'e']
>>> s.split('b')
['a ', ' c d e']
>>> s.

S.splitlines([keepends]) #把S按照行分割符分為一個(gè)list董济,keepends是一個(gè)bool值步清,如果為真每行后會(huì)保留行分割符。

>>> s = 'a\nb\nc\n'
>>> s.splitlines()
['a', 'b', 'c']
>>> s.splitlines(True)
['a\n', 'b\n', 'c\n']

字符串反轉(zhuǎn):

>>> s = 'abc'
>>> s[::-1]
'cba'

字符串的join方法:

>>> s = 'abc'
>>> ' '.join(s)
'a b c'
>>> s = ['a','b','c']
>>> ''.join(s)
'abc'
>>> '_123_'.join(s)
'a_123_b_123_c'

使用len()計(jì)算字符串長(zhǎng)度:
>>> len('abc') # 返回3

字符串大小寫
S.upper()#S中的字母大寫
S.lower() #S中的字母小寫
S.capitalize() #首字母大寫
S.istitle() #S是否是首字母大寫的
S.isupper() #S中的字母是否全是大寫
S.islower() #S中的字母是否全是小寫
S.swapcase() #大小寫互換
S.title()

>>> 'abc'.upper()
'ABC'
>>> 'ABC'.lower()
'abc'
>>> 'abc'.capitalize()
'Abc
>>> 'abc'.istitle()
False
>>> 'abc'.isupper()
False
>>> 'abc'.islower()
True
>>> 'aBc'.swapcase()
'AbC'
>>> 'who am i'.title()
'Who Am I'

字符串去空格:
strip(),lstrip(),rstrip()方法默認(rèn)去除字符串的空格虏肾,可以指定去除其他字符廓啊。
S.strip()去掉字符串的左右空格
S.lstrip()去掉字符串的左邊空格
S.rstrip()去掉字符串的右邊空格

>>> ' abc'.lstrip()
'abc'
>>> 'abc '.rstrip()
'abc'
>>> ' a b c '.strip() # 只去掉字符串兩頭的空格
'a b c'

字符串其他方法:
字符串還有很多玩法可以折騰,如:
S.center(width[, fillchar]) #字符串居中

>>> s = 'abc'
>>> s.center(20)
'        abc         '
>>> s.center(20,'*')
'********abc*********'

S.count(substr, [start, [end]]) #計(jì)算substr在S中出現(xiàn)的次數(shù)
>>> 'aabc'.count('a') # 返回2

S.encode() #編碼封豪,默認(rèn)utf-8

S.expandtabs(tabsize=8) #將tab轉(zhuǎn)換成空格

>>> s
'\tabc'
>>> ss = s.expandtabs()
>>> ss
'        abc'

S.endswith() #判斷尾字符
>>> 'abcd'.endswith('d') # 返回True

S.isalnum() #是否全是字母和數(shù)字谴轮,并至少有一個(gè)字符

>>> 'abc'.isalnum() # 返回True 
>>> '23ab'.isalnum() # 返回True
>>> '_23ab'.isalnum() # 返回False
>>> ''.isalnum() # 返回False

S.isalpha() #是否全是字母,并至少有一個(gè)字符

>>> 'abc'.isalpha()
True
>>> 'abc_'.isalpha()
False

S.isdigit() #是否全是數(shù)字吹埠,并至少有一個(gè)字符

>>> '123'.isdigit()
True
>>> '123_'.isdigit()
False

S.isspace() #是否全是空白字符第步,并至少有一個(gè)字符
>>> ' '.isspace() # 返回True

S.rpartition() #返回分隔符本身,和前后的子字符串

>>> s
'who am i'
>>> s.rpartition('am')
('who ', 'am', ' i')
>>> s.rpartition('is') # 如果分隔符沒有找到缘琅,則返回兩個(gè)空字符串和s
('', '', 'who am i')

S.startswith() # 判斷首字符
>>> 'abcd'.startswith('ab') # 返回True

查看詳細(xì)的字符串方法
>>> dir('str')

列表

列表存儲(chǔ)的是N個(gè)元素粘都,類型任意,通過下標(biāo)(索引)返回對(duì)應(yīng)值刷袍。
特點(diǎn):

  1. 有序
  2. 下標(biāo)從0開始

常用方法:

  • 列表通過索引(下標(biāo))獲取數(shù)據(jù)翩隧,索引從0開始。如 new_list[0] 為1
  • append(object) 往列表末尾添加元素
  • clear() 清空列表所有元素
  • copy() 淺拷貝

Note: 還有一種深拷貝呻纹。淺拷貝還有一定聯(lián)系堆生。而深拷貝可以理解成是一個(gè)完全獨(dú)立的復(fù)制體。

  • count(value) 統(tǒng)計(jì)指定元素出現(xiàn)幾次
  • index(value,[start,[stop]]) 查找指定元素第一次出現(xiàn)的下標(biāo)
  • insert(index,object) 將元素插入指定位置
  • pop([index]) 默認(rèn)刪除列表最后一個(gè)元素
  • remove(value) 刪除第一次出現(xiàn)的元素
  • sort() 對(duì)列表的元素進(jìn)行排序
  • extend(iterable) 將iterable中的元素添加到列表中

元組

元組是列表的一個(gè)子集雷酪。元組有的方法列表都有淑仆。
特點(diǎn):

  • 不可變

Note: 不可變性只適用于元組本身頂層而非內(nèi)容

創(chuàng)建元組:

t = (1,2,3,) 等價(jià)于 t = 1,2,3,
#要注意最后有一個(gè)逗號(hào),當(dāng)只有一個(gè)元素時(shí)太闺,一定要有逗號(hào)。
In [192]: type((1))
Out[192]: int

In [193]: type((1,))
Out[193]: tuple

方法:

  • count()
  • index()
  • 切片操作

列表元組轉(zhuǎn)換:

In [187]: tuple(l)
Out[187]: (1, 2, 3)

In [188]: t = (1,2,3,)

In [189]: list(t)
Out[189]: [1, 2, 3]

字符串轉(zhuǎn)元組:

In [190]: s = 'hello'

In [191]: tuple(s)
Out[191]: ('h', 'e', 'l', 'l', 'o')

字典

字典存儲(chǔ)的是N個(gè)鍵值對(duì)(k:v). 鍵的類型為字符串或數(shù)字嘁圈,值的類型任意省骂。
特點(diǎn):

  1. 無序
  2. 鍵唯一

創(chuàng)建字典:

第一種:  
d=dict{) #創(chuàng)建一個(gè)空字典
d={'tom':‘cat’,001:23}
d['tom']------取出30,一種映射關(guān)系
第二種:
>>> items=[('name','wzl')]
>>> dict(items)
{'name': 'wzl'}
>>> d=dict([('name','yuan'),('job','stu')])
第三種:
>>> d = {k:v for (k,v) in zip(['a','b','c'],[1,2,3])}
>>> d
{'a': 1, 'c': 3, 'b': 2}

字典基本操作:

d={'tom':‘cat’,001:23}

d['tom'] #取值

d['tom'] = 20 #如果key存在最住,更新‘tom'所對(duì)應(yīng)的值钞澳;如果key不存在,則為添加

遍歷字典:
可以遍歷keys()涨缚,values()轧粟,items()

dic = {'k1':'v1,'k2':'v2','k3':'v3'}

for k in dic.keys():    #打印所有的key
    print(k)

for v in dic.values():  #打印所有的value
    print(v)

for k,v in dic.items(): #打印所有的key:value
    print(k,v)

打印value,并自動(dòng)添加序號(hào),數(shù)字表示從1開始兰吟,默認(rèn)為0
for i,v in enumerate(dic.values(),1):
    print(i,v)

常用方法:

  • clear(),清空所有鍵值對(duì)
  • copy(),淺拷貝
  • fromkeys(),創(chuàng)建一個(gè)新字典:從一個(gè)可迭代對(duì)象獲取元素作為key通惫,并且value設(shè)為同一值
>>> d = {}
>>> d.fromkeys([1,2,3],'hello')
{1: 'hello', 2: 'hello', 3: 'hello'}
  • get(k[,d]),獲取k對(duì)應(yīng)值,如果k不存在混蔼,默認(rèn)返回None履腋。可通過d來指定返回值
>>> d = {1: 'hello', 2: 'hello', 3: 'hello'}
>>> d.get(1)
'hello'
>>> d.get(5) #d.keys()沒有5惭嚣,返回None
>>> d.get(5,100)
100

  • items()遵湖,a set-like object providing a view on D's items
  • keys(),a set-like object providing a view on D's keys
  • pop(k,d=None),刪除指定的k。如果k不存在晚吞,且d=None延旧,返回KeyError
d = {1: 'hello', 2: 'hello', 3: 'hello'}
d.pop(1)
d.pop(100) #KeyError
d.pop(100,'invalid') #返回’invalid'
  • popitem(),刪除任一鍵值對(duì),并以元組的形式返回槽地。如果字典為空迁沫,則抱KeyError
  • setdefault(k,d=None),同get(k,d=None)。只不過當(dāng)k不存在時(shí)闷盔,會(huì)執(zhí)行添加
In [110]: d
Out[110]: {1: 'default'}

In [111]: d.setdefault(2)

In [112]: d
Out[112]: {1: 'default', 2: None}

In [113]: d.setdefault(3,'v3')
Out[113]: 'v3'

In [114]: d
Out[114]: {1: 'default', 2: None, 3: 'v3'}
  • update(E=None,**F)
  • values(),a set-like object providing a view on D's values
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弯洗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逢勾,更是在濱河造成了極大的恐慌牡整,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溺拱,死亡現(xiàn)場(chǎng)離奇詭異逃贝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迫摔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門沐扳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人句占,你說我怎么就攤上這事沪摄。” “怎么了纱烘?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵杨拐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我擂啥,道長(zhǎng)哄陶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任哺壶,我火速辦了婚禮屋吨,結(jié)果婚禮上蜒谤,老公的妹妹穿的比我還像新娘。我一直安慰自己至扰,他們只是感情好鳍徽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渊胸,像睡著了一般旬盯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翎猛,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天胖翰,我揣著相機(jī)與錄音,去河邊找鬼切厘。 笑死萨咳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疫稿。 我是一名探鬼主播培他,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼遗座!你這毒婦竟也來了舀凛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤途蒋,失蹤者是張志新(化名)和其女友劉穎猛遍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體号坡,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懊烤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宽堆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腌紧。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖畜隶,靈堂內(nèi)的尸體忽然破棺而出壁肋,到底是詐尸還是另有隱情,我是刑警寧澤籽慢,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布浸遗,位于F島的核電站,受9級(jí)特大地震影響嗡综,放射性物質(zhì)發(fā)生泄漏乙帮。R本人自食惡果不足惜杜漠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一极景、第九天 我趴在偏房一處隱蔽的房頂上張望察净。 院中可真熱鬧,春花似錦盼樟、人聲如沸氢卡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)译秦。三九已至,卻和暖如春击碗,著一層夾襖步出監(jiān)牢的瞬間筑悴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工稍途, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阁吝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓械拍,卻偏偏與公主長(zhǎng)得像突勇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坷虑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,233評(píng)論 0 4
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,788評(píng)論 0 38
  • 前兩天迄损,突然有項(xiàng)不是我負(fù)責(zé)的工作交給我定躏,臨近上報(bào)日期,前期未做任何準(zhǔn)備海蔽,很多問題一頭霧水共屈,心中不免有抱怨。怎么辦党窜?...
    山河萬朵閱讀 269評(píng)論 1 2
  • 文/抒同 她只是想通過自己能力賣點(diǎn)木瓜拗引,賺點(diǎn)錢,她覺得這樣就能夠離自己愛的人近一些幌衣。 (一) 木木是我認(rèn)識(shí)的人里唯...
    抒同閱讀 1,709評(píng)論 15 9
  • 行程:喀什--和田 關(guān)鍵詞:再見喀什矾削、4000多公里的回程路 補(bǔ)作業(yè)啊補(bǔ)作業(yè)! 喀什豁护,輕輕的哼凯,我們來了;輕輕的楚里,我...
    蘇菲的流水賬閱讀 245評(píng)論 2 0