1 python中的數(shù)據(jù)類型:數(shù)字(整數(shù)型 int , 浮點(diǎn)數(shù)型 float, 布爾型 bool , 復(fù)數(shù) complex ),字符串,元組(只讀列表,只能查詢,不可更改),集合,列表,字典
可變數(shù)據(jù)類型:列表list[ ]、字典dict{ } 數(shù)據(jù)發(fā)生改變,但內(nèi)存地址不變
不可變數(shù)據(jù)類型:整型int、字符串str’ '、元組tuple() 當(dāng)該數(shù)據(jù)類型的對(duì)應(yīng)變量的值發(fā)生了改變,那么它對(duì)應(yīng)的內(nèi)存地址也會(huì)改變
2 有一段python的編碼程序如下:urllib.quote(line.decode(“gbk”).encode(“utf-16”)),請(qǐng)問經(jīng)過該編碼的字符串的解碼順序是
url解碼 utf16 gbk
3 一種統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù)的方法
import math
def sieve(size):
# 初始化一個(gè)待判斷統(tǒng)計(jì)列表,用于表示該位置的索引是否為素?cái)?shù)
sieve = [True] * size
# 眾所周知,0和1都不是素?cái)?shù),所以為False
sieve[0] = False
sieve[1] = False
# 循環(huán)找到所有的非素?cái)?shù),賦值False
for i in range(2, int(math.sqrt(size)) + 1):
k = i * 2
while k < size:
sieve[k] = False
k += i
# 統(tǒng)計(jì)所有為True的元素個(gè)數(shù),也就是素?cái)?shù)的個(gè)數(shù)
return sum(1 for x in sieve if x)
# 一千億之內(nèi)的素?cái)?shù)個(gè)數(shù)
# 4118054813
print(sieve(100000000000))
4 python中主要存在四種命名方式:
1、object #公用方法
2、_object #半保護(hù)
#被看作是“protect”,意思是只有類對(duì)象和子類對(duì)象自己能訪問到這些變量, 在模塊或類外不可以使用,不能用’from module import *’導(dǎo)入。
#
object 是為了避免與子類的方法名稱沖突, 對(duì)于該標(biāo)識(shí)符描述的方法,父類的方法不能輕易地被子類的方法覆蓋,他們的名字實(shí)際上是
classname__methodname。
3、
_ object #全私有,全保護(hù)
#私有成員“private”,意思是只有類對(duì)象自己能訪問,連子類對(duì)象也不能訪問到這個(gè)數(shù)據(jù),不能用’from module import *’導(dǎo)入。
4、
_ object
_ #內(nèi)建方法,用戶不要這樣定義 前后雙下劃線的命名方式用于python里的特殊方法。
5 a = ‘123’
b = ‘123’
a is b a,b為字符串不可變類型,所以指向相同地址,所以 a is b is指地址相同
內(nèi)容相同
123是int類型,而a的值為字符a+b=‘123123’ a
"123"
6 Python定義參數(shù)
python函數(shù)的幾種參數(shù)可以任意組合,但必須按順序?qū)懀駝t會(huì)報(bào)錯(cuò),順序?yàn)椋ㄎ恢脜?shù),默認(rèn)參數(shù),可變參數(shù),命名關(guān)鍵字參數(shù),關(guān)鍵字參數(shù))
位置參數(shù) def fn1(a): def fn2(a,b):
默認(rèn)參數(shù) def enroll(name, gender,
age=6, city=‘Beijing’
): 默認(rèn)參數(shù)必須指向不變對(duì)象!
可變參數(shù) 傳入?yún)?shù)的個(gè)數(shù)是可變的 *args是可變參數(shù),args接收的是一個(gè)tuple;
關(guān)鍵字參數(shù) 可變參數(shù)允許你傳入0個(gè)或任意個(gè)參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時(shí)自動(dòng)組裝為一個(gè)tuple。而關(guān)鍵字參數(shù)允許你傳入0個(gè)或任意個(gè)含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict。 **kw是關(guān)鍵字參數(shù),kw接收的是一個(gè)dict。
命名關(guān)鍵字參數(shù) 如果要限制關(guān)鍵字參數(shù)的名字,就可以用命名關(guān)鍵字參數(shù),例如,只接收city和job作為關(guān)鍵字參數(shù)。
def f1(a, b, c=0, *args, **kw):
7
x = 1
def change(a):
x += 1
print x
change(x) 報(bào)錯(cuò) change(a) 函數(shù)內(nèi)的局部變量 x 在使用前未定義。
8 Python中的閉包
在一個(gè)外函數(shù)中定義了一個(gè)內(nèi)函數(shù),內(nèi)函數(shù)里運(yùn)用了外函數(shù)的臨時(shí)變量,并且外函數(shù)的返回值是內(nèi)函數(shù)的引用。這樣就構(gòu)成了一個(gè)閉包。
一般情況下,如果一個(gè)函數(shù)結(jié)束,函數(shù)的內(nèi)部所有東西都會(huì)釋放掉,還給內(nèi)存,局部變量都會(huì)消失。但是閉包是一種特殊情況,如果外函數(shù)在結(jié)束的時(shí)候發(fā)現(xiàn)有自己的臨時(shí)變量將來會(huì)在內(nèi)部函數(shù)中用到,就把這個(gè)臨時(shí)變量綁定給了內(nèi)部函數(shù),然后自己再結(jié)束。
#閉包函數(shù)的實(shí)例
# outer是外部函數(shù) a和b都是外函數(shù)的臨時(shí)變量
def outer( a ):
b = 10
# inner是內(nèi)函數(shù)
def inner():
#在內(nèi)函數(shù)中 用到了外函數(shù)的臨時(shí)變量
print(a+b)
# 外函數(shù)的返回值是內(nèi)函數(shù)的引用
return inner
if __name__ == '__main__':
# 在這里我們調(diào)用外函數(shù)傳入?yún)?shù)5
#此時(shí)外函數(shù)兩個(gè)臨時(shí)變量 a是5 b是10 ,并創(chuàng)建了內(nèi)函數(shù),然后把內(nèi)函數(shù)的引用返回存給了demo
# 外函數(shù)結(jié)束的時(shí)候發(fā)現(xiàn)內(nèi)部函數(shù)將會(huì)用到自己的臨時(shí)變量,這兩個(gè)臨時(shí)變量就不會(huì)釋放,會(huì)綁定給這個(gè)內(nèi)部函數(shù)
demo = outer(5)
# 我們調(diào)用內(nèi)部函數(shù),看一看內(nèi)部函數(shù)是不是能使用外部函數(shù)的臨時(shí)變量
# demo存了外函數(shù)的返回值,也就是inner函數(shù)的引用,這里相當(dāng)于執(zhí)行inner函數(shù)
demo() # 15
demo2 = outer(7)
demo2()#17
在基本的python語法當(dāng)中,一個(gè)函數(shù)可以隨意讀取全局?jǐn)?shù)據(jù),但是要修改全局?jǐn)?shù)據(jù)的時(shí)候有兩種方法:1 global 聲明全局變量 2 全局變量是可變類型數(shù)據(jù)的時(shí)候可以修改。在閉包內(nèi)函數(shù)也是類似的情況。在內(nèi)函數(shù)中想修改閉包變量(外函數(shù)綁定給內(nèi)函數(shù)的局部變量)的時(shí)候:
在python3中,可以用nonlocal 關(guān)鍵字聲明 一個(gè)變量, 表示這個(gè)變量不是局部變量空間的變量,需要向上一層變量空間找這個(gè)變量。
#修改閉包變量的實(shí)例
# outer是外部函數(shù) a和b都是外函數(shù)的臨時(shí)變量
def outer( a ):
b = 10 # a和b都是閉包變量
# inner是內(nèi)函數(shù)
def inner():
#內(nèi)函數(shù)中想修改閉包變量
#nonlocal關(guān)鍵字聲明
nonlocal b
b+=1
# 外函數(shù)的返回值是內(nèi)函數(shù)的引用
return inner
if __name__ == '__main__':
demo = outer(5)
demo() # 6 11
8 正則表達(dá)式
正則表達(dá)式也叫做匹配模式(Pattern),它由一組具有特定含義的字符串組成,通常用于匹配和替換文本。
re模塊 廖雪峰
9 python my.py v1 v2 命令運(yùn)行腳本,通過 from sys import argv如何獲得v2的參數(shù)值?
argv[2] sys.argv是命令參數(shù)表,包括文件名 argv[0]為該腳本自身路徑,其余為命令行參數(shù)
10
1)解釋性語言:
運(yùn)行一句代碼,就翻譯一句,因此效率比較低。常見的解釋性語言:javascript、matlab、python 非獨(dú)立 效率低
2)編譯性語言:
先一次性的將代碼翻譯成機(jī)器語言,形成一個(gè)執(zhí)行文件。運(yùn)行時(shí)就直接調(diào)用執(zhí)行文件,因此效率比較高。常見的編譯性語言:c,Object-C,c++,c#,java
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
