99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁CDA發(fā)布全棧數(shù)據(jù)工程師養(yǎng)成攻略:Python 基本語法
全棧數(shù)據(jù)工程師養(yǎng)成攻略:Python 基本語法
2017-09-01
收藏

全棧數(shù)據(jù)工程師養(yǎng)成攻略:Python 基本語法

Python簡單易學,但又博大精深。許多人號稱精通Python,卻不會寫Pythonic的代碼,對很多常用包的使用也并不熟悉。學海無涯,我們先來了解一些Python中最基本的內(nèi)容。

Python的特點

解釋型語言,無需編譯即可運行 
提供了交互式命令行 
基于對象的編程思想 
跨平臺和良好的兼容性,在Windows、Mac、Linux上都可運行 
簡單好用而且功能強大

中文編碼

很多同學在打開數(shù)據(jù)時會遇上亂碼問題,其原因是字符集的編碼問題。Linux和Mac默認的編碼集是UTF8,而Windows則是ASCII。如果數(shù)據(jù)編碼的字符集,和你使用Python進行處理時所用的字符集不同,則會出現(xiàn)亂碼問題。

這里是一篇參考文章,http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html,詳細地介紹了Python中文編碼所涉及的內(nèi)容。

另外,我個人的習慣是在Python代碼的頭部加入以下內(nèi)容,其中第二行聲明了使用UTF8字符集。

變量

Python中的變量可以看作是一個個容器,里面存放著我們需要使用到的值。Python對變量名的要求和其他語言一樣:可以包括英文、數(shù)字以及下劃線,但不能以數(shù)字開頭,區(qū)分大小寫。當然我推薦,變量名用純英文就很好,并且取一些有意義的名稱,便于自己理解每個變量的作用。

Python是一門弱類型的語言,在使用變量時無需聲明其類型。Python中的變量包括以下幾類:數(shù)值、字符串、列表、元組、字典。

數(shù)值

數(shù)值包括整型和浮點型,分別對應(yīng)整數(shù)和浮點數(shù),后者精度更高。

字符串也就是我們經(jīng)常接觸到的文本,可以往里面放任意長度的內(nèi)容,用單引號或雙引號括起來。應(yīng)當注意,中文以及中文符號只能出現(xiàn)在字符串內(nèi),如果在下面第三行中使用了中文輸入法的逗號 , ,Python將報錯。

使用 + 可以拼接兩個字符串。

使用 len() 可以得到字符串的長度。

使用切片可以訪問字符串中的某個字符或某個片段。

列表

列表好比一條隊伍,里面依次存放著多個變量。列表和字符串類似,但字符串中的每個元素都是字符,而列表中的每個元素可以是任意類型的變量。

使用 len() 可以獲得列表的長度。

列表元素的按下標訪問和賦值等操作,和字符串都是類似的。

使用 del 刪除列表中的某個元素。

元組

元組和列表類似,唯一的不同是元組中的元素在初始化之后不能再更改,因此可以理解成一個只讀的變量。

字典

字典是一種極為重要的變量類型,使用一個key來訪問相應(yīng)的value,即一種鍵值對的數(shù)據(jù)形式。

所以能夠總結(jié)出字典和列表的不同。列表中的元素是有序?qū)Φ鹊?,所以是用下標來賦值和訪問,而字典中的元素是無序的,所以是用key來操作相應(yīng)的value。

使用 has_key() 判斷字典中是否有某個key。

如果訪問不存在的key,Python將會報錯。在賦值的時候,如果key已經(jīng)存在,則會用新的value覆蓋已有的value。

注釋

被注釋的代碼將不會運行,可以看作是寫給自己和其他程序猿閱讀的一些筆記和說明,提高代碼可讀性。

在Sublime中,選中需要注釋的內(nèi)容,按Ctrl+/即可完成注釋。

保留字符

在Python中,有一些字符串具有某些特定功能,如 import 、 class 等。我們在選擇變量名時,應(yīng)注意避開這些保留字符。

行和縮進

在Python中,代碼塊的邊界不是通過大括號等符號進行顯式劃分,而是通過行的縮進實現(xiàn)的。連續(xù)相同縮進水平的代碼處于同一個代碼塊,在使用 for 、 while 、 if 、 try 等語法時需要注意每行代碼的縮進。

