Python學習筆記(二)

來源:互聯網
上載者:User

標籤:python

1  python語言中對象的類型和記憶體都是運行時確定的。在建立也就是賦值時,解譯器會根據文法和右側的運算元來決定新對象的類型。


2  GAE 英文全稱為 Google App Engine。它是 Google 管理的資料中心中用於 WEB 應用程式的開發和託管的平台,目前支援python、java和php開發

 

3.HTTPError: HTTP Error 403: Forbidden

import sys,urllib2req = urllib2.Request("http://blog.csdn.net/nevasun")fd = urllib2.urlopen(req)while True:    data = fa.read(1024)    if not len(data): break    sys.stdout.write(data)


 


這是由於網站禁止爬蟲,可以在請求加上頭資訊,偽裝成瀏覽器訪問。添加和修改.這樣爬下來的網頁是亂碼,網站是utf-8編碼的,需要轉換成本地系統的編碼格式,因此要改兩個地方:

import sys,urllib2headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6)Gecko/20091201 Firefox/3.5.6'}  req = urllib2.Request("http://blog.csdn.net/lotluck",headers=headers)content = urllib2.urlopen(req).read()    ## UTF-8  type = sys.getfilesystemencoding()    # local encode format  print content.decode('UTF-8').encode(type)    # convert encode format  


 

 

4 https與http區別
HTTPS(Secure Hypertext Transfer Protocol):安全超文字傳輸通訊協定 (HTTPS),基於HTTP,使用安全套接層(SSL)作為HTTP應用的子層,HTTPS使用443連接埠,SSL使 用40 位關鍵字作為RC4流密碼編譯演算法,HTTPS和SSL支援使用X.509數字認證。
http是HTTP協議運行在TCP之上。所有傳輸的內容都是明文,用戶端和伺服器端都無法驗證對方的身份。
https是HTTP運行在SSL/TLS之上,SSL/TLS運行在TCP之上。所有傳輸的內容都經過加密,加密採用對稱式加密,但對稱式加密的密鑰用伺服器方的認證進行了非對稱式加密。此外用戶端可以驗證伺服器端的身份,如果配置了用戶端驗證,伺服器方

也可以驗證用戶端的身份。
 1.https協議需要到ca申請認證,一般免費認證很少,需要交費
2.http是超文字傳輸通訊協定 (HTTP),資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議
3.http和https使用的是完全不同的串連方式用的連接埠也不一樣,前者是80,後者是443
4.http的串連很簡單,是無狀態的
5.HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路通訊協定 要比http協議安全

 


5.迭代器(iterator)有時又稱遊標(cursor)迭代器就是有一個next()方法的對象,而不是通過索引來計數的。當你或是一個迴圈機制(例如for語句)需要下一個項時,調用迭代器的next()方法就可以獲得它。條目全部取出後,會引發

一個StopIteration異常,這並不是表示錯誤的發生,只是告訴外部的調用者,迭代完成。可以使用iter()函數來建立迭代器,另外還有一種就是自訂類。
>>> a = [122,221,333]
>>> b = iter(a)
>>> b.next()
122
>>> b.next()
221
>>> b.next()
333
>>> b.next()

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    b.next()
StopIteration
>>>


>>> lst = range(2)
>>> it = iter(lst)
>>> it
<listiterator object at 0x0000000002C5EBE0>
>>> it.next()
0
>>> it.next()
1


6.變數交換
>>> x = 6
>>> y = 5
>>> x,y = y,x
>>> x
5
>>> y
6


7.if…elif…else語句

例子:

# if elif else語句

score = raw_input("score:")

score=int(score)

if(score >= 90) and (score <= 100):

    print "A"

elif(score >= 80) and (score < 90):

    print "B"

elif(score >= 60) and (score < 80):

    print "C"

else:

    print "D"

 

8.實現switch語句的功能
Python並沒有提供switch語句,Python可以通過字典實現switch語句的功能。實現方法分兩步。首先,定義一個字典。字典是由鍵值對組成的集合。其次,調用字典的get()擷取相應的運算式。

from __future__ import division

x = 1

y = 2

operator = "/"

result = {

    "+" : x + y,

    "-" : x - y,

    "*" : x * y,

    "/" : x / y

}

print result.get(operator)  

 


9.另一種使用switch分支語句的方案是建立一個switch類,處理常式的流程。

a)         建立一個switch類,該類繼承自Python的祖先類object。調用建構函式init( )初始化需要匹配的字串,並需要定義兩個成員變數value和fall。Value用於存放需要匹配的字串,fall用於記錄是否匹配成功,初始值為false

,標識匹配不成功。如果匹配成功,程式往後執行。

