AGS Python開發(fā)-Python基礎(chǔ)入門


1.數(shù)據(jù)類型

整數(shù)(int):1,-100
浮點(diǎn)數(shù)(float):1.23
字符串(str):'abc'如捅,"xyz"
布爾值(bool):True镜遣、False
空值:None

2.變量和常量

變量定義格式:變量名=值悲关,示例:checked=True
常量定義格式:常量名=值寓辱,示例:PI=3.14

3.字符串與編碼

  1. 字符編碼
    ASCII:一個(gè)字節(jié)編碼
    Unicode:兩個(gè)字節(jié)編碼
    UTF-8:可變長(zhǎng)編碼

計(jì)算機(jī)內(nèi)存統(tǒng)一使用Unicode編碼讶舰,保存在磁盤一般使用UTF-8編碼。所以磁盤數(shù)據(jù)讀取到內(nèi)存般甲,內(nèi)存數(shù)據(jù)寫入到磁盤就涉及到unicode與UTF-8之間的轉(zhuǎn)換敷存。

  1. python中的字符串
    python中的字符串支持ASCII和Unicode編碼锚烦,unicode編碼的字符串使用u"字符串內(nèi)容"表示涮俄。
    unicode轉(zhuǎn)UTF-8:u"中文".encode("utf-8")
    UTF-8轉(zhuǎn)unicode:"\xe4\xb8\xad\xe6\x96\x87".decode("utf-8")
  2. 注意事項(xiàng)
    [1] 文件頭注明編碼:# -*- coding: utf-8 -*-
    [2] 源碼文件使用UTF-8 without BOM編碼保存
    [3] 中文字符串賦值時(shí)使用unicode編碼

4.復(fù)合數(shù)據(jù)類型

4.1.list和tuple

  1. 定義格式
    list列表:keywords = ["china","map","gis"]
    tuple元組:keywords = ("china","map","gis")
  2. list的基本操作
    訪問:keywords[0]
    增加:keywords.append("service")
    插入:keywords.insert(1,"extent")
    刪除:keywords.pop()keywords.pop(2)
    刪除:keywords.remove("china")
    批量刪除:del keywords[:2]
    取索引號(hào):keywords.index("gis")
    排序:keywords.sort()
    倒排序:keywords.reverse()
    是否存在指定元素:"gis" in keywords
  3. list和tuple的區(qū)別
    list中元素可變孕锄。
    tuple中元素不可變。
  4. 切片操作
    用來替代循環(huán)語(yǔ)句宦芦。
    keywords[起始索引號(hào):結(jié)束索引號(hào):步長(zhǎng)]

不含結(jié)束索引號(hào)的元素调卑。

4.2.dict

字典是鍵值對(duì)集合

  1. 定義
    attrs = {"id":1,"type":"point"}
  2. 基本操作
    訪問:atts["id"]或者atts.get("id")
    刪除:atts.pop("id")
    刪除:del atts["id"]
    所有key:atts.keys()

4.3.set

集合是一個(gè)無序不重復(fù)元素的集恬涧。

  1. 定義
    方式1:uValues = set("a","b","c")
    方式2:uValues ={"a", "b", "c"}
  2. 基本操作
    添加:uValues.add("d")
    刪除:uValues.remove("b")
    刪除重復(fù)元素:uValues = set([1,2,2,3,4])

5.數(shù)據(jù)類型轉(zhuǎn)換

轉(zhuǎn)整型:int(value)
轉(zhuǎn)浮點(diǎn)型:float(value)
轉(zhuǎn)字符串:str(value)
轉(zhuǎn)unicode:unicode(value)
轉(zhuǎn)bool:bool(value)

6.流程控制語(yǔ)句

  1. if語(yǔ)句
if <條件1>:
    print 1
elif <條件2>:
    print 2
else:
    print 3
  1. for語(yǔ)句
for x in 序列:
    print x
  1. while語(yǔ)句
while 條件:
    print 執(zhí)行
  1. break和continue語(yǔ)句
  2. pass語(yǔ)句
    占位符

7.高級(jí)特性

