本文在上文的基礎上重新實現支持多線程的服務器。以下為TCP客戶端的程序代碼:#!/usr/bin/envpython3importsysfromPyQt5.QtCoreimport(QByteArray,QDataStream,QDate,QIODevice,QRegExp,Qt)fromPyQt5.QtWidgetsimport(QApplication,QDateEdit,QFrame,QGridLayout,QHBoxLayout,QLabel,QL
系統 2019-09-27 17:49:39 1960
Python重試模塊retrying工作中經常碰到的問題就是,某個方法出現了異常,重試幾次。循環重復一個方法是很常見的。比如爬蟲中的獲取代理,對獲取失敗的情況進行重試。剛開始搜的幾個博客講的有點問題,建議看官方文檔,還有自己動手實驗。參考:https://segmentfault.com/a/1190000004085023https://pypi.org/project/retrying/最初的版本importrequestsclassProxyUtil
系統 2019-09-27 17:49:24 1960
ccs的優點:css相對xpath語法比xpath簡潔,定位速度比xpath快css的缺點:css不支持用邏輯運算符來定位,而xpath支持。css定位語法形式多樣,相對xpath比較難記。css定位建議多用,這個定位方式很強大,定位速度快且準確度高。至于難記,用熟了就好了,對勤快的人來說,這不是問題。CSS_selector常用符號:#表示id.表示class>表示子元素,層級1.通過id屬性定位:find_element_by_css_selector
系統 2019-09-27 17:49:19 1960
具體代碼如下所示:importsmtplib,email,os,timefromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextfromemail.headerimportHeader#設置smtplib所需的參數smtpserver='smtp.qq.com'#SMTP服務器地址username='xxx@qq.com'#發件人地址,通過控制臺創建的發件人地址
系統 2019-09-27 17:49:18 1960
一.lamda匿名函數為了解決一些簡單的需求而設計的一句話函數#計算n的n次方deffunc(n):returnn**nprint(func(10))f=lambdan:n**nprint(f(10))lambda表示的是匿名函數.不需要用def來聲明,一句話就可以聲明出一個函數語法:函數名=lambda參數:返回值注意:1.函數的參數可以有多個.多個參數之間用逗號隔開2.匿名函數不管多復雜.只能寫一行,且邏輯結束后直接返回數據3.返回值和正常的函數一樣,
系統 2019-09-27 17:49:16 1960
OS模塊基本操作提供對操作系統進行調用的接口importos#導入模塊os.getcwd()#獲取當前目錄(pwd)os.chdir("/Users")#切換到某個指定的目錄(cd/Users)os.curdir#返回當前目錄('.'、cd.)os.pardir#返回上級目錄('..'、cd..)os.makedirs('dirname1/dirname2')#遞歸創建目錄(mkdir-p)os.removedirs('dirname1/dirname2'
系統 2019-09-27 17:49:12 1960
python循環結構1.1使用whilePython中沒有do…while循環while…else在條件語句為false時執行else的語句塊:list=[1,2,3,4,5]i=0whilei
系統 2019-09-27 17:49:12 1960
我用了簡單工廠和建造者模式,與python的GUI配合實現了一個簡單的計算器系統,下面是運行結果,之后會向大家講解。類圖如下:部分代碼如下:builderModel.py建造者模式代碼classProduct():"""復雜產品類該類用于存放并返回兩個操作數Attributes:self.NumOne:第一個操作數self.NumTwo:第二個操作數"""def__init__(self,NumOne,NumTwo):self.__NumOne=NumOn
系統 2019-09-27 17:49:07 1960
前言Quora問答社區的一個開發者投票統計,程序員最大的難題是:如何命名(例如:給變量,類,函數等等),光是如何命名一項的選票幾乎是其它八項的投票結果的總和。如何給變量命名,如何讓它變得有意義成了程序員不可逾越的難題,這篇文章參考了CleanCode,提供7條命名建議,希望能在取名字的過程中給你帶來一些幫助。以下都是基于Python3.7語法1、使用有意義而且可讀的變量名差ymdstr=datetime.date.today().strftime("%y-
系統 2019-09-27 17:49:04 1960
前言Python生成器(generator)并不是一個晦澀難懂的概念。相比于MetaClass和Closure等概念,其較為容易理解和掌握。但相對于程序結構:順序、循環和分支而言其又不是特別的直觀。無論學習任何的東西,概念都是非常重要的。正確樹立并掌握一些基礎的概念是靈活和合理運用的前提,本文將以一種通俗易懂的方式介紹一下generator和yield表達式。1.Iterator與Iterable首先明白兩點:Iterator(迭代器)是可迭代對象;可迭代
系統 2019-09-27 17:48:41 1960