b)        定義一個match( )方法,該方法用於用於匹配case子句。這裡需要考慮三種情況:首先是匹配成功的情況,其次是匹配失敗的預設case子句,最後是case子句中沒有使用break中斷的情況。

c)         重寫__iter__( )方法,定義該方法後才能使switch類用於迴圈語句中。__iter__( )調用match( )方法進行匹配。通過yield保留字,使函數可以在迴圈中迭代。此外,調用StopIteration異常中斷迴圈。

d)        編寫調用代碼,在for…in…迴圈中使用switch類。

例子:

class switch(object):

    def __init__(self, value):      # 初始化需要匹配的值value

        self.value = value

        self.fall = False           # 如果匹配到的case語句中沒有break,則fall為true。

 

    def __iter__(self):

        yield self.match            # 調用match方法 返回一個產生器

        raise StopIteration         # StopIteration 異常來判斷for迴圈是否結束

 

    def match(self, *args):         # 類比case子句的方法

        if self.fall or not args:   # 如果fall為true,則繼續執行下面的case子句

                                    # 或case子句沒有匹配項,則流轉到預設分支。

            return True

        elif self.value in args:    # 匹配成功

            self.fall = True

            return True

        else:                       # 匹配失敗

            return False

 

operator = "+"

x = 1

y = 2

for case in switch(operator):        # switch只能用於for in迴圈中

    if case(‘+‘):

        print x + y

        break

    if case(‘-‘):

        print x - y

        break

    if case(‘*‘):

        print x * y

        break

    if case(‘/‘):

        print x / y

        break

    if case():                      # 預設分支

        print ""

 


10 字串的串連
>>> nfc = [‘11111111‘,‘22222222222‘]
>>> afc = [‘33333333‘,‘44444444444‘]
>>> print nfc + afc
[‘11111111‘, ‘22222222222‘, ‘33333333‘, ‘44444444444‘]
>>> print str(1) + "dushuai"
1dushuai
>>> print ‘1‘ + "dushuai"
1dushuai
>>> print 1,‘dushuai‘
1 dushuai
>>>

 

11數值比較
>>> x = 2
>>> if 3 > x > 1:
 print x

 
2
>>> if 1 < x > 0:
 print x

 
2

 

12 同時遍曆兩個列表
>>> nfc  = [‘111‘,‘222‘]
>>> afc  = [‘333‘,‘444‘]
>>> for t1,t2 in zip(nfc,afc):
 print t1 + "vs."+ t2

 
111vs.333
222vs.444
>>>


13 遍曆列表同時得出序號和內容

>>> tong = ["zhao","tong","tong","du","shuai","love","you"]
>>> for index ,team in enumerate(tong):
 print index,team

 
0 zhao
1 tong
2 tong
3 du
4 shuai
5 love
6 you
>>>

 

14. IDLE整合式開發環境 內建函數成為BIF(built-in function) 在>>>的提示符下面輸入pr或者其他,按下TAB就會出一組建議


15.python中的變數標識符沒有類型,python在建立一個列表的就好像一個類似數組的資料結構來儲存資料,資料項目自上而下,有編號0,1,2,3。 。 。,列表中德資料可以像數組那樣訪問
   movie=["wo","hen","ni"]
   print movie[1]
用簡單的一句話說,列表是一個打了激素的數組,裡面可以混合資料類型


16 len(movie)測量長度,用for可以處理任意長度的列表,列表不支援越界檢查
   for each_item in movie:   for迴圈會負責從列表起始位置開始
         print each_item

    coun=0;
    while count < len(movie):
   print(movie[count])
         count=count+1

 

17.列表裡面可以嵌套
movie = ["The Holy Grail","The Life of Brain",["11111","22222",[44,55,66],"3333"],"The  meaning of Lif"]

for each_item in movie:
 print each_item    for迴圈只列印外列表的各個資料項目

The Holy Grail
The Life of Brain
[‘11111‘, ‘22222‘, [44, 55, 66], ‘3333‘]
The  meaning of Lif


兩次for迴圈
  for i in movie:
 if isinstance(i,list):
  for j in i:
   print j
 else:
      print i

     
The Holy Grail
The Life of Brain
11111
22222
[44, 55, 66]
3333
The  meaning of Lif

 


18 python模組放在哪裡可以用一下代碼 
  import sys;sys.path


19 range()BIF可以提供你需要的控制來迭代指定的次數

   for num in range(4)
 print num

 

20  模組是一個包含Python代碼的文字檔,Python中都有自己的命名空間 end=‘’自動換行

 

21 Python中的BIF就是用來與檔案互動,Python的基本輸入機制是基於行的;

 

Python學習筆記(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.