标签为“python3”的页面如下
Python在3.6後幾個便利的新變化
前言
這幾天又看了/試了不少東西喔。雖然也開始往下一個階段進行, 但興趣的事情,還是添加不少東西能來寫下隨筆。
這次的話題與前幾篇–JShell?-程式語言越來越像Lisp有關。 在那篇我留下了不少以後可能回來談談的話題,包含:
- JAVA版本之謎。
- 為什麼不使用LISP?
關於第一點,我打算去編譯看看幾個我挺喜歡的軟體再來說說感想, 但幾日前在Medium看到一篇文章。裡面有張圖片這麼形容JAVA:
JAVA騎士要去救城堡裏的公主,他很快的完成裝備前往救援,但是 他發現竟然有兩個 不同版本的城堡,重點是裡面沒有公主 。
Python 3.6之後LAG覺得有用的幾個新特性
已經忘記原因了齁,但數天前又LAG跑去看Python Whtat's news。 今天來分享幾個又LAG覺得非常有用的新特性。
不過很可惜的,又LAG主要的電腦還停留在 Python 3.5.2
。要更新到新版本需要自行編譯,還好目前沒有這樣特別的需求,
並且筆電與虛擬機都是使用 3.6
或之後的版本,可以說如果你是安裝
Ubuntu 16.04
之後或其衍生版,應該內建的都是 3.6
之後的版本了。
至於Windows的用戶應該可以直接在官網下載安裝包。
實現Python裏面的classmethod和staticmethod
在Python裏面存在著兩個用於定義物件方法的內建函式(built-in function) – classmethod
和staticmethod
。其實我一開始在學的時候根本沒用過他們(´・ω・`),先不管他們常不常用,雖然應該就是常用所以才會被放進內建函式,不過因爲常見的特殊語法–修飾器,使得隨後定義的方法與實際作用變得不同,常讓初學的人摸不著頭緒。今天就來以實現說說這兩個函式。
預備知識
首先你要先有基本的Python概念。接著最好已經很瞭解 修飾器 的作用。如果不瞭解修飾器,強烈建議先閱讀函式修飾器。 雖然本文在最後也爲實現一個相似於修飾器的函式版本 – [wrap](#修飾器的作用與實現 – wrap) ,不過其又涉及到其他知識,並不建議直接閱讀。
Check List
- 我瞭解最基本Python
- 我知道Python裏面修飾器的作用
實現classmethod和staticmethod – MyClassmethod, MyStaticmethod
在實現之前,必須先瞭解classmethod和staticmethod有甚麼特性?在使用後會發生什麼事情?
一般而言,在定義物件方法時會給與def methodName(self, *args, **kargs)
,其中self
表示物件實例本身。如果你瞭解 Lua 會發現是同樣的顯式引用發法,並且Lua中的語法糖instance:method(...)
(相當於class.method(instance, ...)
),幾乎就對應於Python裏面的Instance.method(*args, **kargs)
(相當於Class.method(Instance, *args, **kargs)
)。
相較之下,C++、Java裏面的this
,或是VB裏面的Me
,就是隱式用法。我自己是比較喜歡顯式引用,比較明確。