你為什麼用 Python?

時間 2021-05-06 03:51:59

1樓:許建國

我主要工作是平面設計,對於批量操作ps、ai、id,python是目前我所知最合適的:很方便從網路獲取資料,很方便從各種格式讀取資料,很方便呼叫imagemagick/ffmpeg/ghostscript/potrace/poppler等命令列工具,還有win32com可以直接操作adobe系軟體,opencv等可以處理影象,還能與inkscape/fontforge/processing/blender/c4d/rhino/ae等等協作,還能借用github上各種現成的指令碼沾沾人工智慧的光(比如文字識別、人臉識別、風格遷移、自動摳圖、自動去水印、自動填色、特徵點匹配拼接之類的)。

雖然目前adobe的御用指令碼語言是js,網上也更容易找到現成的js指令碼,但是要和外部軟體、外部資訊結合形成工作流,python確實是最香的。

2樓:修行路

因為我搞資料分析,會用到Python,為什麼用它,自然是因為很好用,不管是爬取資料,清理資料,還是輸入輸出資料,資料畫圖,都可以用Python,就還挺方便的。

如果你從來沒有用過Python的話,我覺得你可以試試Python,感受一下最簡單的程式語言有多好用,看看下面的鏈結吧,會為你開啟一扇新的世界,你會覺得很美好的。

其實我有時候也在想如果我不做資料分析會做什麼?當乙個作家嗎?網文作者嗎?

還是其他?我也不知道,其實我可能也不會一直當乙個資料分析師,我總覺得人生有很多的可能性,可以想做什麼就做什麼的。

但Python真正能做的事情也很有限,基本上就是下面這些,人工智慧,資料分析,自動化測試,爬蟲技術,Web開發。

但有一點其實是很關鍵的,Python很好,但是假如只會Python的話,就不好了。也就是說,你會了Python,並不能保證你有乙個光明的未來的。

就比如我是乙個資料分析師,但是假如我只會Python的話,基本上是沒有公司會要我的,公司需要的是既會業務又能做資料分析的人,如果你只會業務的化,倒還是可以做下運營,但假如你只會Python的話,就比較不好了。

其他的行業也是這樣,搞人工智慧,你要會那些複雜的演算法吧,還有那些經典的模型,你還得有學歷吧,學歷還不能不是名校吧,腦子還不能不好使吧...

所以很多會Python的人做的很好,但還有隱性的條件,那就是他們除了會Python還會其他的很多的東西,也許這部分有人觀察到了,也許沒有,那麼前者肯定會比後者更加敏銳。

不知道問這個問題的樓主用不用Python,可能正處於,知道了Python這個東西,對於學不學還在糾結階段吧,我覺得學不學都是可以的,因為反正光只會乙個Python也解決不了很多的問題,只能解決「你會Python」的這個問題。

剩下的問題,就要靠自己去分析,去觀察,去找答案了,那些隱性條件都得滿足,才能達到想要的結果。

很多人覺得社會複雜,因為很多隱性條件沒列出來,不想讀書的時候,努力學習總能有個不錯的條件,但社會上不一樣,很多事情非常複雜,很多問題都設定了隱性條件,而答案千奇百怪,變化多端。

其實我覺得社會反而會更有意思一點,它推崇正確的方法做正確的事情,事半功倍,很多人用錯誤的方法做正確的事情,事倍功半,還有人正確的方法做錯誤的事情,事倍功無。

怎樣學 Python?

3樓:strather

剛開始沒必要看書

也沒必要聽那些所謂的老手的建議

什麼學習路線的,那些都是扯淡的

沒什麼卵用的

為什麼呢?

因為想要提高你的水平,最重要的就是動手,實戰

你照著那些路線慢慢的學下去,學不了幾天,你的耐心就都被磨沒了

耐心都磨沒了,還學個屁

所以我的建議是,基本語法熟悉之後,直接去實戰

過程中遇到不懂的地方再去找答案,這樣你容易有成就感,也學的快

需要的話,我這裡有很多實戰的專案資料,有需要的可以找我來拿

參考下圖找我

l1 l2 l3 l4.

length l1 = length l2

(zip (l1,l2) = l3 ++ l4

l11 l12 l21 l22.

l1 = l11 ++ l12 ∧ l2 = l21 ++

l22 ∧ length l11 = length l3 ∧ length l21 = length l3 ∧

length l12 = length l4 ∧ length l22 = length l4 ∧

l3 = zip (l11, l21) ∧ l4 = zip (l12, l22))

Proof

Induct_on `l1` >> rw

>- metis_tac >>

Cases_on `l2` >> fs >> Cases_on `l3` >> fs

>- (eq_tac >> rw >> rw >> metis_tac [LENGTH_ZIP]) >>

eq_tac >> rw >> fs >> rw

>- (

qexists_tac `h::l11` >> rw >>

Cases_on `l11` >> Cases_on `l21` >> fs >> rw >> rfs >>

metis_tac

QEDl1 l2 l3 l4 x.

l1 ++ [x] ++ l2 = l3 ++ [x] ++ l4 /\

mem x l2 ∧ mem x l4

l1 = l3 ∧ l2 = l4

Proof

Induct_on `l1`

>- (rw >> Cases_on `l3` >> fs >> rfs ) >>

rpt gen_tac >>

Cases_on `l3`

>- (simp_tac (srw_ss()) >> CCONTR_TAC >> fs >> rw >> fs ) >>

simp_tac (srw_ss()) >> metis_tac

QEDl1 l2 l3 l4 x y.

l1 ++ [x] ++ l2 = l3 ++ [y] ++ l4 /\

length l2 = length l4

l1 = l3 ∧ x = y ∧ l2 = l4

Proof

Induct_on `l1` >-

(rw >> Cases_on `l3` >> fs >> rw >> fs ) >>

rpt gen_tac >> Cases_on `l3`

>- (simp_tac (srw_ss()) >> CCONTR_TAC >> fs >> rw >> fs ) >>

simp_tac (srw_ss()) >> metis_tac

QED(* ----- Theorems about log ----- *)

Theorem mul_div_bound:

m n. n ≠ 0 m - (n - 1) ≤ n * (m DIV n) ∧ n * (m DIV n) ≤ m

Proof

rw >>

`0 < n` by decide_tac >>

drule DIVISION >> disch_then (qspec_then `m` mp_tac) >>

decide_tac

QEDTheorem exp_log_bound:

b n. 1 < b ∧ n ≠ 0 n DIV b + 1 ≤ b ** (log b n) ∧ b ** (log b n) ≤ n

Proof

rw >> `0 < n` by decide_tac >>

drule LOG >> disch_then drule >> rw >>

fs [ADD1, EXP_ADD] >>

simp [DECIDE ``x y. x + 1 ≤ y x < y``] >>

`x. b = Suc x` by intLib.COOPER_TAC >>

`b * (n DIV b) < b * b ** log b n` suffices_by metis_tac [LESS_MULT_MONO] >>

pop_assum kall_tac >>

`b ≠ 0` by decide_tac >>

drule mul_div_bound >> disch_then (qspec_then `n` mp_tac) >>

decide_tac

QEDTheorem log_base_power:

n b. 1 < b log b (b ** n) = n

Proof

Induct >> rw [EXP, LOG_1] >>

Cases_on `n` >> rw [LOG_BASE] >>

first_x_assum drule >> rw >>

simp [Once EXP, LOG_MULT]

QEDTheorem log_change_base_power:

m n b. 1 < b ∧ m ≠ 0 ∧ n ≠ 0 log (b ** n) m = log b m DIV n

Proof

rw >> irule LOG_UNIQUE >>

rw [ADD1, EXP_MUL, LEFT_ADD_DISTRIB] >>

qmatch_goalsub_abbrev_tac `x DIV _` >>

drule mul_div_bound >> disch_then (qspec_then `x` mp_tac) >> rw

>- (

irule LESS_LESS_EQ_TRANS >>

qexists_tac `b ** (x+1)` >> rw >>

unabbrev_all_tac >>

simp [EXP_ADD] >>

`b * (m DIV b + 1) ≤ b * b ** log b m`

by metis_tac [exp_log_bound, LESS_MONO_MULT, MULT_COMM] >>

`m < b * (m DIV b + 1)` suffices_by decide_tac >>

simp [LEFT_ADD_DISTRIB] >>

`b ≠ 0` by decide_tac >>

`m - (b - 1) ≤ b * (m DIV b)` by metis_tac [mul_div_bound] >>

fs )

>- (

irule LESS_EQ_TRANS >>

qexists_tac `b ** (log b m)` >> rw >>

unabbrev_all_tac >>

metis_tac [exp_log_bound])

QED(* ----- Theorems about word stuff ----- *)

Theorem l2n_padding:

ws n. l2n 256 (ws ++ map w2n (replicate n 0w)) = l2n 256 ws

Proof

Induct >> rw [l2n_def] >> fs [map_replicate] >>

Induct_on `n` >> rw [l2n_def]

QEDTheorem l2n_0:

l b. b ≠ 0 ∧ every ($> b) l (l2n b l = 0 every ($= 0) l)

Proof

Induct >> rw [l2n_def] >>

eq_tac >> rw

QEDTheorem mod_n2l:

d n. 0 < d map (λx. x MOD d) (n2l d n) = n2l d n

Proof

rw >> drule n2l_BOUND >> disch_then (qspec_then `n` mp_tac) >>

qspec_tac (`n2l d n`, `l`) >>

Induct >> rwQED

你為什麼用LaTeX

TravorLZH 最開始的需求我想把我的數學知識成H5,於是就需要裝乙個MathJax來顯示公式。從此以後就接觸了很多的LaTeX。再者,我發現LaTeX做出來的PDF非常的精美,於是就在很多場景下使用LaTeX而不是word了 ok不提交 為了方便傳播吧,LaTeX個頭更小,對機器配置要求也低得...

你為什麼用 Windows Phone?

坦白說因為做WP開發,公司配了乙個WP測試機。平時從來不用,一直都是iphone Nexus。坦白說用WP是工作,也只能是工作。iPhone 和 android的phone 才是這個時代真正意義上的手機,WP只是標榜自己的工具而已。 主力機Z3C,前段時間買了臺640充值信仰 我對這貨唯一的不滿就是...

不做程式設計工作,學習python有什麼用?

速賣通上架產品,有很多國家可以進行區域定價,但是定價需要根據不同的重量區分單價,有的產品還有很多尺寸,手算一天也做不了幾個東西,用python寫好後,就是按個f5就算完了,複製到excel就可以用了。 假如你是個會計,有大量的資料包表需要操作 有大量資料需要統計,這個時候,python的辦公自動化能...