Sử dụng hàm trong Python

  • Hàm là một tập hợp các dòng lệnh được viết ra nhằm phục vụ cho việc tái sử dụng lại sau này.
  • Để khai báo hàm trong Python, ta sử dụng từ kháo def với cú pháp như sau: def <tênhàm>(<cácđối_số>):

Khai báo và sử dụng hàm

# Gọi một hàm
func_name(<các_đối_số>)

def func_name(): # Không truyền tham số
  print("Hello world!")
func_name()


def func_name(a, b):  # Có truyền các đối số
  print("sum = " + str(a + b))
func_name(4,5)

# Hàm có kế quả trả về
def sum(a, b):
  return a + b
c = sum(4, 5);
print("Kết quả là " + str(c))

## Unpacking a function
def sum_and_div(num1, num2):
  sum_nums = num1 + num2
  div_nums = num1 / num2
  return sum_nums, div_nums # multiple returns

sum, div = sum_and_div(18, 9)
print(sum, div) #KQ: 27 2.0

Hàm vô danh (Lambda function)

  • Trong Python, hiểu đơn giản hàm vô danh là hàm được định nghĩa mà không có tên hàm. Cú pháp lambda <thamsố>: <biểuthức>
  • Thật tiện lợi nhưng đừng sử dụng thường xuyên, hãy sử dụng def để thay thế.

    x = lambda a : a + 10
    print(x(5)) #KQ: 15
    
    # Bạn có thể sử dụng def
    def x(a): return a + 10
    print(x(5)) #KQ: 15
  • if else với hàm lambda

    lambda row: 'good' if (row>=80) else ('bad' if row<80 else '')

Xử lý ngoại lệ (Exception Handling)

Ngoại lệ (Exception) là lỗi xảy ra trong quá trình thực thi một chương trình. Khi nó xảy ra, Python tạo ra một exception để xử lý vấn đề đó tránh cho ứng dụng hay server của bạn bị crash. Có thể được xử lý bằng bằng các cấu trúc sau:

try:
  # codes
except:
  # codes chạy nếu có một ngoại lệ
try: 
  # codes
except:
  # codes chạy nếu có một ngoại lệ
else:
  # không có ngoại lệ
try:
  # try codes
except FileNotFoundError as fnf_error:
    print(fnf_error)
except AssertionError as error:
    print(error)
  • Ví dụ 1

    if par1 is None:
    msg = "par1 phải ở kiểu `int`"
    raise TypeError(msg)
  • Ví dụ 2

    d = 0
    
    # Phép chia này có vấn đề, cho cho 0
    # Một lỗi được phát ra tại đây.
    value = 10 / d
    
    # Dòng mã dưới đây sẽ không được thực thi.
    print ("Let's go!")

    Sửa lại một tí ta được:

    d = 0
    
    try :
        # Phép chia này có vấn đề, chia cho 0.
        # Một lỗi được phát ra tại đây (ZeroDivisionError).
        value = 10 / d
        
        print ("Value = ", value)
        
    except ZeroDivisionError as e :
        
        print ("Error: ", str(e) )
        print ("Ignore to continue ...")
    
    print ("Let's go!")
  • Ví dụ 3: Xây dựng một Exception

    try:
      x = input('Nhập một số trong khoảng 1-10: ')
      if x<1 or x>10:
      raise Exception
      print 'Bạn vừa nhập một số hợp lệ :D'
    
    except:
      print 'Số bạn vừa nhập nằm ngoài khoảng cho phép mất rồi!'
  • Ví dụ 4

    element = 'mean'
    try:
      print(float(element)) #element là kiểu str không phải float nên xuất hiện exception
    except ValueError:
      if element == 'mean':
          print('hello mean')
  • Bạn có thể kiểm tra các trường họp ngoại lệ khác tại đây
© 2019-2020 Phan Nhật Chánh