運算符

運算符的作用是根據(jù)已有的變量生成新的變量,主要有以下幾種:

算術(shù)運算符:+,-,*,/,%,即加、減、乘、除、取余 
比較運算符:==,!=,>,<,>=,<=,即等于、不等于、大于、小于、大于等于、小于等于 
賦值運算符:=,+=,-=,*=,/=,%=,即賦值、加賦值、減賦值、乘賦值、除賦值、取余賦值 
邏輯運算符:and,or,not,即與、或、非

條件

在寫代碼的時候,往往需要根據(jù)某些條件進行判斷,并根據(jù)判斷結(jié)果執(zhí)行不同的分支代碼。

需要注意的是,但凡出現(xiàn)了 if 和 elif ,就需要加上相應(yīng)的條件判斷,并且注意代碼的縮進。

在Sublime中輸入 if 會出現(xiàn)相應(yīng)的提示,可以方便地補全代碼,在換行時光標也會自動跳到合適的縮進處。

循環(huán)

如果需要打印從1到100的100個數(shù),肯定不會傻傻地寫100行print代碼,而是會用循環(huán)來處理類似的重復性工作。

while 循環(huán)

while 循環(huán)的思想是,只要某一條件成立,就不斷執(zhí)行循環(huán)體里的代碼,直到條件不再成立。

for 循環(huán)

for 循環(huán)的循環(huán)次數(shù)一般是事先預(yù)知的,將一個標志變量從某個起始值迭代到某個終止值后即結(jié)束。

循環(huán)控制

循環(huán)控制主要包括三種: pass 、 continue 、 break 。

pass 表示什么也不做,只是占一行代碼的位置;continue 表示立即退出本輪循環(huán),繼續(xù)執(zhí)行后續(xù)輪循環(huán);break 表示立即推出循環(huán),后續(xù)循環(huán)也不再執(zhí)行。

時間

在處理數(shù)據(jù)時,很多地方都會涉及到時間,例如數(shù)據(jù)產(chǎn)生的時間。

先介紹一下時間戳的概念,時間戳指的是從1970年1月1日0時0分0秒開始,到某一時刻所經(jīng)歷的秒數(shù),可以是整數(shù)或者小數(shù),后者的精度更高。

為什么需要時間戳這樣的一個概念?因為對于同一個時刻,不同人的描述可能不同,畢竟文本的形式千變?nèi)f化,而時間戳使得時間的表達得到了統(tǒng)一,每個時刻只能用唯一的整數(shù)或浮點數(shù)來表示,同時也便于計算時間差這樣的處理。

關(guān)于時間戳,最常用的處理便是時間戳和時間文本之間的轉(zhuǎn)換,例如將 2016年10月1日 10時0分0秒 轉(zhuǎn)為時間戳。

其中, %Y 、 %m 等都是時間字段,前者表示四位的年份,后者表示兩位的月份。

文件

文件操作包括向文件中寫內(nèi)容,以及從文件中讀內(nèi)容,使用 open() 打開一個文件。

異常

Python代碼中可能會出現(xiàn)一些可以預(yù)知的問題,例如字典訪問的key不存在。如果不加處理,發(fā)生問題的時候Python便會報錯并退出,可能之前跑了很久又要重頭再來。因此,我們需要對可能出現(xiàn)的異常進行捕捉和處理。異常的結(jié)構(gòu)由 try 、 except 、 else 、 finally 四部分組成。

函數(shù)

函數(shù)的作用是代碼模塊化,將可重用的代碼封裝成一個函數(shù),這樣在需要使用的時候就只需調(diào)用寫好的函數(shù)即可,而不用重新寫一遍代碼。

函數(shù)的使用包括兩個部分,函數(shù)的定義和函數(shù)的調(diào)用。除此之外,函數(shù)可以有一個或多個參數(shù),參數(shù)之間以逗號分開,為函數(shù)的功能提供更多的靈活性。

補充學習

以上所介紹的,都是Python中最基礎(chǔ)和最常用的內(nèi)容,先掌握這些就可以跟上后續(xù)章節(jié)。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }