Module trong Python: Cách tạo và sử dụng Module có sẵn

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Trong bài này chúng ta sẽ học cách tạo module trong Python, qua bài này bạn sẽ hiểu được khái niệm module là gì? Làm thế nào để gọi đến một module tạo mới hoặc module có sẵn trong Python.

test php

banquyen png

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Nếu Python là ngôn từ tiên phong mà bạn học thì khái niệm này hơi mới lạ, nhưng nếu bạn đã học ngôn từ khác rồi thì không còn lạ lẫm gì khái niệm lập trình hướng module nữa. Vậy Module là gì thì tất cả chúng ta cùng khám phá ngay nhé .

1. Module trong Python là gì?

Trong Python, modules là những file có phần mở rộng .py, các file này chứa mã Python và đó có thể là các biến, hàm, hoặc một lớp nào đó.

Các module giúp tất cả chúng ta code một cách linh động hơn, mỗi file sẽ chứa những đoạn code Giao hàng cho một tính năng đơn cử, được sắp xếp tùy vào cách phong cách thiết kế của mỗi lập trình viên .Bài viết này được đăng tại [ không lấy phí tuts. net ]
Để sử dụng những hàm của module A trong module B thì ta phải sử dụng từ khóa import, sau đó là bạn hoàn toàn có thể sử dụng hàng loạt tài nguyên của module A. Cách import như thế nào thì tất cả chúng ta cùng tìm hiểu và khám phá qua phần thứ hai nhé .

2. Cách tạo module trong Python

Trước khi tạo một module thì bạn phải xác lập rằng nhu yếu cần tạo một module tên gì ? nằm ship hàng một việc làm gì ? Để từ đó đặt tên module cho có ngữ nghĩa .

Giả sử mình cần tạo một thư viện chứa những hàm dùng để quản lý sinh viên, lúc này mình sẽ tạo một file tên là students.py cùng cấp với file chạy chính như sau:

cau truc module JPG

Như bạn thấy, mình có file helloworld.py là file chương trình chính của project, còn file students.py là module chứa những hàm quản lý sinh viên mà minh sắp viết vào.

Trong file students.py bạn hãy dùng lệnh def để tạo một hàm như sau:

def showStudent(name):
    print(name)

def message student JPG

Trong file helloworld.py bạn hãy viết đoạn code sau:

# Gọi đến module students
import students

# Gọi đến hàm showStudent trong module students
students.showStudent("Nguyễn Văn Cường")

goi thu vien students JPG

Chạy file chính helloworld.py lên thì bạn sẽ thấy kết quả như sau:

ket qua 1 JPG

Tóm lại: Giả sử trong module students có biến name và hàm showMessage, lúc này ta sẽ gọi đến biến và hàm này như sau:

students.name
students.showMessage()

Như vậy mình đã sử dụng lệnh import để gọi đến module students. Ta sẽ tìm hiểu sâu hơn về lệnh này ở phần tiếp theo.

3. Lệnh import trong Python

Để sử dụng các đoạn code ở module A vào trong module B thì ta sẽ phải sử dụng lệnh import. Có hai cách sử dụng, thứ nhất là dùng lệnh import đơn lẻ, thứ hai là lệnh from-import.

Sử dụng import

Lệnh import sẽ gọi module A vào trong module B, lúc này bạn hoàn toàn có thể sử dụng mọi tài nguyên của module A trong module B .

import module

Nếu bạn muốn import một lúc nhiều module thì hãy ngăn chúng bằng dấu phẩy .

import module1,module2,........ module n

Ví dụ: Sử dụng hàm showStudent trong module students.

Ví dụ

# Gọi đến module students
import students

# Lấy dữ liệu
print("Hãy nhập tên của sinh viên")
name = input()

# Gọi đến hàm showStudent
students.showStudent(name)

Chạy chương trình này bạn sẽ thu được tác dụng như sau :

ket qua 2 JPG

Sử dụng from-import

