什么是 Python糯彬?
Python 是一門流行的編程語言。它由荷蘭數(shù)學(xué)和計算機(jī)科學(xué)研究學(xué)會的 吉多·范羅蘇姆(Guido van Rossum)創(chuàng)建葱她,并于 1990 年發(fā)布撩扒。它用于:
- Web 開發(fā)(服務(wù)器端)
- 軟件開發(fā)
- 數(shù)學(xué)
- 系統(tǒng)腳本
- 數(shù)據(jù)分析
- 人工智能
Python 可以做什么?
- 可以在服務(wù)器上使用 Python 來創(chuàng)建 Web 應(yīng)用程序吨些。
- Python 可以與軟件一起使用來創(chuàng)建工作流搓谆。
- Python 可以連接到數(shù)據(jù)庫系統(tǒng)。它還可以讀取和修改文件豪墅。
- Python 可用于處理大數(shù)據(jù)并執(zhí)行復(fù)雜的數(shù)學(xué)運算泉手。
- Python 可用于快速原型設(shè)計,也可用于生產(chǎn)就緒的軟件開發(fā)偶器。
為何選擇 Python斩萌?
- Python 適用于不同的平臺(Windows、Mac屏轰、Linux颊郎、Raspberry Pi 等)。
- Python 有一種類似于英語的簡單語法霎苗。
- Python 的語法允許開發(fā)人員用比其他編程語言更少的代碼行編寫程序姆吭。
- Python 在解釋器系統(tǒng)上運行,這意味著代碼可以在編寫后立即執(zhí)行唁盏。這也意味著原型設(shè)計可以非衬诶辏快。
- Python 可以以程序方式厘擂、面向?qū)ο蟮姆绞交蚬δ芊绞絹硖幚怼?/li>
===== 以上是關(guān)于Python的簡單介紹 =====
Hello World答倡,他來了
在Java打印Hello World
public class MyClass {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
你需要了解:
- 面向?qū)ο蟮幕局R
- 靜態(tài)函數(shù)
- 參數(shù)
- 不要忘了打分號和大括號
- 方法返回值
- 數(shù)組
在 C++里面打印Hello World
#include <iostream>
int main() {
std::cout << "Hello World!";
return 0;
}
你需要了解:
- 如何導(dǎo)入標(biāo)準(zhǔn)庫
- 函數(shù)返回值
- 不要忘了打分號
- 數(shù)據(jù)類型
在Python里面打印Hello World
print("Hello World!")
你需要了解:
- 了解什么?我現(xiàn)在是Python程序員了驴党!
再加上這幾行
import numpy as np
import pandas as pd
import torch
- 編程簡直太簡單了,我會數(shù)據(jù)科學(xué)和深度學(xué)習(xí)了获茬!
好了港庄,你現(xiàn)在已經(jīng)是Python高級工程師了倔既。
那么,Python的廣告你刷到了嗎鹏氧?
最近無論是刷D音還是逛W博渤涌、PY圈,鋪天蓋地的Python廣告把还,這個真的很厲害值得一學(xué)嗎实蓬?下面我們將從一個Java程序員的身份來一探究竟。
下面是關(guān)于Python的民間傳說吊履,切勿對號入座安皱。
鋪天蓋地宣傳python,這種情況艇炎,基本可以認(rèn)定是因為教Python比較容易酌伊。
要是換成C++這種(沒幾個人敢說自己真懂C++)語言,你甚至都沒法培訓(xùn)出足夠水平的講師缀踪,那顯然就沒必要為C++做廣告了居砖。
目前行業(yè)形式來看,培訓(xùn)機(jī)構(gòu)的講師工資總體水平并不高驴娃,至少是明顯低于程序員的奏候。由于教課確實收入相對偏低,但凡一個技術(shù)真的特別特別能賺錢唇敞,那些真有本事的都忙著賺錢去了蔗草,哪有工夫出來講課啊。
反觀之厚棵,如果一個技術(shù)有大量的老師出來教課蕉世,那很可能說明它的賺錢能力并沒有那么靠譜,以至于教課比自己在軟件公司敲代碼來得更劃算婆硬。
再比如狠轻,網(wǎng)上教人炒股的特別特別特別的多,然而很多教人炒股的大抵都是自己盤面虧成狗彬犯,然后靠教課薦股賺得盆滿缽滿的向楼。
為什么還是有很多人沖的頭破血流也要學(xué)Python呢?
1.噱頭:人工智能谐区、自動駕駛湖蜕、大數(shù)據(jù)分析、網(wǎng)絡(luò)爬蟲宋列,一大堆熱門技術(shù)昭抒、高薪職業(yè)都沾邊。
2.甜頭:通過調(diào)幾個庫,就能把數(shù)據(jù)爬下來灭返,就能做人臉識別盗迟,成就感滿滿。
并且某地區(qū)傳出編程納入考試熙含,在社會發(fā)酵發(fā)酵罚缕,最后鋪天蓋地打廣告,讓你覺得大家都在學(xué)怎静。
萬事具備坦胶,最后你就成了培訓(xùn)機(jī)構(gòu)的韭菜黄痪。
那么學(xué)Python真的沒用嗎?當(dāng)然有用!但廣告那種建議你別碰漩氨。
首先藐吮,因為Python被選為人工智能的編程語言器虾,那么這里就有一個商機(jī)了朵锣,人人都知道人工智能是未來趨勢發(fā)展之一,這時候就可以無限吹大Python了氯材,其實只要是稍微滲透些IT行業(yè)的程序員都知道:C++才是人工智能的核心語言渣锦,大數(shù)據(jù)主要還是Java,Python只是個膠水語言氢哮。
其次袋毙,辦公操作如果你有學(xué)過VBA的話就知道誰更好用了,顯然是VBA更好冗尤,哦哦還有就是Python連一個小學(xué)三年級的學(xué)生都能學(xué)會听盖,簡單易學(xué),加上人性貪婪(廣告說工資超級高A哑摺)與懶惰(廣告說超級簡單實用=钥础)商機(jī)啊,利用人性的弱點就可以騙錢了1沉恪Q鳌!合法經(jīng)營徙瓶,沒偷沒搶毛雇,學(xué)完找不到工作的話就是你沒認(rèn)真學(xué),競爭激烈侦镇,加油之類的話灵疮,呵呵呵→_→老師,Python這么好壳繁,你怎么不去找那份超級高工資的工作呢震捣?荔棉!
學(xué)Python,除非你的專業(yè)是生物之類的蒿赢,只是把Python當(dāng)做輔助工具江耀,否則別光調(diào)用庫,還要看看庫的源碼诉植,看看他們是怎么實現(xiàn)。
搞Python的基本可以分為兩類人:數(shù)據(jù)分析和人工智能
一般人做不了人工智能昵观,大多數(shù)人都是奔著做數(shù)據(jù)分析去的晾腔,像爬蟲、可視化啊犬、數(shù)據(jù)采集這種灼擂。不得不說Python在這方面確實很優(yōu)秀,畢竟是萬能的膠水語言嘛觉至,庫很多很方便剔应,拓展性和嵌入型都很不錯,更重要的是比較簡單语御,應(yīng)該說非常簡單峻贮,當(dāng)做一個支撐性的工具是很不錯的。
所以對于這些Python廣告应闯,還是要結(jié)合自身的需求:想做個程序員纤控,Java、PHP碉纺、C++哪個不比Python強船万?想做個數(shù)據(jù)分析師,Python可以當(dāng)做支撐工具骨田,但這不是重點耿导。想去搞人工智能,深度學(xué)習(xí)的态贤,這種大神不用我建議了舱呻,You are good!
當(dāng)然抵卫,你非要學(xué)習(xí)Python的話我也攔不住你狮荔,畢竟行行出狀元,也許你就是那個狀元呢介粘?對吧殖氏。物以稀為貴,東西多了也就賤了姻采。
什么人比較適合學(xué)Python雅采?
Python是一個適合初學(xué)者,見效短平快的語言,有大量的庫支持從爬蟲到各類識別的各種功能婚瓜,十分適合快速構(gòu)建應(yīng)用程序宝鼓,特別適合非計算機(jī)專業(yè)極速入門做一些快應(yīng)用。
但是這個語言在寫大型程序方面巴刻,不光是效率不行愚铡,是根本很難寫出嚴(yán)格而優(yōu)雅的程序。嚴(yán)格的語法胡陪,嚴(yán)格的檢查沥寥,在大型程序開發(fā)領(lǐng)域是非常重要的,但是這些Python都沒有柠座,并且Python都不需要編譯R匮拧!妈经!
對非職業(yè)程序員來說淮野,可以便利你現(xiàn)有的工作(自動化辦公之類),和提升自己能力(畢竟是趨勢吹泡,將來社會骤星,不會編程基本算半文盲)。
補充一點荞胡,想學(xué)Python妈踊,先網(wǎng)上找資料自學(xué),花錢很少泪漂。自學(xué)不會的廊营,想做程序員工作的,就必須報班了萝勤,報班就報線下班露筒,線上班和自己看視頻自學(xué)沒區(qū)別。線下班有好的敌卓,但大部分都是坑爹騙錢的要注意甄別慎式。
當(dāng)然我們也不能光從程序員的角度來看Python,那太狹隘了趟径。很多科研人員瘪吏、搞算法的,用Python實現(xiàn)算法原型并測試蜗巧,效率很高掌眠。Python肯定是一門優(yōu)秀的語言,但是被太多不良培訓(xùn)機(jī)構(gòu)搞臭了幕屹。
還是那句話蓝丙,廣告里面的Python培訓(xùn)都不要去碰级遭。
既然你已經(jīng)看到這里了,那么我們就來簡單認(rèn)識認(rèn)識Python吧渺尘。
以下內(nèi)容基于Python 3.7.4 編寫挫鸽,如與新版本有差異,請參考新版本文檔鸥跟。
如果你是一名純新手丢郊,送你一個好東西:https://www.w3school.com.cn/python/index.asp
Python安裝
1.MacOS 系統(tǒng)自帶Python,可在Terminal內(nèi)輸入 python 或者 python3 查看版本(分別表示2.x和3.x)医咨,如果沒有python3蚂夕,建議自行安裝python3
2.Windows安裝Python3請查看官方文檔,傳送門:https://docs.python.org/zh-cn/3/using/windows.html
注:如果是初學(xué)腋逆,建議直接上最新版本,沒有必要再去看Python2了
Python開發(fā)工具
IntelliJ IDEA全家桶之 PyCharm 傳送門:https://www.jetbrains.com/zh-cn/pycharm/
1.語法
Python不需要用分號(;)或者大括號({})來區(qū)分代碼和代碼塊侈贷,換行和縮進(jìn)是Python區(qū)分代碼塊的方式惩歉,Java人表示一臉懵逼。
- 縮進(jìn)空格數(shù)量可以為任意數(shù)量俏蛮,至少一個
- 同一代碼塊縮進(jìn)必須一樣撑蚌,否則報錯
2.類型
Python 沒有類型,通過一段代碼理解一下:
Java
String str = "Hello world";
str 是變量名稱搏屑,String(字符串) 是變量的類型争涌,確定類型后,str只能接受String類型的值辣恋,如果你這樣寫:
str = 123;
程序編譯時就會報錯亮垫,并告訴你不能把數(shù)字類型的值賦給一個字符串類型的變量
Python
str = "Hello World"
str = 123
str = 1.0
Python這樣寫是完全沒有問題的,這就是沒有類型伟骨,一個變量可以隨賦值改變類型饮潦。這就是Python的不嚴(yán)謹(jǐn)性。為什么Python可以這樣寫携狭,Java就不行呢继蜡?是Python更高級嗎?看圖說話:
Java:在聲明變量的時候逛腿,會為其分配一個內(nèi)存空間稀并,無論如何修改,這個內(nèi)存空間不會改變单默。
Python:在聲明變量的時候碘举,也會為其分配一個內(nèi)存空間,在修改值的時候雕凹,原內(nèi)存空間銷毀殴俱,重新分配一個新的內(nèi)存空間政冻。雖然你的感覺是在修改原變量,其實Python每次都是為你新建了一個變量线欲,所以變量的類型可以隨意改變明场。
3.開始你的第一個Python程序
print("Hello world")
恭喜你,你的第一個Python程序已經(jīng)完成了李丰。
這里Java人需要注意一下苦锨,Python不需要class,也不需要main方法趴泌,你只需要在yourfile.py文件里寫上這句代碼舟舒,然后點擊IDE的run按鈕,程序就能運行了嗜憔。Amazing
4.變量
Java
String str = "我是字符串";
int i = 1;// 整數(shù)
float f = 1.0;// 普通浮點數(shù)
double d = 1.0;// 高精度浮點數(shù)
boolean b = true;// 布爾值
Python
str = "我是字符串"
i = 1 # 整數(shù)
f = 1.0 # 普通浮點數(shù)
b = True # 布爾值
注:Python的注釋是使用#號
5.方法(函數(shù))
Java
public static void main(String[] args) {
showMsg("Hello Java!!");
}
private static void showMsg(String msg) {
System.out.println("msg = " + msg);
}
Python
def showMsg(msg):
print("msg = " + msg)
showMsg("Hello Python")
# 輸出
msg = Hello Python
6.集合數(shù)據(jù)
Python 中有四種集合數(shù)據(jù)類型:
- 列表(List)是一種有序和可更改的集合秃励。允許重復(fù)的成員。
- 元組(Tuple)是一種有序且不可更改的集合吉捶。允許重復(fù)的成員夺鲜。
- 集合(Set)是一個無序和無索引的集合。沒有重復(fù)的成員呐舔。
- 詞典(Dictionary)是一個無序币励,可變和有索引的集合。沒有重復(fù)的成員珊拼∈成耄可以理解成Java的HashMap,其實更像JSON澎现。
# 我是列表
mList = ["A", "B", "C", "B", "A"]
# 我是元組
mTuple = ("A", "B", "C", "B", "A")
# 我是集合(無序且自動去重)
mSet = {"A", "B", "C", "B", "A"}
# 我是詞典(我感覺我是JSON)
mDictionary = {
"java": {
"name": "高斯林",
"year": 1995
},
"python": {
"name": "吉多·范羅蘇姆",
"year": 1990
}
}
# usage
print(mDictionary.get("java").get("name"))
# 輸出
高斯林
7.if elif else
Java
private static void testEqual() {
int a = 200;
int b = 66;
if (a > b) {
System.out.println("a > b");
} else if (a == b) {
System.out.println("a = b");
} else {
System.out.println("a < b");
}
}
Python
a = 200
b = 66
if a > b:
print("a > b")
elif a == b:
print("a = b")
else:
print("a < b")
# 輸出
a > b
1.Java的邏輯代碼必須寫到方法體內(nèi)
2.Python可以寫到任意你想寫的地方
8.for循環(huán)
Java
private static void readList() {
List<String> list = Arrays.asList("A", "B", "C", "B", "A");
for (String letter : list) {
System.out.println("letter is " + letter);
}
}
// 輸出
letter is A
letter is B
letter is C
letter is B
letter is A
Python
mList = ["A", "B", "C", "B", "A"]
for letter in mList:
print("letter is " + letter)
# 輸出
letter is A
letter is B
letter is C
letter is B
letter is A
9.遞歸
Python 也接受函數(shù)遞歸仅胞,這意味著定義的函數(shù)能夠調(diào)用自身。
遞歸是一種常見的數(shù)學(xué)和編程概念剑辫。它意味著函數(shù)調(diào)用自身饼问。這樣做的好處是可以循環(huán)訪問數(shù)據(jù)以達(dá)成結(jié)果。
開發(fā)人員應(yīng)該非常小心遞歸揭斧,因為它可以很容易地編寫一個永不終止的莱革,或者使用過量內(nèi)存或處理器能力的函數(shù)。但是讹开,在被正確編寫后盅视,遞歸可能是一種非常有效且數(shù)學(xué)上優(yōu)雅的編程方法。
例子:使用遞歸打印99乘法表
def calc99Tab(row, col):
if row > 1:
if col > 1:
calc99Tab(row, col - 1)
else:
calc99Tab(row - 1, row - 1)
result = row * col
if result < 10:
# 增加空格輸出旦万,使表格對齊
msg = " {}x{}={}"
else:
msg = "{}x{}={}"
print(msg.format(col, row, result), end=" ")
if col == row:
print("")
# 打印99乘法表
calc99Tab(9, 9)
# 輸出:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
如果你是一名在職程序員闹击,并且對Python有濃厚的興趣,建議利用業(yè)余時間自學(xué)成艘,技多不壓身赏半,祝你早日成為全棧工程師贺归,出任CTO,迎娶白富美断箫,走上人生巔峰拂酣。