python實戰筆記(三)

2021-10-11 17:52:56 字數 4787 閱讀 1471

資料型別(補充) [上一部分] 函式

集合無序的不可隨機訪問的不可重複的元素集合

可變集合的表示

# 直接表示

s =

print(s, type(s)) # # set(iterable)

s1 = set("abc")

s2 = set([1, 2, 3])

print(s1, s2) #

# 集合推導

# 參考列表推導

s =

print(s) #

不可變集合
# frozenset(iterable)

fs = frozenset("abc")

print(fs) # frozenset()

# 集合推導

fs = frozenset(x**2 for x in range(1, 6) if x % 2)

print(fs) # frozenset()

注意事項

集合的操作

時間日曆

time模組

# 執行緒休眠

# 每隔一秒列印乙個數字

import time

n = 0

while true:

print(n)

time.sleep(1) # 引數單位是秒

datetiem模組

模組內部有多個datetimedatetime。使用時選擇合適的類進行操作就行了 函式

函式的引數

所有的傳參方式都是傳引用,注意列表做引數和數值做引數容易出現的問題。

返回值

def funname():

# todo...

return data

偏函式
import functools

numstr = "100010"

res = int(numstr, base=2)

print(res) # 34

int2 = functools.partial(int, base=2) # 重新封裝,構成偏函式

print(int2(numstr)) # 34

高階函式
def calculate(a, b, cal_fun):

print(cal_fun(a, b))

def sum(a, b):

return a + b

def sub(a, b):

return a - b

calculate(2, 3, sum) # 5

calculate(2, 3, sub) # -1

匿名函式
res = (lambda x, y : x + y)(1, 2)

print(res) # 3

fun = lambda x, y : x + y

print(fun(2, 3)) # 5

# 更多的是配合 map(), reduce()等函式進行使用

閉包
def line_config(content, length):

define line():

print(content * length)

return line

line1 = line_config("-", 5);

line2 = line_config("*", 6)

line1(); # -----

line2(); # ******

def test():

num = 10

def test2():

nonlocal num # test中的 num被修改

num = 666

return test2

def test():

funs =

for i in range(1, 4):

def test2():

print(i)

return funs

myfuns = test()

myfuns[0]() # 3 // 函式在執行時才會去確定變數的值

myfuns[1]() # 3 // 執行時,索引 i的值已經發生變化了

myfuns[2]() # 3

裝飾器
def check(func):

def inner():

print("登入驗證...")

func()

return inner()

# 在 fss()和 ftp()執行之前,都會送入 check()進行包裝

@check

def fss():

print("發說說")

# 上面三行等價於 fss = check(fss)

@check

def ftp():

print("發")

# 上面三行等價於 ftp = check(ftp)

# 主業務邏輯如下:

flag = 1

if flag == 1:

fss() # 登入驗證...

else: # 發說說

ftp()

def one(func):

print('----1----')

def two():

print('----2----')

func()

return two

def a(func):

print('----a----')

def b():

print('----b----')

func()

return b

@one

@adef demo():

print('----3----')

demo()

# 執行結果 //從下到上裝飾,從上到下執行,分析略

# 裝飾的過程就相當於你把一件禮物一層一層的進行包裝,先包裝內層

# 執行的過程就是把禮物拆開,最外面的包裝先被拆開

----a----

----1----

----2----

----b----

----3----

def zsq(funcs):

def inner(*args, **kwargs): # 裝包

print("-" * 5)

func(*args, **kwargs) # 拆包

return inner

@zsq

def fun1(n1, n2, n3):

print(n1, n2, n3)

@zsq

def fun2(n):

print(n)

fun1(1, 2, n3=8) # 1 2 8

fun2(3) # 3

def zsq(funcs):

def inner(*args, **kwargs): # 裝包

print("-" * 5)

res = func(*args, **kwargs) # 拆包

return res

@zsq

def fun1(n1, n2, n3):

return sum(n1, n2, n3)

fun1(1, 2, 3)

def getzsq(char):

def zsq (func):

def inner():

print(char * 5)

func()

return inner

return zsq

@getzsq("*")

def f(): # *****

print("666") # 666

@getzsq("-")

def f1(): # -----

print("666") # 666

生成器

使用方式

# 生成器表示式

l = (i for i in range(1, 10000000) if i % 2)

print(type(l)) # // 不是元組推導,沒有元組推導式

print(next(l)) # 1

print(next(l)) # 3

for i in l:

print(i) # 迴圈列印出所有滿足條件的值

# 生成器函式

def test():

for i in range(1, 9):

yield i

g = test()

print(next(g)) # 1

print(next(g)) # 2

python實戰筆記(一)

python注釋 python變數 python運算子 python輸入輸出 分支 迴圈 單行注釋 這是乙個單行注釋 print test 多行注釋 這裡就是python的多行注釋方式 可以直接分行進行注釋操作 本質上是字串 import this print hello world 特殊注釋變數使...

scarpy 筆記三 實戰一

我們開始爬蟲前,基本按照以下步驟來做 1.爬蟲步驟 新建專案,明確爬蟲目標,製作爬蟲,儲存爬蟲內容 2.1 建立專案 1.開啟pycharm 點開terminal 或者命令列都可以 輸入 scrapy startproject douban2.匯入 douban scrapy專案,專案結構如下 sp...

《機器學習實戰》閱讀筆記(三)

接上篇 2.2.3準備資料 歸一化數值 由於數值較大的值會產生較大的影響,所以需要歸一化,公式如下 newvalue oldvalue min max min 歸一化函式如下 def autonorm dataset minvals dataset.min 0 maxvals dataset.max...