Python 特性語法總結(jié)

Python 特性語法總結(jié)

成員運(yùn)算符

運(yùn)算符 描述
in 在指定的序列中找到值,返回True;否則返回False
not in 相反
a = 10
list = [1,2,3,4,5]
if (a in list):
  print(a)
if (a not in list):
  print(0)

身份運(yùn)算符

運(yùn)算符 描述
is x is y, 類似 id(x) == id(y) , 如果引用的是同一個(gè)對(duì)象則返回 True顾翼,否則返回 False
is not 相反

is 與 == 區(qū)別:
is用于判斷兩個(gè)變量引用對(duì)象是否為同一個(gè), == 用于判斷引用變量的值是否相等。

字符串格式化

print ("我叫 %s 今年 %d 歲!" % ('小明', 10))

//我叫 小明 今年 10 歲!

主要使用format()格式化函數(shù)

print("name:{a},addr呻疹".format(a='haha',b='home')

format()用法詳解

數(shù)據(jù)結(jié)構(gòu)

1.列表

  • del關(guān)鍵字
    del list[0]
    del list

  • 函數(shù)

操作 含義
max(list) / min(list) 返回最值
list(seq) 將元組轉(zhuǎn)換為列表
cmp(list1,list2) 比較兩個(gè)列表的元素
len(list) 長(zhǎng)度
  • 腳本操作符
操作 含義
+ 組合
* 重復(fù)
in 元素是否存在于列表中
  • 方法
操作 含義
list.append(obj) 末尾添加
list.count(obj) 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)
list.extend(seq) 用新列表擴(kuò)展原來的列表
list.index(obj) 第一個(gè)匹配項(xiàng)的索引位置
list.insert(index, obj) 將對(duì)象插入列表
list.pop([index = -1]) 默認(rèn)移除最后一個(gè)元素并返回元素值
list.remove(obj) 移除第一個(gè)匹配項(xiàng)
list.reverse() 元素反向
list.sort(cmp=None, key=None, reverse=False) 根據(jù)規(guī)則排序

2. 元組

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
 
# 以下修改元組元素操作是非法的。
# tup1[0] = 100
 
# 創(chuàng)建一個(gè)新的元組
tup3 = tup1 + tup2
print tup3

#輸出(12, 34.56, 'abc', 'xyz')

del不允許刪除元組中的元素筹陵,但是可以刪除整個(gè)元組

內(nèi)置函數(shù)

  • cmp(tuple1,tuple2)
  • len(tuple)
  • max(tuple) / min(tuple)
  • tuple(seq) 將列表轉(zhuǎn)換為元組

3. 字典

字典是另一種可變?nèi)萜髂P突逵睿铱纱鎯?chǔ)任意類型對(duì)象。

  • 鍵唯一惶翻,值不需要唯一
  • 若同一個(gè)鍵出現(xiàn)兩次姑蓝,則后一個(gè)值被記住
  • 鍵不可變,因此不可以用列表作為鍵
操作dict 含義
del dict['a'] 刪除鍵是'a'的條目
dict.clear() 清空字典條目
del dict 刪除字典
cmp(dict1,dict2) 比較
len(dict) 計(jì)算字典元素個(gè)數(shù)吕粗,鍵數(shù)
str(dict) 返回字典的字符串表示纺荧,方便打印
dict.has_key(key) 如果鍵在字典dict里返回true,否則返回false
dict.items() 以列表返回可遍歷的(鍵颅筋,值)元組數(shù)組
dict.keys() 以列表返回所有鍵
dict.values() 以列表返回字典中所有值
dict.update(dict1) 把另一個(gè)字典dict1的鍵值對(duì)更新到dict里
dict.pop(key[,default]) 刪除鍵值對(duì)宙暇,并彈出key對(duì)應(yīng)的值,不給key則返回default值
dict.popitem() 返回并刪除字典中最后一對(duì)鍵值(元組)

遍歷技巧

  • 字典遍歷同時(shí)解讀鍵和值:items()
dic = {'keya':'valuea', 'keyb':'valueb'}
for k,v in dic.items():
  print(k,v)

"""
輸出
keya valuea
keyb valueb
"""
  • 列表遍歷同時(shí)得到索引位置和對(duì)應(yīng)值:enumerate()
for i, v in enumerate(['a', 'b', 'c']):
  print(i,v)
"""
輸出
0 a
1 b
2 c
"""
  • 同時(shí)遍歷兩個(gè)及以上列表:zip()