Giả sử trong module A bạn định nghĩa 10 function, nhưng trong module B bạn chỉ muốn sử dụng 1 trong 10 funciton đó thôi thì sử dụng from .. import.

Vậy sự khác nhau giữa importfrom ... import là một bên sẽ gọi tất cả các function, còn một bên chỉ gọi một function nào đó thôi.

Cú pháp

from < module-name> import , ..,  

Ví dụ: Xem cách sử dụng from-import dưới đây.

calculation.py

#Đoạn code trong file calculation.py   
def summation(a,b):  
    return a+b  
def multiplication(a,b):  
    return a*b
def divide(a,b):  
    return a/b

Main. py

from calculation import summation    
# Nó sẽ import duy nhất hàm summation() trong file calculation.py  
a = int(input("Nhập số thứ nhất: "))  
b = int(input("Nhập số thứ hai: "))  
print("Sum = ",summation(a,b))

Chạy lên hiệu quả sẽ như sau :

Nhập số thứ nhất: 10
Nhập số thứ hai: 20
Sum =  30

Lệnh from ... import sử dụng trong trường hợp bạn biết chính xác tên function muốn sử dụng trong module. Nó sẽ không khiến chương trình nặng hơn, vì vậy cứ yên tâm mà sử dụng.

Trường hợp bạn muốn import tất cả các function thì sử dụng dấu sao *.

from  import *   

4. Đổi tên module với AS trong Python

Nếu bạn muốn đổi tên module cho ngắn gọn và dễ hiểu thì hoàn toàn có thể sử dụng từ khóa AS. Từ khóa này rất hữu dụng vì giúp bạn tiết kiệm ngân sách và chi phí được thời hạn nhập những module có tên quá dài, thay vao đó chỉ cần một cai tên thật đặc biệt quan trọng .

Cú pháp như sau:

import  as    

Ví dụ: Thay đổi tên module calculation thành cal

#Tên của module calculation ở ví dụ trước sẽ đổi thành cal.   
import calculation as cal
a = int(input("Enter a?"))
b = int(input("Enter b?"))
print("Sum = ",cal.summation(a,b))  

5. Xem thuộc tính và phương thức của module

Hàm dir ( ) có hiệu quả trả về list những thuộc tính và phương pháp của module .

Ví dụ: Xem những tên biến, hàm có sẵn trong module json.

import json  
  
List = dir(json)  
  
print(List)  

Kết quả:

['JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 
'_default_decoder', '_default_encoder', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

6. Tải lại module với hàm reload

Trong Phython, khi bạn import một module thì nó sẽ thực hiện một lần duy nhất, cho dù bạn sử dụng đoạn code import bao nhiêu lần đi nữa. Tuy nhiên có một số trường hợp bạn muốn tải lại dữ liệu mới nhất của module đó thì có thể sử dụng hàm reload().

reload()  

Ví dụ: Tải lại module calculation đã được định nghĩa ở các ví dụ trước.

reload(calculation)  

7. Phạm vi của biến của module trong Python

Như toàn bộ những ngôn từ lập trình khác, tất cả chúng ta có hai dạng biến như sau :

  • Biến toàn cục: là biến có thể sử dụng ở tất cả các vị trí trong chương trình chính, trừ trong hàm.
  • Biến cục bộ: Là biến chỉ sử dụng được trong một phạm vi nhất định, ví dụ trong hàm.

Vậy khi bạn khai báo một biến trong module thì hoàn toàn có thể sử dụng tai mọi vị trí trong module đó. Tuy nhiên trong hàm thì không hề gọi đến biến cục bộ đó .
Hãy xem ví dụ dưới đây, biến name đã được khai báo ở cấp ngoài cùng và trong hàm, đây là 2 biến trọn vẹn khác nhau .

# Đây là biến toàn cục
name = "john"  
def print_name(name):  
    # Biến này là biến cục bộ, giá trị của nó được truyền vào
    print("Xin chào",name) 
name = input("Nhập tên của bạn?")  
print_name(name)  

Kết quả:

ket qua 3 JPG

8. Xem các module có sẵn trong Python

Để xem danh sách các module có sẵn trong Python thì ta sử dụng lệnh sau:

print (help('modules') )

Kết quả nó sẽ trả về list như sau :

__future__          _threading_local    getpass             sched
_abc                _tkinter            gettext             secrets
_aix_support        _tracemalloc        glob                select
_ast                _uuid               graphlib            selectors
_asyncio            _warnings           gzip                setuptools
_bisect             _weakref            hashlib             shelve
_blake2             _weakrefset         heapq               shlex
_bootlocale         _winapi             helloworld          shutil
_bootsubprocess     _xxsubinterpreters  hmac                signal
_bz2                _zoneinfo           html                site
_codecs             abc                 http                smtpd
_codecs_cn          aifc                idlelib             smtplib
_codecs_hk          antigravity         imaplib             sndhdr
_codecs_iso2022     argparse            imghdr              socket
_codecs_jp          array               imp                 socketserver
_codecs_kr          ast                 importlib           sqlite3
_codecs_tw          asynchat            inspect             sre_compile
_collections        asyncio             io                  sre_constants
_collections_abc    asyncore            ipaddress           sre_parse
_compat_pickle      atexit              itertools           ssl
_compression        audioop             json                stat
_contextvars        base64              keyword             statistics
_csv                bdb                 lib2to3             string
_ctypes             binascii            linecache           stringprep
_ctypes_test        binhex              locale              struct
_datetime           bisect              logging             students
_decimal            builtins            lzma                subprocess
_distutils_hack     bz2                 mailbox             sunau
_elementtree        cProfile            mailcap             symbol
_functools          calendar            marshal             symtable
_hashlib            cgi                 math                sys
_heapq              cgitb               mimetypes           sysconfig
_imp                chunk               mmap                tabnanny
_io                 cmath               modulefinder        tarfile
_json               cmd                 msilib              telnetlib
_locale             code                msvcrt              tempfile
_lsprof             codecs              multiprocessing     test
_lzma               codeop              netrc               textwrap
_markupbase         collections         nntplib             this
_md5                colorsys            nt                  threading
_msi                compileall          ntpath              time
_multibytecodec     concurrent          nturl2path          timeit
_multiprocessing    configparser        numbers             tkinter
_opcode             contextlib          opcode              token
_operator           contextvars         operator            tokenize
_osx_support        copy                optparse            trace
_overlapped         copyreg             os                  traceback
_peg_parser         crypt               parser              tracemalloc
_pickle             csv                 pathlib             tty
_py_abc             ctypes              pdb                 turtle
_pydecimal          curses              pickle              turtledemo
_pyio               dataclasses         pickletools         types
_queue              datetime            pip                 typing
_random             dbm                 pipes               unicodedata
_sha1               decimal             pkg_resources       unittest
_sha256             difflib             pkgutil             urllib
_sha3               dis                 platform            uu
_sha512             distutils           plistlib            uuid
_signal             doctest             poplib              venv
_sitebuiltins       easy_install        posixpath           warnings
_socket             email               pprint              wave
_sqlite3            encodings           profile             weakref
_sre                ensurepip           pstats              webbrowser
_ssl                enum                pty                 winreg
_stat               errno               py_compile          winsound
_statistics         faulthandler        pyclbr              wsgiref
_string             filecmp             pydoc               xdrlib
_strptime           fileinput           pydoc_data          xml
_struct             fnmatch             pyexpat             xmlrpc
_symtable           formatter           queue               xxsubtype
_testbuffer         fractions           quopri              zipapp
_testcapi           ftplib              random              zipfile
_testconsole        functools           re                  zipimport
_testimportmultiple gc                  reprlib             zlib
_testmultiphase     genericpath         rlcompleter         zoneinfo
_thread             getopt              runpy   

Mình chạy trên Python 3.8.

Như vậy là mình đã hướng dẫn xong cách sử dụng lệnh import trong Python để gọi đến một module nào đó. Ngoài ra bạn cũng biết cách tạo mới module và gọi đến một module vừa tạo đó .