Python3基礎

2022-09-23 00:52:10 字數 4146 閱讀 3318

import

requests

res = requests.get("

")

使用requests方法後,會返回一個response物件,其儲存了伺服器響應的內容:

res.status_code #

響應狀態碼

res.raw #

返回原始響應體,也就是 urllib 的 response 物件,使用 r.raw.read() 讀取

res.content #

位元組方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮

res.text #

字串方式的響應體,會自動根據響應頭部的字元編碼進行解碼

res.headers #

以字典物件儲存伺服器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在則返回none

res.enxoding #

返回編碼方式

#*特殊方法*#

res.json() #

requests中內建的json解碼器

res.raise_for_status() #

失敗請求(非200響應)丟擲異常

1.傳遞引數:

requests允許你使用params關鍵字引數,以一個字串字典來提供引數以手工構建url

payload = 

r = requests.get("

','params = payload)

2.定製請求頭:

如果你想為請求新增http頭部,只要簡單的傳遞一個dict給headers引數就可以了

url = '

'headers =

r = requests.get(url,headers = headers )

注意:requests不會基於定製的header的具體情況改變自己的欣慰,只不過在最後的請求中,所有的header資訊都會被傳遞進去。

3.方法

描述os.getcwd()

返回當前工作目錄

os.mkdir(path)

建立一個名為path的資料夾

os.chdir(path)

改變當前工作目錄

一般情況下列表推導可以替代常見的迴圈,列表推導式的書寫形式為:

[ 表示式 for 變數 in 列表 ]  或  [ 表示式 for 變數 in 列表 if 條件]

它使用編排好的特性對迴圈語法中的一部分進行了自動化處理

>>>[ i for i in range(10) if i % 2 ==0]

[0,2,4,6,8]

在python中生成器(generator)可以一遍迴圈一遍計算,生成器儲存的是演算法,不像列表一樣一開始便列出所有的元素。要建立一個生成器有很多的方法,一種簡單的方法就是把列表推導的改成(),就建立了一個generator。

g = ( x * x for x in range( 10 ) )

定義generator的另一種方法是使用yield關鍵字,如果一個函式中包含yield,那麼這個函式就不再是一個普通的函式,而是一個generator

def

fib( max_number ):

n,a,b = 0,0,1

while n yield

b a,b = b,a+b

n = n + 1

return

'done

'

注:generator和函式的執行流程有點不一樣。函式是順序執行,遇到return語句或者最後一行函式語句返回。而生成器的函式,每次呼叫next()的時候執行,遇到yield語句返回,再次執行的時候從上次返回的yield語句處繼續執行。

迭代器:

可以直接作用於for迴圈的資料型別有以下幾種:

一類是集合資料型別,如list、tuple、dict、set、str等

一類是generator,包括生成器和帶yield的生成器函式。

這些可以直接作用於for迴圈的物件統稱為可迭代物件:iterable。可以被next()函式呼叫並不斷返回下一個值得物件稱為迭代器:iterator。使用isinstance()可以判斷一個物件是否是iterable物件或iterator物件。

from collections import

iterable

print

( isinstance( [ ], iterable ) )

print( isinstance( [ ], iterator ) )

map( )函式接收兩個引數,一個是函式,一個是iterable,map將傳入的函式依次作用於序列的每個元素,並把結果作為新的iterable返回。

reduce( )也接收兩個引數,也是函式和iterable,不過reduce是利用函式把序列的前一個和後一個元素做累積計算

利用這兩個函式,我們可以自己編寫把字串轉化為數字的函式:

from functools import

reduce

defstr2int( s ):

deffn( x, y ):

return x * 10 +y

defchar2num( s ):

return [s]

return reduce( fn, map( char2num, s ) )

filter( )函式也接收一個函式和一個序列,不過filter是把傳入的函式以此作用於每個元素,然後根據返回值是true還是false決定保留還是捨棄該元素。

下面使用filter函式求素數:

#

構造一個從3開始的奇數序列,注意這是一個生成器,並且是一個無限序列。

def_odd_iter( ):

n = 1

while

true:

n = n + 2

yield

n

#定義一個篩選函式

def_not_dicisible( n ):

return

lambda x: x % n >0

#定義一個生成器,不斷返回下一個素數

defprimes( ):

yield 2it = _odd_iter( ) #

初始序列

while

true:

n = next( it ) #

返回序列的第一個元素

yield

n it = filter( _not_dicisible( n ), it ) #

構建新的序列

#由於primes也是一個無限序列,要設定一個退出迴圈的條件

for n in

primes( ):

if n < 1000:

print

( n )

else

:

break

python內建的sorted( )可以對list進行排序

a = sorted( [ 36, 5, -12, 9, -21 ] )

此外,sorted( )函式也是一個高階函式,可以接受一個key函式來實現自定義的排序。key指定的函式將作用於list的每一個元素上,並根據key函式返回的結果進行排序。

b = sorted( [ 36, 5, -12, 9, -21 ], key = abs )

當一個函式返回了另一個函式後,其內部的區域性變數還被新函式引用,相關的引數和變數都儲存在返回的函式中,這種程式結構被稱為閉包。並且,返回的函式並沒有立刻執行,而是直到被呼叫時才執行。

注意:返回的函式不要引用任何迴圈變數,或者後續會發生變化的變數。如果一定要引用迴圈變數,可以再建立一個函式,用該函式繫結迴圈變數的當前值。

def

count():

deff(j):

defg():

return j*j

return

g fs =

for i in range(1, 4):

#f(i)立刻被執行,因此i的當前值被傳入f()

return fs

python3

list學習 1 中括號表示 裡面可以是任意資料型別元組,列表 li 1 2 4 990 2 9 sssss sss aaa 1 2 索引取...

Python3

python 是一個高層次的結合瞭解釋性 編譯性 互動性和麵向物件的指令碼語言。 python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。 reddit 社交分享 dropbox 檔案分享服務 豆瓣網 圖書 唱片 電影等文化產品的...

python3 3 selenium

1 檢視c python33 scripts下已經有了easy install exe 3 cmd 進入c pip 7 1 2,輸入 pyt...