Python 板


LINE

※ 引述《sagwow (不是我)》之銘言: : 菜鳥我在學Python時,有個最大的疑惑就是: : "為什麼有些函數需要有東西去接,有些不用?" : 另外,在學這些函數時有方法知道到底要不要用=嗎? : 還是只能看範例照做,或是看說明文件了?
1F:推 vfgce: 這個只能背了,函數式程式設計的精神是不做inplace修改,但 12/28 07:55
2F:→ vfgce: 結果就是記憶體用量大增,而傳統程式則是看你怎麼寫,大部分 12/28 07:56
3F:→ vfgce: 情況下為了省記憶體,且確定資料不需保留後面使用,就會做 12/28 07:58
4F:→ vfgce: inplace條改,所以你只能記那些回傳,那些是inplace修改... 12/28 07:59
5F:→ vfgce: R採用函數式程式設計,所以所有函數都回傳不修改原值.所以 12/28 08:01
6F:→ vfgce: 不用特別記,傳進去的東西不會被改. 而python就看程式怎麼寫 12/28 08:02
7F:→ vfgce: 有些會修改傳入資料,有些是不修改回傳新的..只能用記的 12/28 08:03
8F:推 henry8168: 哭哭,我寫程式寫很久也是有這種疑問 O_Q 12/29 09:04
9F:推 clsmbstu: 我也是初學者 這超困擾我... 12/29 15:09
10F:→ clsmbstu: 而且有時候明明就只是想玩一下,不想修改原物件,反而還 12/29 15:13
11F:→ clsmbstu: 要多做一次.copy 12/29 15:13
12F:→ clsmbstu: function vs. method對我來說也是莫名其妙 QQ 12/29 15:16
13F:→ clsmbstu: R的method就會掛在function 再讓function吃該data type 12/29 15:18
14F:→ clsmbstu: 不會有len(list) vs. list.sort() 卻沒有sort(list) 12/29 15:21
15F:推 Sunal: 有C的指標概念應該好理解吧 只是沒接觸過的話就是要硬記了 12/29 15:35
先說結論, 以 Python 內建函式而言, 其實哪個要怎麼用很有邏輯, 只是看不看得出來 英文母語使用者應該會覺得這非常直覺, 英文不好的話也有幾個簡單識別方法 首先你要考慮這個函式的結果和函式附著的東西是不是類似 這邊類似的意思是有點直覺上的意義 舉例而言 >>> s = 'foo bar rex' >>> s.split(' ') 這個 split 的目的是把一個 str 分成很多個 Split 附著在 str 上, 但是輸出是很多個 str (實際上是 list), 這就叫不類似 所以 split 會回傳一個新東西, 和 s 無關 >>> a = ['Apple', 'Banana'] >>> a.append('Citron') 這裡 append 是把東西塞到 a 的最後面 被附著的是 a, 輸出...就是原本那個 a, 只是最後多了一個東西, 這就是類似 所以 append 不會回傳任何東西, 因為你用本來那個 a 就好 接下來是全域函式 全域函式因為沒有被附著在任何東西上, 所以都得回傳東西 所以 len 永遠都會回傳, sorted 也是同樣的道理 因為理解上不同, 全域函式的名字也會和附著在東西上面的有點不一樣 len # 名詞, length 的縮寫, len(s) 可以理解成 s 的 length sorted # 形容詞, sorted(a) 理解成 a 的 sorted (的變化) s.split # 動詞, 理解成去 split s 這個東西 a.sort # 動詞, 理解成去 sort s 這個東西 其他可以自己類推 所以只要記得那個動作的對應英文詞, 就可以猜函式名稱 再根據函式名稱與動作的意義, 去推得那個函式的使用方法 最後一個問題是, 為什麼 append 是附著在 list 上, 但是 len 卻是全域 這就牽涉到這個動作到底廣不廣泛 Append 基本上只對 list 有用, 把它放在全域太浪費了, 所以附在 list 上面 另一方面長度這個概念很多東西都有, 在每個類型上實作太麻煩, 所以直接全域[1] [1]: 這有點算 Python 的特例, 很多現代語言是把 len 用繼承的放在類型上 但是 Python 剛開始發展的時候並沒有現代的繼承概念, 沒辦法這麼做 全域名稱用掉就沒有了, 所以 Python 也會盡量避免新增, 盡量找其他合理方案 只有像 len sorted 這些沒有更好寫法的才會這樣用 所以有 list.append(), 但是卻沒有這種函式 >>> a = ['Apple', 'Banana'] >>> appended(a, 'Citron') # Does not work. 因為可以用加法取代, 反正這個運算符在 list 上也沒什麼其他好用法 >>> b = a + ['Citron'] >>> b ['Apple', 'Banana', 'Citron'] >>> a ['Apple', 'Banana'] 其實學語言一開始都是這樣, 你都不知道為什麼要這樣命名, 感覺就只能背 但是學了一陣之後如果你有認真思考, 就會開始發現後面的邏輯 接下來就能真的開始學會這個語言 學程式的時候重點不是背, 而是想辦法知道背後的道理 只有當你懂了道理, 才能開始在面對之前沒看過的問題時, 該怎麼處理 當然這不是永遠行得通, 有些語言或者函式庫本身就是沒什麼道理 但幸好 Python 至少在內建函式上還是很有道理的, 所以才說很適合程式初學者 當你學會了 Python 的道理, 也就學會了找道理的方法, 就更容易學其他程設能力 也才能分辨什麼東西其實沒有道理, 不會傻傻的想搞懂它 -- 「我最想要的同伴嘛,首先是要笑口常開,其次是我們能永遠不會發生誤會。 如果這些都能辦到的話,嗯,如果他是世界上第一流的橋手,也還不錯。」 -- 班尼多‧加羅素,前義大利藍隊成員 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.19.12
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1514546205.A.FEE.html
16F:→ clsmbstu: 謝謝你的說明!我覺得有稍微清楚一點~ :D 12/29 21:18
17F:→ clsmbstu: 也想請教如果想獲得關於Python內建函式,或是scoping 12/29 21:20
18F:→ clsmbstu: rules等知識,有什麼推薦的書或線上資源/課程嗎? 12/29 21:21
19F:→ clsmbstu: 也許作為Python的初學者無法全看懂,但我想邊學邊理解 12/29 21:22
20F:推 clsmbstu: 主要還是想慢慢了解這語言背後的邏輯,不然頂多只是會用 12/29 21:37
21F:→ clsmbstu: 卻不知道為什麼這樣用 12/29 21:37
22F:→ mikapauli: python documentation 12/29 22:31
23F:→ mikapauli: IDLE > Help > Python Docs 12/29 22:35
24F:→ mikapauli: 裡面的Language Reference和Library Reference 12/29 22:35
25F:→ mikapauli: 和Python HOWTOs 12/29 22:38
26F:推 pups003: 用久就會啦 12/30 00:17
27F:推 stoltzman: 解釋的很清楚!原來是這樣看的! 12/30 08:21
28F:推 henry8168: 看完覺得好懂多了,推推 01/02 21:06







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP