Java人學(xué)Python,從入門到放棄

什么是 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)的韭菜黄痪。

Python is the best language

那么學(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)都不要去碰级遭。

Python

既然你已經(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人表示一臉懵逼。

  1. 縮進(jìn)空格數(shù)量可以為任意數(shù)量俏蛮,至少一個
  2. 同一代碼塊縮進(jìn)必須一樣撑蚌,否則報錯
著名的Python縮進(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與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ù)類型:

  1. 列表(List)是一種有序和可更改的集合秃励。允許重復(fù)的成員。
  2. 元組(Tuple)是一種有序且不可更改的集合吉捶。允許重復(fù)的成員夺鲜。
  3. 集合(Set)是一個無序和無索引的集合。沒有重復(fù)的成員呐舔。
  4. 詞典(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,迎娶白富美断箫,走上人生巔峰拂酣。

The END
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仲义,隨后出現(xiàn)的幾起案子婶熬,更是在濱河造成了極大的恐慌,老刑警劉巖埃撵,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赵颅,死亡現(xiàn)場離奇詭異,居然都是意外死亡暂刘,警方通過查閱死者的電腦和手機(jī)饺谬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谣拣,“玉大人商蕴,你說我怎么就攤上這事≈シⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵苛谷,是天一觀的道長辅鲸。 經(jīng)常有香客問我,道長腹殿,這世上最難降的妖魔是什么独悴? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮锣尉,結(jié)果婚禮上刻炒,老公的妹妹穿的比我還像新娘。我一直安慰自己自沧,他們只是感情好坟奥,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拇厢,像睡著了一般爱谁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孝偎,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天访敌,我揣著相機(jī)與錄音,去河邊找鬼衣盾。 笑死寺旺,一個胖子當(dāng)著我的面吹牛爷抓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阻塑,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蓝撇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叮姑?” 一聲冷哼從身側(cè)響起唉地,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎传透,沒想到半個月后耘沼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡朱盐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年群嗤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兵琳。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡狂秘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躯肌,到底是詐尸還是另有隱情者春,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布清女,位于F島的核電站钱烟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嫡丙。R本人自食惡果不足惜拴袭,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曙博。 院中可真熱鬧拥刻,春花似錦、人聲如沸父泳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惠窄。三九已至逝她,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間睬捶,已是汗流浹背黔宛。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人臀晃。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓觉渴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親徽惋。 傳聞我的和親對象是個殘疾皇子案淋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容