寫在前面的話
不知不覺畢業已經三年多了,如今的工做中,極少涉及代碼的工做。主要接觸的項目是BI的建設,作的更多的相似產品經理的工做,或者比較初級的數據分析的工做。
由於沒有美工和測試小夥伴,因此還額外承包了這兩項工做的我,偶爾也能接觸到代碼,好比echarts的使用,好比sql語句的編寫。除此以外,有時候還有視頻製做和文案撰寫的工做。總體來講,整個工做生涯算是比較「充實」,什麼都嘗試過,因此在即將四週年的時候,我想,我該作點改變,再不瘋狂我就老了。
考慮過文案策劃及後期製做的工做,可是考慮到三年累計的工做經驗,且屈服於現實的情況,我仍是選擇繼續數據分析的工做,或許這個轉折也挺生硬的,並且我其實更喜歡作後期製做的工做(例如明星大偵探裏有毒的後期),可是當我作下了這個決定,我就準備努力衝啦!
我不懼怕可能會有複雜的困難,我只懼怕本身未曾努力,而後在老了以後才追悔莫及。
畢竟,我已經丟了三年。
因此,不管如何,加油吧!python
因此下面是認真開始學習的正文
數據分析,我決定從python入手,主要的學習途徑是廖雪峯的官方網站。sql
這一步能夠跳過,由於以前就已經嘗試安裝過。windows
不管如何,hello world!安全
print('hello world!')
執行.py文件只能在命令行模式下執行。
在windows下不能直接運行.py文件,可是,在Mac和Linux上是能夠的,方法是在.py文件的第一行加上一個特殊的註釋:網絡
#!/usr/bin/env python3 print('hello, world')
而後,經過命令給hello.py以執行權限:app
$ chmod a+x hello.py
就能夠直接運行hello.py了。(然鵝,如今並無Mac,攤手)echarts
print()函數能夠接受多個字符串,用逗號「,」隔開,就能夠連成一串輸出,遇到逗號「,」會輸出一個空格。
input()函數用於輸入,在輸入的同時,在變量中存儲了輸入的參數。
input()能夠顯示字符串來提醒用戶。
編輯器
python的註釋是用#,使用縮進方式的語法,當以:結尾時,視爲代碼塊。
按照約定俗成的管理,應該始終堅持使用4個空格的縮進。函數
請務必注意,Python程序是大小寫敏感的,若是寫錯了大小寫,程序會報錯。
整數、浮點數、字符串。學習
若是字符串裏面有不少字符都須要轉義,就須要加不少,爲了簡化,Python還容許用r''表示''內部的字符串默認不轉義
若是字符串內部有不少換行,用n寫在一行裏很差閱讀,爲了簡化,Python容許用'''...'''的格式表示多行內容,注意在輸入多行內容時,提示符由>>>變爲...,提示你能夠接着上一行輸入,注意...是提示符,不是代碼的一部分。
布爾值 使用and or not 計算。
空值 None 但不等同與0,由於0是有意義的。
變量 能夠是任意數據類型,也能夠重複賦值。
| 動態語言和靜態語言的區別。靜態語言在定義變量時候必須指定變量類型(eg:Java)。
| 理解變量在內存中的表示。
常量 Python中,一般用大寫的變量名錶示常量。
| 除法 地板除 求餘數
10 / 3 不管除數與被除數是否爲整數,結果都爲浮點數 10 // 3 只取結果的整數部分 10 % 3 得出餘數
對於單個字符的編碼,Python提供了ord()函數獲取字符的整數表示,chr()函數把編碼轉換爲對應的字符。
因爲Python的字符串類型是str,在內存中以Unicode表示,一個字符對應若干個字節。若是要在網絡上傳輸,或者保存到磁盤上,就須要把str變爲以字節爲單位的bytes。
ython對bytes類型的數據用帶b前綴的單引號或雙引號表示
x = b'ABC' y = 'ABC'
x與y是不一樣的,x是字節型的,y是str,x的每一個字符只佔用一個字節
純英文的str能夠用ASCII編碼爲bytes,內容是同樣的,含有中文的str能夠用UTF-8編碼爲bytes。含有中文的str沒法用ASCII編碼,由於中文編碼的範圍超過了ASCII編碼的範圍,Python會報錯。
在bytes中,沒法顯示爲ASCII字符的字節,用x##顯示。
反過來,若是咱們從網絡或磁盤上讀取了字節流,那麼讀到的數據就是bytes。要把bytes變爲str,就須要用decode()方法。
若是bytes中包含沒法解碼的字節,decode()方法會報錯。
若是bytes中只有一小部分無效的字節,能夠傳入errors='ignore'忽略錯誤的字節。
len()函數計算的是str的字符數,若是換成bytes,len()函數就計算字節數。
1箇中文字符通過UTF-8編碼後一般會佔用3個字節,而1個英文字符只佔用1個字節。
爲了保證源文件以utf-8讀出,須要在開頭註釋:
#!/usr/bin/env python3 ---告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋; # -*- coding: utf-8 -*- ---告訴Python解釋器,按照UTF-8編碼讀取源代碼,不然,你在源代碼中寫的中文輸出可能會有亂碼。
若是要保證源文件是utf-8編碼,須要在編輯器中進行設定。
格式化
%和format()
| list爲有序集合。是使用方括號的朋友
| 用len()能夠獲取元素個數。索引從0開始,最後一個元素的索引爲len(list)-1。獲取最後一個元素,還能夠用-1做爲索引,直接得到最後一個元素。
| list爲可變的有序表,能夠append()追加元素到末尾;能夠insert()到指定位置;能夠pop()刪除最末尾元素,參數能夠爲i,即索引位置;能夠直接賦值給對應的索引位置list[i] = value;內裏的元素類型也能夠各自不一樣,或者爲另外一個list。當list裏面啥都沒有的時候,len(list)輸出爲0。
| tuple->元祖,一旦初始化就不能修改。由於不可變,因此更安全。是使用圓括號的朋友
定義一個只有1個元素的tuple,要使用(1,),加上逗號,不產生歧義,不然可能會誤認爲數學計算。
t = (1,)
理解「可變的tuple」
>>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])
其實變化的是tuple裏的list的指向,因此並非tuple自己發生了變化。