MIS工程師|永鼎數位科技有限公司

台中市西屯區 經歷不拘 專科 電腦軟體服務業
我要應徵
學歷: 科系不拘,專科、大學、碩士、博士
需加強技能-企業要求 點擊標籤,查看學習內容
LinuxShellPythonMS SQLMySQLOracle資料庫系統管理維護網路系統配置英文
需加強技能-相關
操作分條資料庫管理問題排除基礎程式開發異常處理SOP系統管理Shell Script
符合度
?

履歷符合度:登入計算

適合度
?

性格適合度:登入計算

Python
Python是一種物件導向、直譯式電腦程式語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。這種語言具有非常簡捷而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的作業系統中執行。 雖然 Python 可能被粗略地分類為「指令碼語言」(script language),但實際上一些大規模軟體開發計劃例如 Zope、Mnet 及 BitTorrent,Google 也廣泛地使用它。 Python 的支援者較喜歡稱它為一種高階動態編程語言,原因是「指令碼語言」泛指僅作簡單編程任務的語言,如 shell script、JavaScript 等只能處理簡單任務的編程語言,並不能與 Python 相提並論。 此外,由於 Python 對於 C 和其他語言的良好支援,很多人還把 Python 作為一種「膠水語言」(glue language)使用。 使用 Python 將其他語言編寫的程式進行整合和封裝。 在 Google 內部的很多專案使用 C++ 編寫性能要求極高的部分,然後用Python呼叫相應的模組。

不知如何開始嗎? 先進行技能挑戰吧~

技能挑戰:初級
目前等級:未達初級
2596 人已通過「初級」測驗,通過率83%,和求職精靈一起探索知識、增強能力!
我要挑戰
Hi~ 分享你的學習心得來幫助後輩或向前輩提問吧!
我要分享
我要提問

動態

全部
影片
文章

Learn Code With Mike品牌創辦人

10/21 21:50

Python繼承(Inheritance)實用教學

Q:如何使用Python繼承?
將共同的屬性(Attribute)或方法(Method)定義在一個類別(Class)中,而其它類別(Class)則透過繼承(Inheritance)的方式來擁有它,如下範例:
class Transportation: # 交通工具
def __init__(self):
self.color = "white"
def drive(self): # 駕駛方法
print("drive method is called.")
class Car(Transportation):
def accelerate(self): # 加速方法
print("accelerate is method called.")
class Airplane(Transportation):
def fly(self): # 飛行方法
print("fly method is called.")
Transportation類別(Class)就叫父類別或基底類別(Base Class),而Car及Airplane類別(Class)就稱為子類別(Sub Class),在類別名稱的地方透過括號的方式來繼承(Inheritance),藉此擁有父類別公開的屬性(Attribute)及方法(Method),如下範例:
mazda = Car()
mazda.drive()
print(mazda.color)
Q:什麼是方法覆寫?
當子類別中定義了和父類別同名的方法(Method),這時候子類別的物件(Object)呼叫這個同名方法時,其中的實作內容將會覆蓋掉父類別的同名方法,這就叫做方法覆寫(Method Overriding),如下範例:
class Transportation: # 交通工具
def drive(self): # 駕駛方法
print("Base class drive method is called.")
class Car(Transportation):
def drive(self):
print("Sub class drive method is called.")
mazda = Car()
mazda.drive()
這時候如果我們想在子類別中執行父類別的方法(Method)時,則可以使用super()內建方法來達成,如下範例:
class Transportation: # 交通工具
def drive(self): # 駕駛方法
print("Base class drive method is called.")
class Car(Transportation):
def drive(self):
super().drive()
print("Sub class drive method is called.")
mazda = Car()
mazda.drive()
Q:什麼是多層繼承?
就是繼承(Inheritance)的層級超過一層以上,如下範例:
class Animal: # 動物類別
pass
class Bird(Animal):
def fly(self):
print("fly")
class Duck(Bird):
pass
duck = Duck()
duck.fly()
Q:什麼是多重繼承?
就是子類別繼承(Inheritance)一個以上的父類別,並且各類別應各司其職,避免有相同的方法,如下範例:
class Animal: # 動物類別
def eat(self):
print("Animal eat method is called.")
class Bird:
def walk(self):
print("Bird walk method is called.")
class Duck(Animal, Bird):
pass
duck = Duck()
duck.eat()
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-inheritance.html )網站觀看更多精彩內容。
  • Python
  • OOP
  • 物件導向程式設計
拍手 2 留言 0 觀看 2 收藏 0

Learn Code With Mike品牌創辦人

10/21 21:58

Python多型(Polymorphism)實用教學

Q:什麼是抽象方法(Abstract Method)?
要使用抽像方法(Abstract Method)的類別首先要繼承ABC(Abstract Base Class)類別,接著在抽象方法上方加上@abstractmethod裝飾詞(Decorator),並且不會有實作內容,如下範例:
from abc import ABC, abstractmethod
class Login(ABC): # 登抽象入類別
@abstractmethod
def login(self):
pass
由於抽象方法(Abstract Method)是抽象的,所以只要有抽象方法(Abstract Method)的類別就稱為抽象類別,是無法建立物件的,必須透過繼承(Inheritance)的類別來進行抽象方法(Abstract Method)的實作,如下範例:
from abc import ABC, abstractmethod
class Login(ABC): # 登入抽象類別
@abstractmethod
def login(self):
pass
class FacebookLogin(Login): # Facebook登入機制
def login(self):
print("Facebook login implementation.")
fb = FacebookLogin()
fb.login()
所以,抽象方法(Abstract Method)通常應用於定義各類別的共同介面,讓未來要增加的需求功能,必須遵守共同的規則進行實作,來達到各類別擁有一致性的介面,不但好維護且易於擴充。
Q:什麼是多型(Polymorphism)?
顧名思義,就是同一個介面或方法(Method)可以有多個實作型態。
我們來延伸上面的例子,如果今天應用程式要增加Google及Twitter的登入機制,想必大家應該知道要怎麼做了吧,就是建立各自的類別(Class)繼承(Inheritance)Login抽象類別,接著實作其中的login抽象方法(Abstract Method),如下範例:
from abc import ABC, abstractmethod
class Login(ABC): # 登入抽象類別
@abstractmethod
def login(self):
pass
class FacebookLogin(Login): # Facebook登入機
def login(self):
print("Facebook login implementation.")
class GoogleLogin(Login): #Google登入
def login(self):
print("Google login implementation.")
class TwitterLogin(Login): #Twitter登入
def login(self):
print("Twitter login implementation.")
fb = FacebookLogin()
fb.login()
google = GoogleLogin()
google.login()
twitter = TwitterLogin()
twitter.login()
各位有沒有發現,來源端不同的類別物件(Object)呼叫同樣的方法(Method)時,卻可以有不同的實作方式,這也就是所謂的多型(Polymorphism)。
其中的原理,就是Python編譯器在執行期間(Runtime)看到三個實體類別(Class)皆繼承(Inheritance)了Login抽象類別,接著在物件(Object)呼叫login()方法(Method)時,Python編譯器則依據呼叫物件(Object)的實體類別(Class)來執行相應的類別實作。
Q:使用多型(Polymorphism)有什麼優點?
使用多型(Polymorphism)最大的優點就是易於擴充及降低類別間的相依性。從這兩個例子可以看到,不論未來要再增加新的登入機制或交通工具,都能非常容易的透過新增類別來進行擴充,並且有一致性的介面。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-polymorphism.html )網站觀看更多精彩內容。
  • 物件導向程式設計
  • OOP
  • Python
拍手 1 留言 0 觀看 3 收藏 0

Learn Code With Mike品牌創辦人

10/19 21:53

淺談Python類別(Class)

Q:什麼是類別(Class)?
簡單來說,就是物件(Object)的藍圖(blueprint)。就像要生產一部汽車時,都會有設計圖,藉此可以知道此類汽車會有哪些特性及功能,類別(Class)就類似設計圖,會定義未來產生物件(Object)時所擁有的屬性(Attribute)及方法(Method)。而定義類別的語法如下:
class classname:
  statement
首先會有class關鍵字,接著自定類別名稱,最後加上冒號。類別名稱的命名原則習慣上使用Pascal命名法,也就是每個單字字首大寫,不得使用空白或底線分隔單字,如下範例:
class MyCars:
Q:什麼是物件(Object)?
就是透過類別(Class)實際建立的實體,就像實際生產出來的汽車(例如:Mazda)。類別(Class)與物件(Object)的關係就像汽車設計圖與汽車實體。而建立物件(Object)的語法如下:
object_name = classname()
範例:
mazda = Cars()
Q:什麼是屬性(Attribute)?
負責存放物件(Object)的資料。設定物件(Object)的屬性值語法如下:
object_name.attribute_name = value
範例:
mazda = Cars() # 建立Cars類別的物件
mazda.color = "blue" #顏色屬性
建立物件(Object)後,才可進行屬性值(Attribute)的設定。會建議使用建構式(Constructor)來進行屬性值(Attribute)的設定。而存取物件的屬性值則透過以下語法:
object_name.attribute_name
範例:
print(mazda.color) # 執行結果:blue
Q:什麼是建構式(Constructor)?
於建立物件(Object)的同時,會自動執行的方法(Method)。所以通常我們會在建構式(Constructor)中初始化物件(Object)的屬性值(Attribute)。至少要有一個self參數,之後利用逗號區隔其他屬性,語法如下:
def __init__(self, color, seat):
  self.color = color # 顏色屬性
  self.seat = seat # 座位屬性
而這個self是什麼意思呢?它代表了實體物件的參考,也就是目前的物件(Object)。這個self就是告訴類別(Class)目前是在設定哪一個物件的屬性(Attribute)。所以範例中的意思就是此物件的color屬性等於傳入的color屬性值,此物件的seat屬性等於傳入的seat屬性值,而傳入屬性值的方式就是在建立物件的時候,如下範例:
class Cars:
def __init__(self, color, seat):
self.color = color # 顏色屬性
self.seat = seat # 座位屬性
mazda = Cars("blue", 4)
範例中於建立mazda物件(Object)的同時,生成其屬性並且初始化屬性值(color和seat)。
Q:什麼是方法(Method)?
可以想像是物件(Object)的行為。定義方法(Method)和函式(Function)的語法很像,都是def關鍵字開頭,接著自訂名稱,但是方法(Method)和建構式(Constructor)一樣至少要有一個self參數,語法如下:
def method_name(self):
  statement
範例:
class Cars:
def __init__(self, color, seat):
self.color = color # 顏色屬性
self.seat = seat # 座位屬性
# 方法(Method)
def drive(self):
print(f"My car is {self.color} and has {self.seat} seats.")
mazda = Cars("blue", 4)
mazda.drive() #執行結果:My car is blue and has 4 seats.
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-class.html )網站觀看更多精彩內容。
  • 物件導向程式設計
  • Python
  • OOP
拍手 2 留言 0 觀看 3 收藏 1

Learn Code With Mike品牌創辦人

10/20 21:27

3個必須瞭解的Python屬性觀念

Q:什麼是實體屬性(Instance Attribute)?
需伴隨物件(Object)的生成來建立,也就是透過點(.)的語法或在建構式(Constructor)中所生成的屬性(Attribute)。各物件(Object)的實體屬性(Instance Attribute)各自獨立,修改某一個物件(Object)的實體屬性(Instance Attribute)值時,不會影響到其他物件。如下範例:
class Cars:
pass
mazda = Cars()
mazda.color = "blue"
toyota = Cars()
toyota.color = "red"
print("mazda color: ", mazda.color)
print("toyota color: ", toyota.color)
接下來我們來看透過建構式(Constructor)所建立的屬性(Attribute):
class Cars:
# 建構式
def __init__(self, color, seat):
self.color = color
self.seat = seat
self.weight = 140
mazda = Cars("blue", 4)
mazda.color = "yellow"
mazda.seat = 8
mazda.weight = 200
print("mazda color: ", mazda.color)
print("mazda seat: ", mazda.seat)
print("mazda weight: ", mazda.weight)
Q:什麼是類別屬性(Class Attribute)?
定義在類別層級的屬性(Attribute),也就是在建構式(Constructor)之外的屬性(Attribute)。可以不需要建立物件(Object),直接透過類別名稱存取。各物件共享類別屬性(Class Attribute)值,也就是說當我們修改類別屬性(Class Attribute)值時,每一個透過此類別(Class)所建立的物件(Object),都會受到影響。如下範例:
class Cars:
door = 4
# 建構式
def __init__(self, color, seat):
self.color = color
self.seat = seat
self.weight = 140
mazda = Cars("blue", 4)
print("mazda original door: ", mazda.door)
Cars.door = 6
print("mazda new door: ", mazda.door)
Q:什麼是屬性(Property)?
是一個允許我們設定及取得屬性(Attribute)值的物件(Object),當我們想要對類別(Class)中的屬性(Attribute)有更多的控制時,就會使用Python的屬性(Property)來達成。如下範例:
class Cars:
# 建構式
def __init__(self, weight):
self.weight = weight
@property
def weight(self):
return self.__weight
@weight.setter
def weight(self, value):
if value <= 0:
raise ValueError("Car weight cannot be 0 or less.")
self.__weight = value
在讀取屬性(Attribute)的方法上方加上@property Decorator,並且將方法名稱修改為weight,這個weight就是屬性(Property)。接著在設定屬性(Attribute)的方法上方加上@property.setter,也就是@weight.setter,意思就是告訴類別(Class)當來源端要設定屬性(Property)值時,要呼叫這個方法(Method)。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-attribute.html )網站觀看更多精彩內容。
  • 物件導向程式設計
  • OOP
  • Python