list1 = ['a1', 'b1', 'c1']
list2 = ['a2', 'b2', 'c2']
for x, y in zip(list1, list2):
  print('list1 {0} and list2 {1}'.format(list1,list2)

"""
輸出
list1 a1 and list2 a2
list1 b1 and list2 b2
list1 c1 and list2 c2
"""
  • 反序遍歷:reversed()
for i in reversed(range(1,10,2)):
  print(i)
"""
輸出
9
7
5
3
1
"""

函數(shù)傳參

可變對(duì)象與不可變對(duì)象

python中一切都是對(duì)象议泵,嚴(yán)格意義我們不能說值傳遞還是引用傳遞占贫,我們應(yīng)該說傳不可變對(duì)象和傳可變對(duì)象。

不定長(zhǎng)參數(shù)

一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)先口。這些參數(shù)叫做不定長(zhǎng)參數(shù)型奥。

  • 加了*號(hào)的參數(shù)會(huì)以元組(tuple)的形式導(dǎo)入(可以不傳遞未命名的變量導(dǎo)入空元組),存放所有未命名的變量參數(shù)碉京。
    注意:定義函數(shù)時(shí)參數(shù)前加*厢汹,若是在調(diào)用函數(shù)時(shí)參數(shù)前加*有解包裹的效果
    https://www.cnblogs.com/bingabcd/p/6671368.html
  • 帶兩個(gè)星號(hào)**的參數(shù)會(huì)以字典的形式導(dǎo)入。
  • 注意區(qū)別參數(shù)表中單獨(dú)出現(xiàn)的*谐宙,作用是其后的參數(shù)必須用關(guān)鍵字傳入烫葬。

匿名函數(shù)lambda

lambda只是一個(gè)表達(dá)式,函數(shù)體比def簡(jiǎn)單很多。
語法:
lambda [arg1 [,arg2,……,argn]]:expression
demo

sum = lambda arg1, arg2: arg1 + arg2
#調(diào)用
print(sum(1,2))
#輸出
#3

迭代器與生成器

迭代是python訪問集合元素的一種方式搭综。

  • 迭代器是一個(gè)可以記住遍歷的位置的對(duì)象垢箕。
  • 迭代器只能往前不會(huì)后退。
  • 兩個(gè)基本方法 iter()next()
  • 字符串兑巾、列表舰讹、元組對(duì)象都可用于創(chuàng)建迭代器

迭代器

  • 由列表創(chuàng)建迭代器對(duì)象(導(dǎo)入sys模塊)
#!/usr/bin/python3
 
import sys         # 引入 sys 模塊
 
list=[1,2,3,4]
it = iter(list)    # 創(chuàng)建迭代器對(duì)象
 
while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

#輸出結(jié)果
#1
#2
#3
#4
  • 把類作為迭代器使用
    需要在類中實(shí)現(xiàn)兩個(gè)方法
    1.__iter__()
    返回一個(gè)迭代器對(duì)象,這個(gè)對(duì)象實(shí)現(xiàn)了__next()__方法并通過StopIteration異常標(biāo)識(shí)迭代的完成闪朱。
    2.__next__()
    返回下一個(gè)迭代器對(duì)象

實(shí)例:創(chuàng)建一個(gè)返回?cái)?shù)字的迭代器月匣,初始值為1,逐步增1

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)
 
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

#輸出結(jié)果
#1
#2
#3
#4
#5

StopIteration

在20次迭代后停止執(zhí)行

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
 
myclass = MyNumbers()
myiter = iter(myclass)
 
for x in myiter:
  print(x)

#輸出1到20

生成器 yield

使用了yield的函數(shù)被稱為生成器(generator)奋姿。

  • 此類函數(shù)返回的是迭代器锄开,只能用于迭代操作。
  • 每次遇到y(tǒng)ield時(shí)函數(shù)會(huì)暫停并保存當(dāng)前所有的運(yùn)行信息称诗,返回yield的值萍悴,并在下次執(zhí)行next()方法時(shí)從當(dāng)前位置繼續(xù)運(yùn)行。
    實(shí)例:使用yield實(shí)現(xiàn)斐波那契數(shù)列
#!/usr/bin/python3
 
import sys
 
def fibonacci(n): # 生成器函數(shù) - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一個(gè)迭代器寓免,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

#輸出結(jié)果
#0 1 1 2 3 5 8 13 21 34 55

模塊

命令行中參數(shù)的使用

使用模塊: sys

import sys
for i in sys.argv:
  print(i)
  • sys.argv 是一個(gè)包含命令行參數(shù)的列表
  • sys.path 包含了一個(gè)Python解釋器自動(dòng)查找所需模塊的路徑的列表癣诱。

__name__屬性

一個(gè)模塊被另一個(gè)程序第一次引入時(shí),其主程序?qū)⑦\(yùn)行袜香。如果我們想在模塊被以引入時(shí)撕予,模塊中的某一程序塊不執(zhí)行,可以使用__name__屬性蜈首。

__name__屬性使該程序塊僅在該模塊自身運(yùn)行時(shí)執(zhí)行实抡。

#!/usr/bin/python3
# Filename: using_name.py

if __name__ == '__main__':
   print('程序自身在運(yùn)行')
else:
   print('我來自另一模塊')

輸出
$ python using_name.py
程序自身在運(yùn)行

$ python
>>> import using_name
我來自另一模塊
>>>

輸入和輸出

repr()

產(chǎn)生一個(gè)解釋器易讀的表達(dá)式

#  repr() 函數(shù)可以轉(zhuǎn)義字符串中的特殊字符
hello = 'hello, runoob\n'
hellos = repr(hello)
print(hellos)