7.1.迭代

  1. list和tuple類型的迭代
    迭代value:for … in
    迭代索引和value:for i, value in enumerate(list)
  2. dict類型的迭代
    迭代key:for key in dict
    迭代value:for value in dict.itervalues()
    迭代key和value:for key ,value in dict.iteritems()
  3. 判斷對(duì)象是否可以迭代
from collections import Iterable
canIter = isinstance(obj, Iterable)

7.2.列表推導(dǎo)式

用于快速生成列表。

  1. 方式1:[x*x for x in range(0,20)]
  2. 方式2:[x*x for x in range(0,20) if x%2==0]

集合推導(dǎo)式:s = {x for x in "abracsdasd" if x not in "abc"}
字典推導(dǎo)式:d = {x: x**2 for x in (2,4,6)}

7.3.生成器

列表推導(dǎo)式生成的列表占用內(nèi)存现使,生成器生成的列表在調(diào)用next時(shí)生成碳锈。

  1. 方式1
    將列表推導(dǎo)式中的[]更改為()即可售碳。
a = (x*x for x in range(0,20))
a.next()
  1. yield關(guān)鍵字
    在需要返回函數(shù)的地方使用yield關(guān)鍵字绞呈。

8.函數(shù)

  1. 函數(shù)定義
def func_name(arg1):
    if arg1>10:
        return arg1:
    return 0
  1. 默認(rèn)參數(shù)
def power(x, n=2):
    s =1
    while n>0:
        n = n-1
        s = s *x
    return s

默認(rèn)參數(shù)需要使用不可變對(duì)象佃声,否則會(huì)出現(xiàn)邏輯錯(cuò)誤。

  1. 可變參數(shù)
def calc(*numbers):
    <函數(shù)體>

可變參數(shù)接收的是tuple類型十拣。

  1. 函數(shù)參數(shù)
    函數(shù)式編程:允許將函數(shù)作為參數(shù)夭问。
def add(x,y,f):
    return f(x)+f(y)

f是函數(shù)

  1. map()函數(shù)
    map()函數(shù)接收兩個(gè)參數(shù)缰趋,一個(gè)是函數(shù)埠胖,一個(gè)是序列直撤,map將傳入的函數(shù)依次作用到序列的每個(gè)元素谋竖,并把結(jié)果作為新的list返回。
    效果類似:map(f,[1,2,3]) = [f(1),f(2),f(3)]
  2. reduce()函數(shù)
    reduce把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3...]上锤悄,這個(gè)函數(shù)必須接收兩個(gè)參數(shù)零聚,reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算隶症。
    效果類似:reduce(f,[1,2,3]) = f(f(1,2),3)
  3. filter()函數(shù)
    filter()函數(shù)接收兩個(gè)參數(shù)蚂会,一個(gè)函數(shù)胁住,一個(gè)序列刊咳,filter將傳入的函數(shù)依次作用于序列的每個(gè)元素娱挨,并只保留結(jié)果中是True的让蕾。
  4. sorted()函數(shù)
    支持自定義的排序函數(shù)作為參數(shù)探孝。
  5. lambda表達(dá)式
    定義格式:lambda a,b: a+b
  6. 其他常用函數(shù)
    dir():顯示模塊定義
    len():返回長(zhǎng)度
    type():返回對(duì)象的類型
    isinstance():檢驗(yàn)對(duì)象類型
    range():生成數(shù)字序列
    help():查詢幫助

9.注釋

#:?jiǎn)涡凶⑨?br> '''…''':多行注釋
"""…""":doc注釋顿颅,在函數(shù)名之后的注釋粱腻。多行注釋時(shí),第二行應(yīng)該空出來捞慌。

def funcname():
    """函數(shù)簡(jiǎn)介
 
    函數(shù)詳情啸澡。
    """
    pass

10.模塊和包

  1. 模塊
    模塊是一個(gè)單獨(dú)的py文件氮帐,模塊名即為文件名。
# fibo.py
def fib(n):
    pass
  1. 模塊導(dǎo)入
    方式1:import語(yǔ)句
import fibo
#調(diào)用
fibo.fib(10)

方式2:from 模塊 import 模塊函數(shù)

from fibo import fib
#調(diào)用
fib(10)
  1. name
    模塊執(zhí)行:在模塊中增加name判斷皮服。
