26 Python Tricks ที่ช่วยให้ทำงานง่ายขึ้น

26-ต.ค.-18

คัมภีร์เทพ IT

Python ถือเป็นอีกหนึ่ง Programming Language ที่ได้รับความนิยมมากที่สุดตัวหนึ่ง เนื่องจากสามารถเรียนรู้ได้ง่าย, มีความอเนกประสงค์ รวมทั้งมี Modules และ Libraries ต่างๆ ให้ใช้มากมาย สำหรับบทความนี้ Peter Gleeson ซึ่งเป็น Data Scientist ได้มาแชร์ 26 Python Tricks ที่จะช่วยให้คุณทำงานง่ายขึ้น โดย Tricks เหล่านี้เป็นสิ่งที่ได้มาทั้งจากการทำงาน และหาข้อมูลเพิ่มเติมจากแหล่งต่างๆ เช่น Python Standard Library docs, PyPi และ awesome-python.com

all or any

สาเหตุหนึ่งที่ทำให้ Python เป็นที่นิยมก็เพราะมันอ่านได้ง่ายและมีความหมายชัดเจน มักจะมีการพูดติดตลกว่า Python เป็น "executable pseudocode" แต่หากคุณเขียน Code แบบนี้ได้ มันก็ยากที่จะโต้แย้ง:

bashplotlib

คุณกำลังต้องการ plot graph ใน console หรือไม่?

แค่นี้ก็สามารถ plot graph ได้แล้ว

collections

Python มี Datatype ยอดเยี่ยมที่เตรียมไว้ให้แล้ว แต่บางครั้งอาจไม่ตรงกับที่คุณต้องการ ซึ่งโชคดีที่ Python Standard Library มี collection ของ Module แถมยังสามารถ Add-on เพิ่มเข้าไปได้เองอีกด้วย

dir

คุณเคยอยากรู้ไหมว่า จะสามารถมองเข้าไปใน Python Objects ได้อย่างไร และดูว่ามันมี Attributes อะไรบ้าง? แน่นอนคุณคงอยากรู้

ลองดูจาก Command Line นี้สิ:

นี่เป็น Feature ที่มีประโยชน์กับคุณมาก และหากคุณอยากรู้เกี่ยวกับ objects และ modules ที่คุณกำลังใช้งานมันอยู่ อ่านได้จากที่นี่

emoji

ลองดูที่นี่เลย

อย่าบอกนะ ว่าคุณจะไม่ลองทำแบบนี้

from __future__ import

ผลจากความเป็นที่นิยมของ Python คือมีการพัฒนา Version ใหม่ๆ อยู่เสมอ ซึ่ง Version ใหม่นี้ หมายถึง Feature ใหม่ๆ โดย __future__ module จะช่วยให้คุณสามารถ Import Function จาก Python version ใหม่ๆ ได้

geopy

เรื่อง Geography อาจจะดูเป็นเรื่องที่ท้าทายมากสำหรับ Programmer ที่ต้องทำงานเกี่ยวข้องกับมัน แต่ Geopy Module จะช่วยให้คุณทำงานได้ง่ายขึ้น

Geopy ทำงานโดยการรวบรวม APIs ของ Geocoding Services ต่างๆ มาไว้ด้วยกัน ซึ่งจะช่วยให้คุณสามารถรู้ถึง street address, latitude, longitude แม้กระทั้ง altitude ของสถานที่ต่างๆ ได้ นอกจากนี้ยังมี distance class ซึ่งจะช่วยให้คุณสามารถวัดระยะห่างระหว่าง 2 location โดยใช้หน่วยวัดที่คุณต้องการได้อีกด้วย

howdoi

หากคุณติดปัญหาเรื่องการ Coding และจำ Solution ที่คุณเคยเห็นหรือใช้งานมาก่อนไม่ได้ คุณสามารถเข้าไปใน StackOverflow ได้ แต่หากคุณอยากรู้ตอนนั้นเลย โดยไม่อยากออกไปที่อื่นล่ะ command line tool นี้น่าจะมีประโยชน์กับคุณ

คุณสามารถถามคำถามที่คุณอยากรู้ และมันจะพยายามหาคำตอบที่ดีที่สุดมาให้

แต่คุณควรทราบไว้ด้วยว่า มันทราบว่าลบ code จาก Top answer จาก StackOverflow ซึ่งบางครั้งมันอาจจะไม่ได้ให้ข้อมูลที่เป็นประโยชน์กับคุณเสมอไป

inspect

Inspect Module ของ Python มันเหมาะมากในการทำความเข้าใจว่าเกิดอะไรขึ้นเบื้องหลัง คุณสามารถเรียก Method ของมันมาใช้ได้ จากตัวอย่าง Code ด้านล่าง จะเห็นว่ามีการใช้ inspect.getsource() เพื่อพิมพ์ Source code นอกจากนี้ยังใช้ inspect.getmodule() เพื่อพิมพ์ Module ที่ถูก Define ไว้

ในบรรทัดสุดท้ายของ Code จะพิมพ์หมายเลขของแต่ละบรรทัด

นอกจากนี้ Inspect Module สามารถทำให้เราเห็นประโยชน์ว่า Code ของคุณกำลังทำอะไรอยู่ นอกจากนี้คุณยังสามารถใช้มันเพื่อเขียน documenting code ด้วยตนเองอีกด้วย

Jedi

Jedi Library เป็น Autocompletion และ Code Analysis Library มันช่วยทำให้การเขียน Code เร็วและมีประสิทธิผลมากยิ่งขึ้น ถ้าคุณไม่พัฒนา IDE เป็นของคุณเอง คุณอาจจะสนใจการใช้ Jedi เพื่อเป็น Editor Plugin ได้

**kwargs

เมื่อคุณเรียนรู้ภาษาใดภาษาหนึ่ง น่าจะมีสิ่งที่น่าจดจำหรือเรื่องสำคัญเกิดขึ้นมากมาย สำหรับ Python แล้ว **kwargs syntax ก็น่าจะรวมอยู่ในนั้นด้วย

เครื่องหมายดอกจัน 2 อันที่เห็นด้านหน้า Dictionary object นั้น จะช่วยให้คุณสามารถส่งผ่าน Content ของ Dictionary นั้นเป็นชื่อ Argument ไปยัง Function

หัวใจหลักของ Dictionary คือ ชื่อ Argument ส่วนค่า ก็คือ ค่าที่ส่งผ่านไปยัง Function คุณไม่จำเป็นต้องเรียกมันว่า kwargs ก็ได้

สิ่งนี้มีประโยชน์มาก เมื่อคุณต้องการเขียน Function ที่สามารถจัดการกับ ชื่อของ Argument ซึ่งไม่ได้ Define ไว้ล่วงหน้าได้

List comprehensions

สิ่งหนึ่งที่น่าสนใจใน Python คือ List comprehensions มันช่วยให้ง่ายต่อการเขียน Clean Code ที่อ่านได้ง่ายเหมือน Natural Language คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการใช้งานได้ที่นี่

map

Python ได้ support ตัว Functional Programming ผ่าน Inbuilt Features ที่มีอยู่มากมาย และหนึ่งในนั้นก็คือ map() function โดยเฉพาะอย่างยิ่งเมื่อใช้ร่วมกับ Lambda function

ในตัวอย่างข้างต้น, map() นำไปใช้กับ Lambda function อย่างง่ายๆ กับแต่ละ Elements ใน x มันจะ Returns Map Object ซึ่งสามารถถูก Convert ไปเป็น Iterable Object อย่างเช่น list หรือ tuple

Newspaper3k

นี่เป็น newspaper module ของ Python โดยมันจะช่วยให้คุณสามารถดึง บทความ ข่าว และ meta-data ที่เกี่ยวข้องจากInternational Publications ชั้นนำมากมาย อีกทั้งคุณสามารถดึง รูปภาพ ข้อความ และชื่อผู้แต่งได้ มันยังมี inbuilt NLP functionality อยู่อีกด้วย

ดังนั้น หากคุณกำลังคิดถึงการใช้ BeautifulSoup หรือ DIY Webscraping Library อื่นๆ สำหรับ Project ถัดไปของคุณอยู่ มันจะช่วยให้คุณประหยัดเวลาและไม่ต้องใช้ความพยายามมากนัก ด้วยการใช้ $ pip install newspaper3k แทน

Operator overloading

Python มีการ support สำหรับ Operator Overloading มันเป็น Concept ที่ง่ายๆ คุณเคยสงสัยหรือไม่ว่าทำไม Python ถึงให้คุณสามารถใช้เครื่องหมาย + เพื่อเพิ่มตัวเลขเข้าไป รวมทั้งสามารถนำอักขระมาต่อกันได้? ซึ่งนั่นเป็นการกระทำของ Operator Overloading

คุณสามารถ Define Objects โดยใช้ Standard Operator Symbols ของ Python ได้ สิ่งนี้มันช่วยให้คุณสามารถใช้งานได้ในบริบทที่เกี่ยวข้องกับ Object ที่คุณกำลังทำงานอยู่

pprint

Python มี Print Function ที่เป็นตัว Default อยู่แล้ว แต่ผลลัพธ์ที่ออกมาไม่ค่อยดีสักเท่าไหร่ นี่ทำให้ Print Module ของ Standard Libraries เข้ามามีบทบาท มันสามารถ Print Structured Objects ที่มีความซับซ้อน ให้อยู่ในรูปแบบที่สามารถอ่านได้ง่ายขึ้น และมันก็เป็นสิ่งที่ Python developer ควรรู้หากต้องทำงานกับ Data Structures ที่สำคัญๆ

Queue

ใน Python มีการ support เรื่อง Multithreading อยู่แล้ว และมันก็ถูกทำให้สะดวกขึ้นโดย Queue module ของ Standard Library

Module นี้ช่วยให้คุณสามารถ Implement Queue Data Structures นี่เป็น Data Structures ที่จะช่วยให้คุณเพิ่ม และ Retrieve ตาม Rule ที่ระบุได้

อย่าง ‘First in, first out’ (หรือ FIFO) queues คุณจะสามารถ Retrieve ข้อมูลตามลำดับการเพิ่มเข้ามา ส่วน ‘Last in, first out’ (LIFO) queues จะช่วยให้คุณเข้าถึง Object ที่ถูกเพิ่มเข้ามาล่าสุดได้ก่อน นั่นหมายถึง คุณจะ Retrieve Object ใดก่อน ก็ขึ้นอยู่กับวิธีที่มันถูก Sort มาดังที่กล่าวไปแล้ว และนี่คือตัวอย่างของการใช้ Queue สำหรับ Multithreaded Programming ใน Python

__repr__

เมื่อมีการ Define Class หรือ Object ใน Python มันจะมีประโยชน์ที่จะมีวิธีที่ 'Official' ในการแสดง Object นั้นเป็น String ตัวอย่างเช่น:

มันทำให้การ Debug Code ง่ายขึ้นมาก คุณสามารถเพิ่มมันลงใน Class Definitions ของคุณ ดังที่แสดงด้านล่าง:

sh

Python ได้สร้าง Scripting Language ที่ยอดเยี่ยม บางครั้งการใช้ Standard os และ Subprocess Libraries อาจทำให้คุณปวดหัว ซึ่ง sh library ถือเป็นทางเลือกที่ดีมาก เพราะมันช่วยให้คุณสามารถเรียกใช้ Program ใดๆ ก็ได้เหมือนกับว่าเป็น Function ธรรมดา มันมีประโยชน์สำหรับ automating workflows และ tasks ใน Python

Type hints

Python เป็น Dynamically-Typed Language ซึ่งคุณไม่จำเป็นต้องระบุ Datatypes เมื่อคุณกำหนด variables, functions, classes ฯลฯ โดยมันช่วยให้การ Develop สามารถทำได้อย่างรวดเร็วขึ้น แต่บางครั้งก็มีสิ่งที่น่ารำคาญมากกว่า Runtime error ที่เกิดจากปัญหาง่ายๆ จากการพิมพ์

ตั้งแต่ Python 3.5 เป็นต้นมา คุณมี Option สำหรับ type hints เมื่อมีการ Define Function

คุณสามารถ Define Type Aliases ได้:

แม้ว่าจะไม่บังคับก็ตาม แต่ type annotations ก็ช่วยทำให้ Code ของคุณอ่านง่ายขึ้น

นอกจากนี้ยังช่วยให้คุณสามารถใช้ Type Checking Tools สำหรับตรวจจับ TypeErrors ก่อน Runtime มันอาจเป็นสิ่งที่คุ้มค่าถ้าคุณทำงานกับ Project ที่มีขนาดใหญ่และมีความซับซ้อน

uuid

วิธีที่ง่ายและรวดเร็วในการ Generate Universally Unique IDs (หรือ ‘UUIDs’) คือการใช้ uuid module ของ Python Standard Library

มันจะสร้างหมายเลข 128 bit แบบสุ่ม ซึ่งแทบจะแตกต่างกันโดยสิ้นเชิง

ในความเป็นจริง มี UUID ที่เป็นไปได้มากกว่า 2122 ที่จะสามารถสร้างได้ หรือมากกว่า 5,000,000,000,000,000,000,000,000,000, 000,000,000 โอกาสที่จะเจอชุดเลขซ้ำกันมีต่ำมาก

Virtual environments

มีโอกาสที่คุณจะทำงานกับหลายๆ Python Projects ในเวลาเดียวกัน แต่ดันมีบาง Project ของคุณจำเป็นต้องใช้งานใน Version ที่แตกต่างกัน คำถามที่น่าสนใจคือ คุณจะติดตั้ง version ไหนดี? แต่โชคดีที่ Python  ได้ support การใช้งาน Virtual Environments ซึ่งช่วยให้คุณทำงานได้สะดวกขึ้น ดังที่เห็นในตัวอย่างด้านล่างนี้

ตอนนี้ทำให้คุณสามารถติดตั้ง Python ใน Version ที่แตกต่างกัน ซึ่ง Run อยู่บน Machine ในเวลาเดียวกันได้แล้ว

wikipedia

Wikipedia มี API ที่ยอดเยี่ยมซึ่งช่วยให้สามารถเข้าถึงข้อมูลและความรู้ต่างๆ กันแบบฟรีๆ ได้เลย Wikipedia Module ทำให้การเข้าถึง API ได้อย่างง่ายดาย

xkcd

มีหลายสิ่งที่น่าขบขันใน Python โดยมันมีการตั้งชื่อหลังจากที่ British comedy sketch จัดโชว์ Monty Python’s Flying Circus ซึ่งมี Official Documentation ของ Python เป็นจำนวนมากที่มีการ Refer ถึงโชว์ดังกล่าว

ความมีอารมณ์ขัน ไม่ได้ถูกจำกัดอยู่แค่ใน Docs เท่านั้น แต่ยังผ่านบรรทัดด้านล่างนี้ด้วย:

YAML

YAML ย่อมาจาก ‘YAML Ain’t Markup Language’ มันเป็น Data Formatting Language และเป็น Superset ของ JSON

มันต่างจาก JSON คือมันสามารถจัดเก็บ Objects ที่มีความซับซ้อนได้ และมีการ Refer ถึง Elements ของตัวเองได้ นอกจากนี้คุณยังสามารถเขียน Comment ได้ ซึ่งทำให้เหมาะอย่างยิ่งสำหรับการเขียน Configuration Files

PyYAML Module ช่วยให้คุณใช้งาน YAML กับ Python ได้ คุณสามารถติดตั้งแบบนี้:

จากนั้นก็ Import มันไปยัง Project ของคุณ

PyYAML ช่วยให้คุณจัดเก็บ Python objects ของ Datatype ต่างๆ และ Instances ของ User-defined Classes อีกด้วย

zip

เคยต้องการสร้าง Dictionary จาก 2 lists หรือไม่?

zip() function จะใส่ Iterable Objects เข้าไปแล้วจะ Return ตัว List ของ Tuples ออกมา แต่ละ Tuple จะจัดกลุ่ม Elements ของ Input Objects โดยใช้ Positional Index ของมัน และคุณยังสามารถ "unzip" objects โดยเรียก *zip() ได้เลย

ที่มา:  https://medium.freecodecamp.org/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความที่เกี่ยวข้อง