輸出
'hello, runoob\n'

# repr() 的參數(shù)可以是 Python 的任何對(duì)象
repr((x, y, ('Google', 'Runoob')))

返回
"(32.5, 40000, ('Google', 'Runoob'))"

關(guān)于字符串對(duì)象的格式化方法

  • string.rjust(num) 字符串靠右,左邊填充num個(gè)空格
for x in range(1,11):
  print(repr(x).rjust(2), repr(x*x).rjust(3))


for x in range(1, 11):
  print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))

輸出
1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
  • string.ljust()/center()
  • string.zfill(num)在數(shù)字的左邊填充num個(gè)0

讀和寫文件

  • open()
    基本語法open(filename, mode)
    mode:決定了文件的打開模式欢策,非強(qiáng)制吆寨,默認(rèn)為只讀(r)。


    f = open("1.txt")

  • f.read(size)
    size:讀取數(shù)目踩寇,可選參數(shù)啄清,空則讀取并返回所有內(nèi)容。

  • f.readline()
    從文件中讀取單獨(dú)的一行俺孙。換行符為'\n'辣卒。若返回一個(gè)空字符串則說明已讀取到最后一行。

  • f.readlines()
    返回文件中包含的所有行鼠冕。
    如果設(shè)置可選參數(shù)sizehint, 則讀取指定長(zhǎng)度的字節(jié), 并且將這些字節(jié)按行分割添寺。

  • f.write()
    f.write(string) 將 string(字符串類型) 寫入到文件中, 然后返回寫入的字符數(shù)胯盯。

  • f.tell()
    返回文件對(duì)象當(dāng)前所處的位置懈费,它是從文件開頭開始算起的字節(jié)數(shù)。

  • f.seek()
    改變文件當(dāng)前的位置
    seek(x,0) : 從起始位置即文件首行首字符開始移動(dòng) x 個(gè)字符
    seek(x,1) : 表示從當(dāng)前位置往后移動(dòng)x個(gè)字符
    seek(-x,2):表示從文件的結(jié)尾往前移動(dòng)x個(gè)字符

  • f.close()
    關(guān)閉文件并釋放系統(tǒng)的資源博脑。

當(dāng)處理一個(gè)文件對(duì)象時(shí), 使用 with 關(guān)鍵字是非常好的方式憎乙。在結(jié)束后, 它會(huì)幫你正確的關(guān)閉文件票罐。 而且寫起來也比 try - finally 語句塊要簡(jiǎn)短:

with open('/tmp/foo.txt', 'r') as f:
     read_data = f.read()
f.closed
True
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市泞边,隨后出現(xiàn)的幾起案子该押,更是在濱河造成了極大的恐慌,老刑警劉巖阵谚,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚕礼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡梢什,警方通過查閱死者的電腦和手機(jī)奠蹬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗡午,“玉大人囤躁,你說我怎么就攤上這事±蠖茫” “怎么了狸演?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)僻他。 經(jīng)常有香客問我宵距,道長(zhǎng),這世上最難降的妖魔是什么吨拗? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任消玄,我火速辦了婚禮,結(jié)果婚禮上丢胚,老公的妹妹穿的比我還像新娘翩瓜。我一直安慰自己,他們只是感情好携龟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布兔跌。 她就那樣靜靜地躺著,像睡著了一般峡蟋。 火紅的嫁衣襯著肌膚如雪坟桅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天蕊蝗,我揣著相機(jī)與錄音仅乓,去河邊找鬼。 笑死蓬戚,一個(gè)胖子當(dāng)著我的面吹牛夸楣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼豫喧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼石洗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起紧显,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤讲衫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后孵班,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涉兽,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年篙程,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了花椭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡房午,死狀恐怖矿辽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情郭厌,我是刑警寧澤袋倔,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站折柠,受9級(jí)特大地震影響宾娜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扇售,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一前塔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧承冰,春花似錦华弓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至娜搂,卻和暖如春迁霎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背百宇。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工考廉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人携御。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓昌粤,卻偏偏與公主長(zhǎng)得像既绕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子婚苹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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

  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,743評(píng)論 0 8
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,558評(píng)論 1 118
  • 1.基本使用 1.1 數(shù)據(jù)類型 常用數(shù)據(jù)類型 Common Data Types 其他類型 Others 1.2 ...
    suwi閱讀 1,339評(píng)論 0 3
  • 看過超級(jí)演說家的人都羨慕臺(tái)上的選手膊升,他們或才思敏捷、或伶牙俐齒谭企、或口若懸河廓译、瀟灑自如,希望自己也能和他們一樣债查。相必...
    聰明達(dá)講故事閱讀 742評(píng)論 0 0
  • 現(xiàn)如今都社會(huì)沒有錢什么人都等于零非区。不管是誰,在你需要的時(shí)候你去請(qǐng)求他都沒有答應(yīng)你的盹廷,那么以后你也不要理《她他》征绸。 ...
    c4a76c6c9638閱讀 187評(píng)論 1 1