if __name__ == "__main__":
    #調(diào)用模塊定義的內(nèi)容 
  1. 作用域
    私有函數(shù)約定使用__開頭來命名函數(shù)龄广。
  2. 第三方模塊
    使用pip安裝蜀细。
  3. 模塊搜索路徑
    模塊搜索路徑定義在sys.path中奠衔」榻铮可動(dòng)態(tài)添加:sys.path.append("newpath")脏里,或者定義環(huán)境變量PYTHONPATH迫横。

  4. python使用文件夾定義包矾踱,文件夾中必須包含__init__.py呛讲,該文件內(nèi)容可為空贝搁,或者定義__all__變量雷逆。
    __all__定義了可以導(dǎo)入的模塊列表:
    __all__ = ["point","line"]

11.類

  1. 類定義與實(shí)例化
    類定義:
class Person(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
 
    def print_info(self):
        print "%s,%s" % (self.name,self.age)

類的實(shí)例化:lisa = Person("Lisa",25)

類中的方法第一個(gè)參數(shù)是self坦袍。

  1. 私有屬性定義
    約定私有屬性使用一個(gè)下劃線_開頭命名等太。
  2. @property定義屬性get和set方法
class Student(object):
    @property
    def name(self):
        return self.__birth
 
    @name.setter
    def name(self, value):
        self.__name = value
  1. 可變類型的屬性定義
class Mapping:
    def __init__(self,value):
        self.value = value
        self.items_list = []
  1. 多繼承
class subClass(parent1,parent2):
    pass

12.異常處理

  1. try語(yǔ)句
try:
    <執(zhí)行>
except ValueError as e:
    <異常處理>
finally:
    <執(zhí)行完的處理>
  1. 自定義異常類
    直接或間接繼承Exception類奠宜。
class MyError(Exception):
    #覆蓋父類
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)
  1. 錯(cuò)誤記錄與調(diào)試
    使用logging模塊压真,記錄日志信息滴肿。

13. 編碼原則

  1. 使用4個(gè)空格縮進(jìn)
  2. 使用文檔注釋
  3. 類名使用駝峰命名佃迄,函數(shù)和方法使用小寫和下劃線堆缘。類中的方法第一個(gè)參數(shù)使用self吼肥。

13.IO編程

13.1.文件操作

  1. 讀取文件
    基本流程:打開-->讀取-->關(guān)閉麻车。
try:
    f = open("c:\\text.txt","r")
    print f.read()
except IOError,e:
    print e
finally:
    if f:
        f.close()

簡(jiǎn)寫方式动猬,由python自動(dòng)調(diào)用close()方法:

with open("c:\\text.txt","r") as f:
    print f.read()
  1. 讀取模式
    r(只讀)、b(二進(jìn)制)、w(寫) 臂痕、a(追加)、r+(讀寫)
f = open("c:\img.jpg", "rb")
f.read()

windows平臺(tái)上讀取文本文件時(shí)澡绩,會(huì)在行尾自動(dòng)添加行結(jié)束符俺附,對(duì)JPEG之類文件的讀取會(huì)破壞結(jié)構(gòu)步鉴,建議一切以二進(jìn)制打開璃哟。

  1. 字符編碼
    讀取GBK編碼的文本文件:
f = open("c:\\gbktext.txt","rb")
u = f.read().decode("gbk")
print u

讀取utf-8編碼的文本文件:

f = open("c:\\uft8text.txt","rb")
u = f.read().decode("utf-8")
print u

寫入utf-8編碼的文本文件:

f = open("c:\\uft8text.txt","w")
f.write(u"新增加".encode("utf-8"))
f.close()

推薦方法阳似,調(diào)用codecs模塊:

import codecs
with codecs.open("c:\\gbktext.txt","r","gbk") as f:
    f.read()

一般原則:內(nèi)部使用unicode編碼,外部使用各自編碼铐伴。

  1. 常用方法
    read():一次性讀取到內(nèi)存
    read(size):讀取指定字節(jié)的內(nèi)容
    readline():讀取一行
    readlines():讀取所有行
    write():寫入