拍手 2 留言 0 觀看 6 收藏 0

Learn Code With Mike品牌創辦人

10/20 21:39

解析Python物件導向設計的3種類型方法

Q:什麼是實體方法(Instance Method)?
Python類別(Class)中沒有加任何裝飾詞(Decorator)的方法(Method),至少要有一個self參數,於方法(Method)被呼叫時指向物件(Object),其後可以依需求增加額外參數,如下範例:
class Cars:
def drive(self):
print("Drive is instance method.")
實體方法(Instance Method)透過self參數可以自由的存取物件(Object)的屬性(Attribute)及其他方法(Method),藉此來改變物件(Object)的狀態,如下範例:
class Cars:
# 建構式
def __init__(self):
self.color = "blue"
def drive(self):
print(f"{self} is {self.color}.")
self.message()
def message(self):
print("Message method is called.")
mazda = Cars()
mazda.drive()
Q:什麼是類別方法(Class Method)?
Python類別(Class)中有@classmethod裝飾詞(Decorator)的方法(Method),被呼叫時,相較於實體方法(Instance Method)的self參數指向物件(Object),類別方法(Class Method)為cls參數,指向類別(Class),如下範例:
class Cars:
# 類別方法(Class Method)
@classmethod
def open_door(cls):
print("Open door is class method.")
由於類別方法(Class Method)的cls參數指向類別(Class),所以類別方法(Class Method)僅能改變類別的狀態,而無法改變物件(Object)的狀態,因為它沒有self參數可以存取物件的屬性(Attribute)及方法(Method)。如下範例:
class Cars:
door = 4
# 類別方法(Class Method)
@classmethod
def open_door(cls):
print(f"{cls} has {cls.door} doors.")
mazda = Cars()
mazda.open_door()
Cars.open_door()
Q:什麼是靜態方法(Static Method)?
Python類別中有@staticmethod裝飾詞(Decorator)的方法(Method),可以接受任意的參數,也因為它沒有self及cls參數,所以靜態方法(Static Method)無法改變類別(Class)及物件(Object)的狀態,如下範例:
class Cars:
#靜態方法
@staticmethod
def accelerate():
print("Accelerate is static method.")
靜態方法(Static Method)在類別(Class)中是一個獨立的方法(Method),通常應用於方法(Method)中無需存取物件(Object)的屬性(Attribute)或方法(Method),單純執行傳入參數或功能上運算的情況,如下範例:
class Cars:
# 速率靜態方法
@staticmethod
def speed_rate(distance, minute):
return distance / minute
van = Cars()
van_rate = van.speed_rate(10000, 20)
print("van rate: ", van_rate)
sports_car_rate = Cars.speed_rate(20000, 20)
print("sports car rate: ", sports_car_rate)
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-method.html )網站觀看更多精彩內容。
  • 物件導向程式設計
  • OOP
  • Python
拍手 2 留言 0 觀看 8 收藏 1
職場力 Python

09/14 09:27

  • Python
  • 工作排行
  • 拓展市場
  • 業務開發
  • 經營管理
  • 職務知多少
  • 薪資排行
拍手 0 留言 0 觀看 8 收藏 1

104求職精靈x聯成

聯成

10/07 00:00

  • Photoshop
  • HTML5
  • CSS
  • jQuery
  • AutoCAD
  • 3ds Max
  • Python
  • scikit-learn
  • OpenCV
  • Creo Parametric
  • Illustrator
  • After Effects
  • Premiere
  • Cinema 4D
  • C#
  • Unity3D
  • RHCE
  • Red Hat Certified Engineer
  • CCNA
  • OpenStack
觀看 74 收藏 0

104求職精靈x電腦技能基金會

電腦技能基金會 精選線上課程

02/01 00:00

  • 程式語言 (C/Python)
  • Python
  • 程式語言
  • Python程式設計
觀看 341 收藏 2

104求職精靈xHahow好學校

Hahow好學校 精選線上課程

09/29 11:56

  • SQL
  • Machine Learning
  • 人工智慧
  • 資料庫
  • Python
觀看 435 收藏 23

104求職精靈xCupoy

01/29 15:40

  • Python
  • Google Analytics
  • Weka
  • Flink
  • Firebase
  • 深度學習
  • Machine Learning
  • NLP
  • 演算法開發
  • R
觀看 133 收藏 12

104求職精靈x商業發展研究院

商業發展研究院 精選線上課程

08/13 00:00

  • Python
  • 演算法
  • 資料科學
觀看 60 收藏 7

Learn Code With Mike品牌創辦人

10/19 21:27

7個降低Python網頁爬蟲被偵測封鎖的實用方法(下)

本文將延續「7個降低Python網頁爬蟲被偵測封鎖的實用方法(上)」,接續分享降低Python網頁爬蟲被偵測封鎖的方法。
Q:如何設定參照位址(Referer)
請求表頭(Request Headers)中另一個重要的欄位就是參照位址(Referer),用來告訴網站這個請求(Request)是來自於哪一個網站,如下範例:
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-TW,zh;q=0.9",
"Host": "example.com",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36",
"Referer": "https://www.google.com/" #參照位址
}
response = requests.get(url="https://example.com", headers=headers)
這時候可以使用像SEMRush( https://www.semrush.com/ )的工具,來顯示目標網頁的反向連結,也就是能夠到達目標網頁的其它連結,就可以在Python網頁爬蟲的每一次請求(Request)前,將不同的反向連結設定到參照位址(Referrer)中,讓每一次的來源網站都不相同,降低被網頁偵測到的風險。
Q:如何設定隨機的延遲時間?
在每一次請求(Request)之間,最好設定隨機的延遲時間(Delay),這樣除了防止每一次的請求(Request)間隔時間不同之外,也沒有固定的請求模式,可以參考以下的範例:
delay_choices = [8, 5, 10, 6, 20, 11]
delay = random.choice(delay_choices)
time.sleep(delay) #延遲
Q:使用無頭瀏覽器(Headless Browser)的方法?
無頭瀏覽器(Headless Browser)和一般瀏覽器不一樣的地方是,它沒有圖形化的使用者介面,通常會使用指令的方式來執行,知名的Selenium套件就可以讓開發人員利用程式碼,自動化控制瀏覽器的執行,模擬人類的操作,降低被偵測到的風險,使用的方式可以參考[Python爬蟲教學]整合Python Selenium及BeautifulSoup實現動態網頁爬蟲文章( https://www.learncodewithmike.com/2020/05/python-selenium-scraper.html )。
Q:如何避免掉入網頁蜜罐陷阱(Honeypot Traps)
網頁蜜罐陷阱(Honeypot Traps)就是許多網頁會在HTML原始碼中埋入只有網頁爬蟲會讀取到的隱藏連結或屬性,如果在開發Python網頁爬蟲沒有注意或避開時,很容易就會被偵測到而被封鎖,舉例來說,有個隱藏的連結帶有「display:none」或「visibility: hidden」的CSS屬性等,這是正常的使用者看不到,而網頁爬蟲所能讀取到的。
要避免掉入網頁蜜罐陷阱(Honeypot Traps),除了要注意網頁的HTML原始碼之外,另一個方法就是在開發Python網頁爬蟲時,可以參考該網頁的網站地圖(Sitemap),其中會列出公開給使用者存取的網頁網址,在開發的過程中,就盡量挑選裡面的公開網址來進行爬取。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html )網站觀看更多精彩內容
  • 網頁資料擷取與分析 Python
  • Python
  • 網頁爬蟲
拍手 2 留言 0 觀看 4 收藏 1
工作機會

python工程師

迪倫蓮恩市場研究顧問有限公司

台北市信義區 經歷不拘 大學

時薪 300~400元

Python Web Developer

StreetVoice _街聲股份有限公司

台北市松山區 1年以上 大學

月薪 40,000~60,000元
我要應徵