1. 程式人生 > >python基礎學習筆記

python基礎學習筆記

好的 留下 path false 找到 __name__ ems 單詞 ups

 1 #!/usr/bin/env python
 2 #coding=utf-8
 3 
 4 def login(username):
 5     if username==bill:
 6         return 1
 7     else:
 8         return 0
 9 
10 def detail(user):
11     print 我是%s%user
12 
13 if __name__==__main__:
14     user=raw_input(請輸入你的名字:)
15     if login(user) == 1:
16 print 登陸成功 17 if raw_input(是否顯示詳細y/n) == y: 18 detail(user) 19 else: 20 print ok 21 else: 22 print 登陸失敗

函數的默認參數,如果默認沒有賦值,則會只是默認值,如果給具體的某個鍵,就要加上具體的鍵

1 def foo(name,action=砍柴,where=上海):
2     print name,,action,where
3 4 if __name__==__main__: 5 foo(zhangsan) 6 foo(lili,chipi) 7 foo(adf,where=北京)

以鍵值形式存儲

1 def foo(**item):
2     for i in item.items():
3         print i
4 
5 
6 foo(name=a,age=b)

如果此時是字典要存入,則需要使用一下模式

1 def foo(**item):
2     for i in item.items():
3 print i 4 5 a={name:weiwei,age:18} 6 7 foo(**a)

以列表形式存儲

1 def foo(*item):
2     for i in item:
3         print i
4 
5 
6 foo(a,b,23)

xrange與range readlines()與xreadlines()區別就是沒有x的是一次性向內存開辟空間,而有x的則是使用一個開辟一個空間

1 yield的返回值是一個生成器,只有遍歷的時候才會返回值
2 def foo():
3     yield 1
4 
5 a=foo()
6 for i in a:
7     print i
8 叠代器和生成器的區別,叠代器會有一個next()方法,一直向下執行,生成器會將數據記錄為一個快照,暫時不開辟內存空間,等到有for循環打印出來的時候就需要開辟內存空間了
1 文件的自動關閉
2 with open(D:/tmp.txt,r)
3     print xxx
4 執行結束之後自動關閉文件
1 三元運算式
2 result=ge if 1<3 else it
3 print result
4 結果ge
5 
6 num=lambda x,y:x+y#lambda關鍵字
7 
8 print num(4,10)
9 結果14,三個參數也可以,參數由自己設定
 1 內置函數:
 2 print bool(1)#布爾值
 3 print abs(-9)
 4 print divmod(1,9)#求模
 5 
 6 print max(11,22)
 7 print min(11,22)
 8 print sum([11,22])
 9 print pow(2,10)
10 
11 a=[1]
12 print len(a)
13 #如果a是文字,則此時就是字節的長度,不是字符的長度
14 
15 print all([1,2,3,4,1])
16 print any([2,3,4,1,23])
17 any(iterable)說明:參數iterable:可叠代對象;
18 如果當iterable所有的值都是0、‘‘或False時,那麽結果為False,如果所有元素中有一個值非0、‘‘或False,那麽結果就為True
19 如果iterable的所有元素不為0、‘‘、False或者iterable為空,all(iterable)返回True,否則返回False;
20 
21 print chr(66)#ASCII對應的數據
22 print ord(a)#打印對應的95
23 
24 print hex(2)#轉換成16進制
25 print bin(2)#轉換成2進制
26 print oct(2)#轉換成8進制
27 
28 li=[手表,起床,]#enumerate會將數組或列表組成一個索引序列,2是起始的序號,可隨意修改
29 for item in enumerate(li,2):
30     print item[0],item[1]
31 0 one
32 1 two
33 2 three
34 
35 s=i am {0} {1}
36 print s.format(bill,jj)

對序列裏面的每個元素操作

li=[11,22,33]
print map(lambda arg:arg+100,li)
[111, 122, 133]

對序列過濾,返回結果為true的留下,false的顧慮掉,接收值是bool

 1 li=[11,22,33]
 2 
 3 
 4 def foo(arg):
 5     if arg<22:
 6         return True
 7     else:
 8         return False
 9 
10 tmp=filter(foo,li)
11 print tmp

累加

1 li=[11,22,33]
2 
3 print reduce(lambda x,y:x+y,li)
4 
5 
6 li=[11,22,33]
7 y=[1,2,3]
8 print zip(li,y)
9 [(11, 1), (22, 2), (33, 3)]

強制類型轉換,我給的是字符串,但是需要計算8*8的值

1 a=8*8
2 b=a.split(*)
3 
4 for i in b:
5     c=int(i)
6     print c,type(c)

1 a=8*8 2 print eval(a)#簡單版

導入模塊的另一種方法,反射,通過字符串的形式導入模塊,並以字符串的模式執行函數

 1 temp=sys
 2 
 3 mode=__import__(temp)
 4 
 5 print mode.path
 6 ------------------------------------------//使用以下方法時需要在同一個目錄下,貌似不可以跨越文件夾
 7 temp = 12#模塊的名字
 8 fuc=foo#函數的名字
 9 model=__import__(temp)
