摘要:依次寫出函數(shù)名括號參數(shù)語句結(jié)束符。使用和是的習(xí)慣寫法,當(dāng)然也可以用其他參數(shù)名,但最好使用習(xí)慣用法。命名的關(guān)鍵字參數(shù)作用為了限制調(diào)用者可以傳入的參數(shù)名,同時(shí)可以提供默認(rèn)值。
Run
源代碼
Python源代碼的文件以"py"為擴(kuò)展名,由Python程序解釋,不需要編譯
命令:python 文件
字節(jié)代碼
Python源文件經(jīng)過編譯后生成的擴(kuò)展名為"pyc"的文件
編譯方法:
import py_compile py_compile.compile("url") # url編譯的文件的路徑
編譯后的文件為:xxx.cpython-36.pyc
優(yōu)化代碼
經(jīng)過優(yōu)化的源文件,擴(kuò)展名為".pyo"
命令:pyhont -O -m py_comile 編譯的文件
編譯后的文件為:xxx.cpython-36.opt-1.pyc
Typeint, float, str, bool, NoneType tuple, list, dict, setLists
list = [] list[i:j] # 返回列表的子集 list[-1] # 訪問的最后一個(gè)元素 list[:-1] # 只返回最后一個(gè)元素 list[i] = val list[i:j] = otherlist # replace ith to jth element with otherlist del list[i:j] list.append(item) list.extend(list) list.insert(0, item) list.pop() list.remove(i) list1 + list2 # 結(jié)合兩個(gè)列表 set(list) # 從列表中刪除重復(fù)元素 list.reverse() list.count(item) sum(list) list.sort() zip(list1, list2) sorted(list) ",".join(list)Dict
dict.keys() dict.values() "key" in dict dict["key"] # throws KeyError dict.get("key") dict.setdefault("key", 1)Iteration
for item in ["a", "b", "c"]: for i in range(4): # 0 到 3 for i in range(4, 8): # 4 到 7 for key, val in dict.items():String
str[0:4] len(str) string.replace("-", " ") ",".join(list) "hi {0}".format("j") str.find(",") str.index(",") str.count(",") str.split(",") str.lower() str.upper() str.title() str.lstrip() str.rstrip() str.strip() str.islower() len() # 求序列長度 + # 連接2個(gè)序列 * # 重復(fù)序列元素 in # 判斷元素是否在序列中 max() # 返回最大值 min() # 返回最小值Set
集合Set于列表,元組類似,可以存儲多個(gè)數(shù)據(jù),但是,這些數(shù)據(jù)是不重復(fù)的。
集合對象支持union(聯(lián)合), intersection(交集), difference(差集)和sysmmetric_difference(對稱差集)等數(shù)學(xué)運(yùn)算
>>> x = set("abcd") >>> x {"c", "a", "b", "d"} >>> type(x)Casting>>> y = set(["h","e","l","l","o"]) >>> y {"h", "e", "o", "l"} >>> z = set("spam") >>> z {"s", "a", "m", "p"} >>> y&z # 交集 set() >>> x&z # 交集 {"a"} >>> x|y # 并集 {"a", "e", "d", "l", "c", "h", "o", "b"} >>> x-y # 差集 {"c", "a", "b", "d"} >>> x^z # 對稱差集(在x或z中,但不會同時(shí)出現(xiàn)在二者中) {"m", "d", "s", "c", "b", "p"}
int(str) float(str) str(int) str(float) bool(1)Comprehensions
[fn(i) for i in list] # .map map(fn, list) # .map, 返回的迭代 filter(fn, list) # .filter, 返回的迭代 [fn(i) for i in list if i > 0] # .filter.mapRegex
import re re.match(r"^[aeiou]", str) re.sub(r"^[aeiou]", "?", str) re.sub(r"(xyz)", r"1", str) expr = re.compile(r"^...$") expr.match(...) expr.sub(...)Function
定義函數(shù)
使用關(guān)鍵字:def。 依次寫出函數(shù)名, 括號, 參數(shù), 語句結(jié)束符 :。然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回
def my_abs (x): if x >= 0: return x else: return -x
空函數(shù)
定義一個(gè)什么也不做的空函數(shù),使用pass語句
def nop () pass
空函數(shù)的作用:提供占位符
參數(shù)
默認(rèn)參數(shù)一定要用不可變對象(基本變量類型和tuple), 如果是可變對象,程序運(yùn)行時(shí)會有邏輯錯(cuò)誤。
定義可變參數(shù)和關(guān)鍵字參數(shù)的使用:
*args是可變參數(shù),args接收的是一個(gè)tuple
**kw是關(guān)鍵字參數(shù),kw接收的是一個(gè)dict
調(diào)用函數(shù)時(shí)如何傳入可變參數(shù)和關(guān)鍵字參數(shù):
可變參數(shù)既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過*args傳入:func(*(1, 2, 3));
關(guān)鍵字參數(shù)既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過**kw傳入:func(**{"a": 1, "b": 2})。
使用*args和**kw是Python的習(xí)慣寫法,當(dāng)然也可以用其他參數(shù)名,但最好使用習(xí)慣用法。
命名的關(guān)鍵字參數(shù)作用:為了限制調(diào)用者可以傳入的參數(shù)名,同時(shí)可以提供默認(rèn)值。
定義命名的關(guān)鍵字參數(shù)在沒有可變參數(shù)的情況下不要忘了寫分隔符*,否則定義的將是位置參數(shù)
返回值
函數(shù)執(zhí)行完畢也沒有return語句時(shí),自動return None
函數(shù)可以同時(shí)返回多個(gè)值,但其實(shí)就是一個(gè)tuple
匿名函數(shù)
lamdba 參數(shù):函數(shù)體
匿名函數(shù)自動具有返回值
Characteristic區(qū)分大小寫
語句結(jié)尾使用:
Tab符
if的各種假
Flase: "", None, 0, -0.0, 0.0 [], {}, (), Flase
==與is
is是比較兩個(gè)引用是否指向了同一個(gè)對象(引用比較)
==是比較兩個(gè)對象是否相等
a = 2 b = 2 a is b # True, 為True的原因是[-5, 256] c = 500 d = 500 c is d # False
python解釋器為了優(yōu)化速度,會把[-5, 256]之間的數(shù)據(jù)提前存放到小整數(shù)對象池中,程序中要使用到[-5, 256]之間范圍的數(shù)據(jù),就不會重新創(chuàng)建一份,都是指向?qū)ο蟪刂械耐环輸?shù)據(jù),除了這個(gè)區(qū)間之外的數(shù)據(jù),每次使用時(shí)解釋器都會重新申請一塊內(nèi)存,用來存儲數(shù)據(jù)。
深拷貝和淺拷貝
淺拷貝:對于一個(gè)對象的頂層拷貝(拷貝了引用,并沒有拷貝內(nèi)容)
深拷貝:重新申請內(nèi)存存儲復(fù)制的數(shù)據(jù).
import copy a = [1, 2, 3] b = a # 淺拷貝 c = copy.deepcopy(a) # 深拷貝
區(qū)別copy和deepcopy:
deepcopy:所有的內(nèi)容都重新申請內(nèi)存,依次拷貝
copy: 外層重新申請內(nèi)存
拷貝元組的特點(diǎn):
都是相同引用地址(元組是不可變類型,拷貝之后還是相同地址)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41346.html
摘要:以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...
摘要:在種,使用關(guān)鍵字定義的迭代器也被稱為生成器迭代器迭代器是訪問集合內(nèi)元素的一種方式。調(diào)用任何定義包含關(guān)鍵字的函數(shù)都不會執(zhí)行該函數(shù),而是會獲得一個(gè)隊(duì)?wèi)?yīng)于該函數(shù)的迭代器。 上一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第一節(jié):同步與異步I/O下一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第三節(jié):協(xié)程 協(xié)程是Tornado中進(jìn)行異步I/O代碼開發(fā)的方法...
摘要:本文的分享主要圍繞以下幾個(gè)方面能做什么常見應(yīng)用場景介紹如何學(xué)習(xí)語法基礎(chǔ)實(shí)戰(zhàn)面向?qū)ο缶幊虒?shí)戰(zhàn)練熟基礎(chǔ)小游戲項(xiàng)目的實(shí)現(xiàn)與實(shí)戰(zhàn)一能做什么一種編程語言往往可以應(yīng)用于多方面,有些方面比較常用,有些方面極為常用。比如表示是一個(gè)空列表。 摘要:Python語言的教程雖然隨處可見,但是忙于日常業(yè)務(wù)/學(xué)習(xí)的你或許:一直想要找個(gè)時(shí)間學(xué)一點(diǎn),但是又不知道該從何下手?本文將從Python能做什么,如何學(xué)習(xí)Py...
摘要:標(biāo)準(zhǔn)模塊附帶了一個(gè)標(biāo)準(zhǔn)模塊庫。它返回一個(gè)如果調(diào)用不傳遞參數(shù),則列出當(dāng)前已經(jīng)定義的所有名字用可以查看所有的內(nèi)置類型變量函數(shù)等,方法是借助標(biāo)準(zhǔn)模塊模塊高級技巧總結(jié)的搜索路徑,順序一定要搞得清編譯后的文件內(nèi)置函數(shù)查看模塊定義的名字。 上一節(jié),我們講解了Python模塊的基礎(chǔ)知識,這一節(jié)我們繼續(xù)深入了解模塊的更多知識,從而讓大家全面了解、掌握和運(yùn)用模塊到我們實(shí)際的編程中。 在上一節(jié)中有一句話接...
摘要:一運(yùn)算符重載基礎(chǔ)運(yùn)算符重載對已有的運(yùn)算符進(jìn)行重新定義,賦予其另一種功能,以適應(yīng)不同的數(shù)據(jù)類型。重載一元運(yùn)算符重載一元運(yùn)算符只需實(shí)現(xiàn)相應(yīng)的特殊方法,這些特殊方法只有一個(gè)參數(shù)。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之面向?qū)ο笃闹攸c(diǎn)知識及個(gè)人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、掌握運(yùn)算符重載的定義和作用,以及Python對其的內(nèi)部限制;2、掌握...
閱讀 3074·2021-09-03 10:33
閱讀 1297·2019-08-30 15:53
閱讀 2650·2019-08-30 15:45
閱讀 3409·2019-08-30 14:11
閱讀 563·2019-08-30 13:55
閱讀 2608·2019-08-29 15:24
閱讀 1946·2019-08-26 18:26
閱讀 3596·2019-08-26 13:41