13.2.目錄操作

  1. os模塊
    讀取所有環(huán)境變量:os.environ
    讀取指定環(huán)境變量:os.getenv("PATH")
    讀取當(dāng)前目錄的絕對(duì)路徑:os.path.abspath(".")
    路徑拼接:os.path.join("c:\\demo","text.txt")
    創(chuàng)建目錄:os.mkdir("c:\\demo")
    刪除目錄:os.rmdir("c:\\demo")
    拆分路徑和文件:os.path.split("c:\\demo\\text.txt")
    拆分?jǐn)U展名:os.path.splitext("c:\\demo\\text.txt")
    文件重命名:os.rename("old.txt","new.txt")
    刪除文件:os.remove("new.txt")
    目錄判斷:os.path.isdir(path)
    文件判斷:os.path.isfile(path)

14.常用的Python標(biāo)準(zhǔn)庫(kù)

  1. 操作系統(tǒng)接口:os和shutil
  2. 命令行參數(shù):sys.argv
  3. 正則表達(dá)式:re
  4. 數(shù)學(xué):math和random
  5. 日期和時(shí)間:datetime撮奏、time
  6. 數(shù)據(jù)壓縮:zlib、gzip盛杰、bz2挽荡、zipfile、tarfile
  7. xml操作:xml.dom即供、xml.sax
  8. json操作:json
  9. 進(jìn)程與線程:multiprocessing定拟、Queue、Pipes逗嫡、Threading
  10. 日志:logging

參考資料

[1] Python2.7教程
[2] Python入門指南
[3] Python2.7字符編碼
[4] 官方文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末青自,一起剝皮案震驚了整個(gè)濱河市逆瑞,隨后出現(xiàn)的幾起案子哈肖,更是在濱河造成了極大的恐慌摊趾,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祟印,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門杰妓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來验靡,“玉大人矾屯,你說我怎么就攤上這事产禾」” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵还最,是天一觀的道長(zhǎng)扶叉。 經(jīng)常有香客問我泳叠,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任踢械,我火速辦了婚禮话瞧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己胶征,他們只是感情好钱雷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布钞支。 她就那樣靜靜地躺著柬采,像睡著了一般。 火紅的嫁衣襯著肌膚如雪垂谢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天并徘,我揣著相機(jī)與錄音付翁,去河邊找鬼初斑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛浙于,可吹牛的內(nèi)容都是我干的裤园。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼漱贱,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了淑翼?” 一聲冷哼從身側(cè)響起泞莉,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤堡僻,失蹤者是張志新(化名)和其女友劉穎钉疫,沒想到半個(gè)月后咨油,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體法瑟,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡起胰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了讲冠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓜客。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谱仪,到底是詐尸還是另有隱情玻熙,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布疯攒,位于F島的核電站嗦随,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏敬尺。R本人自食惡果不足惜枚尼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砂吞。 院中可真熱鬧署恍,春花似錦、人聲如沸蜻直。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)概而。三九已至呼巷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赎瑰,已是汗流浹背王悍。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留餐曼,地道東北人配名。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像晋辆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宇整,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • 基礎(chǔ)1.r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義2.'''...'''表示多行內(nèi)容3. 布爾值:True瓶佳、False(...
    neo已經(jīng)被使用閱讀 1,660評(píng)論 0 5
  • 兩本不錯(cuò)的書: 《Python參考手冊(cè)》:對(duì)Python各個(gè)標(biāo)準(zhǔn)模塊,特性介紹的比較詳細(xì)鳞青。 《Python核心編程...
    靜熙老師哈哈哈閱讀 3,357評(píng)論 0 80
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理霸饲,服務(wù)發(fā)現(xiàn),斷路器臂拓,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 現(xiàn)在的我是一個(gè)師范院校的“準(zhǔn)畢業(yè)生”胶惰,大四傻工。 我所學(xué)的專業(yè)是新聞學(xué),屬于非師范類專業(yè),未來的就業(yè)方向想來也跟老師...
    紅塵念念閱讀 382評(píng)論 2 4
  • 如果你想要嘗試在工程中安轉(zhuǎn)cocoapods中捆,那么網(wǎng)上的資料太多了鸯匹,但是如果你想要?jiǎng)h除掉cocoapods,那么怎...
    沒有黑眼圈de熊貓閱讀 1,646評(píng)論 1 6