10 
11 a=getattr(model,fuc)#查找該模塊中是否有這個函數,函數部分不可以直接寫foo
12 print a()#獲取的是函數,所以需要使用對象
 1 import random
 2 #print random.random()#生成0-1之間的隨機數
 3 #print random.randint(1,5)#生成1-5之間的隨機數
 4 print random.randrange(1,3)#1<=x<3
 5 
 6 print chr(random.randint(65,90))#獲取隨機字母
 7 
 8 
 9 生成一個隨機的驗證碼
10 import random
11 array=[]
12 for i in range(6):
13     if i==random.randint(1,5):
14         array.append(str(i))
15     else:
16         array.append(chr(random.randint(65,90)))
17 
18 print ‘‘.join(array)#Python的格式化操作,拼接字符串,並且用這種方法效率高拼接字符串,並且用這種方法效率高
1 MD5加密
2 import hashlib
3 hash=hashlib.md5()
4 hash.update(admin)
5 print hash.hexdigest()

序列化與反序列化,pick可以常規類型也可以序列化類,序列化後不可讀

 1 #為什麽要序列化?兩個python程序內存之間的交互,保存到硬盤上
 2 
 3 import pickle#python與python之間的文件的傳輸,可以共享文件,相互讀
 4 li=[nima,1,2,3,2432,123,4,1]
 5 dumpsed=pickle.dumps(li)#dumps將所傳入的變量的值序列化為一個bytes,然後,就可以將這個bytes寫入磁盤或者進行傳輸。
 6 print dumpsed
 7 print type(dumpsed)
 8 
 9 loadsed=pickle.loads(dumpsed)#loads當我們要把對象從磁盤讀到內存時,可以先把內容讀到一個bytes,然後用loads方法反序列化出對象,也可以直接用load方法直接反序列化一個文件。
10 print loadsed
11 print type(loadsed)
12 
13 pickle.dump(li,open(D:/nima.pk,w))#dump則更加一步到位,在dump中可以傳入兩個參數,一個為需要序列化的變量,另一個為需要寫入的文件。
14 
15 result=pickle.load(open(D:/nima.pk,r))
16 print result
#pickle與python的區別,json只能序列化常規的數據類型,字典、列表,集合,序列化之後可讀
如果我們要在不同的編程語言之間傳遞對象,就必須把對象序列化為標準格式,
比如XML,但更好的方法是序列化為JSON,因為JSON表示出來就是一個字符串,
可以被所有語言讀取,也可以方便地存儲到磁盤或者通過網絡傳輸。
JSON不僅是標準格式,並且比XML更快,而且可以直接在Web頁面中讀取,非常方便。
 1 正則表達式
 2 re模塊用於對python的正則表達式的操作。
 3 
 4 字符:
 5 
 6   . 匹配除換行符以外的任意字符
 7   \w    匹配字母或數字或下劃線或漢字
 8   \s    匹配任意的空白符
 9   \d    匹配數字
10   \b    匹配單詞的開始或結束
11   ^    匹配字符串的開始
12   $    匹配字符串的結束
13 
14 次數:
15 
16   * 重復零次或更多次
17   +    重復一次或更多次
18   ?    重復零次或一次
19   {n}    重復n次
20   {n,}    重復n次或更多次
21   {n,m}    重復n到m次
22 
23 import re
24 
25 hh1=re.match(\d+,123ajfdiosaj12321j4lklnljj432ojoij)#該函數是匹配開頭,如果在開頭的位置找到就返回找到的值,反之就返回None
26 if hh1:
27     print hh1.group()
28 else:
29     print nothing
30 
31 
32 hh2=re.search(\d+,ajfdiosaj12321j4lklnljj432ojoij)#該函數是開頭開始找,但是它是一直向後找,直到找到了,才返回值
33 if hh2:
34     print hh2.group()
35     
36 ---------------------------------------------------------------------有多少數字取多少數字
37 
38 import re
39 hh3=re.findall(\d+,aodijfjoj1324joijoij12joi)
40 print hh3
41 
42 [1324, 12]    
43 ---------------------------------------------------------------------先編譯,再執行
44 import re
45 
46 com=re.compile(\d+)
47 print com.findall(adfoiqe213324joijoij234)
1 ---------------------------------------------------------------------group與groups
2 import re
3 
4 result=re.search((\d+)ojoijlo(\d+),oijoij24324ojoijlo643)
5 print result.group()
6 print result.groups()
7 
8 24324ojoijlo643
9 (24324, 643)
1 import time
2 
3 #print time.time()
4 #print time.strftime(‘%Y-%m-%d %H:%M:%S‘)
5 #print time.strptime(‘2014-11-11‘, ‘%Y-%m-%d‘)
6 print time.mktime(time.localtime())
7 print time.localtime()
 1 反射器的各種應用
 2 #!/usr/bin/env python
 3 #coding:utf-8
 4 
 5 data=raw_input(Please input your address:)
 6 array=data.split(/)
 7 
 8 username=__import__(backend.+array[0])#可以實現不同頁面之間的跳轉,節約代碼量
 9 
10 model=getattr(username,array[0])#將其理解成先進入文件夾
11 func=getattr(model,array[1])#然後進入模塊調用相應的方法
12 func()

python基礎學習筆記