資料型別(補充) [上一部分] 函式
集合無序的,不可隨機訪問的,不可重複的元素集合
可變集合的表示
# 直接表示
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模組
模組內部有多個類:datetime、date、time。使用時選擇合適的類進行操作就行了 函式
函式的引數
所有的傳參方式都是傳引用,注意列表做引數和數值做引數容易出現的問題。
返回值
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...