這里的QuickSort.count叫做"函數(shù)屬性function attribute",
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到馬邊彝族網(wǎng)站設(shè)計(jì)與馬邊彝族網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋馬邊彝族地區(qū)。
python等動(dòng)態(tài)類型語(yǔ)言所具有的"函數(shù)同時(shí)是頭等對(duì)象"的功能.
即代碼可以往函數(shù)對(duì)象上靈活地添加某屬性。
def?f():???
print(f.act)
f.act=123?#定義和添加一個(gè)函數(shù)對(duì)象的屬性-函數(shù)屬性
f()?#打印123
之前的快速排序用了一個(gè)count屬性在記錄排序算法的比較次數(shù)。屬于調(diào)試顯示,不是排序的核心算法..
# code at 2021-10-1
# 根據(jù)html標(biāo)簽獲取數(shù)據(jù)
# 需要安裝包pip lxml
import requests
import bs4
import ctypes
import tkinter
import tkinter.ttk
import tkinter.scrolledtext
import pyperclip
import lxml
headers = {
# 'authority': 'developer.mozilla.org',
# 'pragma': 'no-cache',
# 'cache-control': 'no-cache',
# 'upgrade-insecure-requests': '1',
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 '
? ? ? ? ? ? ? 'YaBrowser/19.7.0.1635 Yowser/2.5 Safari/537.36',
# 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,
# application/signed-exchange;v=b3', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,
# zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6', 'cookie': 你的cookie,
}
global view
global dm
global time
global like
global coin
global collect
global share
def get_video_info():
global view
global dm
global time
global like
global coin
global collect
global share
half_url = GetBVString.get()
if 'http' in half_url:
bv_string = half_url.strip().split('?')[0].split('/')[4]
GetBVString.delete(0, '')
GetBVString.insert(0, bv_string)
else:
bv_string = half_url
response = requests.get(f'{bv_string}', headers=headers)
soup = bs4.BeautifulSoup(response.text, "lxml")
view = soup.select('#viewbox_report div span.view')[0].text.replace('播放?·?', '')
dm = soup.select('#viewbox_report div span.dm')[0].text.replace('彈幕', '')
like = soup.select('#arc_toolbar_report div.ops span.like')[0].text.replace('\n? ? ', '')
coin = soup.select('#arc_toolbar_report div.ops span.coin')[0].text.replace('\n? ? ? ', '').replace('\n? ? ',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '')
collect = soup.select('#arc_toolbar_report div.ops span.collect')[0].text.replace('\n? ? ', '')
share = soup.select('#arc_toolbar_report div.ops span.share')[0].text.replace('\n? ? ? ', '')
time = soup.select('#viewbox_report div span:nth-child(3)')[0].text
viewLabel.configure(text=view)
dmLabel.configure(text=dm)
likeLabel.configure(text=like)
coinLabel.configure(text=coin)
collectLabel.configure(text=collect)
shareLabel.configure(text=share)
timeLabel.configure(text=time)
def paste():
GetBVString.delete(0, '')
GetBVString.insert(0, pyperclip.paste())
def clear():
GetBVString.delete(0, '')
window = tkinter.Tk()
ctypes.windll.shcore.SetProcessDpiAwareness(1)
ScaleFactor = ctypes.windll.shcore.GetScaleFactorForDevice(0)
window.tk.call('tk', 'scaling', ScaleFactor /72)
window.title('視頻數(shù)據(jù)監(jiān)控')
GetBVString = tkinter.ttk.Entry(window)# , width=50
confirm = tkinter.ttk.Button(window, text="獲取", command=get_video_info)
paste = tkinter.ttk.Button(window, text="粘貼", command=paste)
clear = tkinter.ttk.Button(window, text="清空", command=clear)
tkinter.ttk.Label()
viewLabelHint = tkinter.ttk.Label(window, text='播放:')
dmLabelHint = tkinter.ttk.Label(window, text='彈幕:')
timeLabelHint = tkinter.ttk.Label(window, text='時(shí)間:')
likeLabelHint = tkinter.ttk.Label(window, text='點(diǎn)贊:')
coinLabelHint = tkinter.ttk.Label(window, text='投幣:')
collectLabelHint = tkinter.ttk.Label(window, text='收藏:')
shareLabelHint = tkinter.ttk.Label(window, text='分享:')
viewLabel = tkinter.ttk.Label(window, text='')
dmLabel = tkinter.ttk.Label(window, text='')
likeLabel = tkinter.ttk.Label(window, text='')
coinLabel = tkinter.ttk.Label(window, text='')
collectLabel = tkinter.ttk.Label(window, text='')
shareLabel = tkinter.ttk.Label(window, text='')
timeLabel = tkinter.ttk.Label(window, text='')
GetBVString.grid(column=0, row=0, columnspan=2)
confirm.grid(column=2, row=0)
paste.grid(column=3, row=0)
clear.grid(column=4, row=0)
viewLabelHint.grid(column=0, row=1, sticky='E')
dmLabelHint.grid(column=0, row=2, sticky='E')
likeLabelHint.grid(column=0, row=3, sticky='E')
coinLabelHint.grid(column=0, row=4, sticky='E')
collectLabelHint.grid(column=0, row=5, sticky='E')
shareLabelHint.grid(column=0, row=6, sticky='E')
timeLabelHint.grid(column=0, row=7, sticky='E')
viewLabel.grid(column=1, row=1, sticky='W')
dmLabel.grid(column=1, row=2, sticky='W')
likeLabel.grid(column=1, row=3, sticky='W')
coinLabel.grid(column=1, row=4, sticky='W')
collectLabel.grid(column=1, row=5, sticky='W')
shareLabel.grid(column=1, row=6, sticky='W')
timeLabel.grid(column=1, row=7, sticky='W')
window.mainloop()
python 所有版本的源代碼可以在這里下載到:
python沒(méi)有像matlab那樣的函數(shù)可以直接查看某個(gè)函數(shù)的源代碼,只有去下載整個(gè)源代碼查看了,不過(guò)找起來(lái)應(yīng)該也不難,另外你也可以寫(xiě)一個(gè)小程序來(lái)查看對(duì)應(yīng)函數(shù)的源代碼。
Python的函數(shù)調(diào)用方式是通過(guò)import來(lái)調(diào)用的對(duì)應(yīng)的py文件。
庫(kù)函數(shù)有內(nèi)建函數(shù)build_in(會(huì)寫(xiě)python的時(shí)候已經(jīng)可以不用看了,不會(huì)寫(xiě)的時(shí)候看也看不懂),和通過(guò)pip直接下載或者github上下載再安裝的函數(shù)。本質(zhì)上都是py文件。后者有時(shí)候由于環(huán)境的不同需要自行修改(這種情況較少),一般在安裝路徑下"\Lib\site-packages"文件夾中存在。
學(xué)習(xí)庫(kù)函數(shù)最好的方法是看網(wǎng)上官方的幫助文檔,此外還可以通過(guò)python自帶的dir()方法查看所有的屬性和方法,或者用help()方法查看幫助文檔(部分別人造的輪子不一定有)。
另外推薦使用ipython,Python創(chuàng)始人之一的成員編寫(xiě)的交互式系統(tǒng)。
Python中如何實(shí)現(xiàn)運(yùn)算符的重載,即實(shí)現(xiàn)例如a+b這樣的運(yùn)算符操作呢?
在C++中可以使用 operator 關(guān)鍵字實(shí)現(xiàn)運(yùn)算符的重載。但是在Python中沒(méi)有類似這樣的關(guān)鍵字,所以要實(shí)現(xiàn)運(yùn)算符的重載,就要用到Python的魔法函數(shù)。Python魔法函數(shù)是以雙下劃線開(kāi)頭,雙下劃線結(jié)尾的一組函數(shù)。我們?cè)陬惗x中最常用到的 __init__ 函數(shù)就是這樣一個(gè)魔法函數(shù),它在創(chuàng)建類對(duì)象時(shí)被自動(dòng)調(diào)用。
下面我們來(lái)看個(gè)簡(jiǎn)單的例子。
上述代碼示例了幾個(gè)魔法函數(shù)的用法。 __add__ 函數(shù)對(duì)應(yīng)了二元運(yùn)算符+,當(dāng)執(zhí)行a+b語(yǔ)句時(shí),python就會(huì)自動(dòng)調(diào)用a. add (b)。 對(duì)于上述例子中的v1+v2+v3,則相當(dāng)于調(diào)用了(v1. add(v2)). add(v3)。
代碼中還有一個(gè)在Python類定義經(jīng)常使用的 __str__ 函數(shù),當(dāng)使用 str() 時(shí)會(huì)被調(diào)用。print函數(shù)對(duì)傳入的參數(shù)都調(diào)用了str()將其轉(zhuǎn)換成易讀的字符串形式,便于打印輸出,因而會(huì)調(diào)用類定義的__str__函數(shù)打出自定義的字符串。
代碼中還有一個(gè)特殊的 __call__ 函數(shù),該函數(shù)在將對(duì)象采用函數(shù)調(diào)用方式使用時(shí)被調(diào)用, 例如v1()相當(dāng)于v1. call ()。
以上就是魔法函數(shù)的基本使用方法。常見(jiàn)的魔法函數(shù)我們可以使用 dir() 函數(shù)來(lái)查看。
輸出結(jié)果為:
上述結(jié)果中形式為‘__函數(shù)名__’的函數(shù)為魔法函數(shù),注意有些對(duì)象也是這種形式,例如__class__, __module__等, 這些不是魔法函數(shù)。具體的魔法函數(shù)說(shuō)明可以參考Python官方說(shuō)明文檔。
以上代碼在Python3.6運(yùn)行通過(guò).
在python中,定義一個(gè)函數(shù)要使用def語(yǔ)句,依次寫(xiě)出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào):,然后在縮進(jìn)塊中編寫(xiě)函數(shù)體,函數(shù)的返回值用return語(yǔ)句返回
def 函數(shù)名([參數(shù)1,參數(shù)2,...,參數(shù)n]):
函數(shù)體
函數(shù)代碼以def關(guān)鍵詞開(kāi)頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào)():
任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以用于定義參數(shù)
函數(shù)的第一行語(yǔ)句可以選擇性的使用文檔字符串-用于存放函數(shù)說(shuō)明
函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)
return[表達(dá)式]結(jié)束函數(shù),選擇性的返回一個(gè)值給調(diào)用方,不帶表達(dá)式的return相當(dāng)于返回None
本文標(biāo)題:python函數(shù)彈幕代碼 python抓取彈幕
分享網(wǎng)址:http://muchs.cn/article4/docsdoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、營(yíng)銷型網(wǎng)站建設(shè)、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)公司、、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)