Hướng dẫn xây dựng hàm python

and del for is rasie assert elif from lambda return break else global not try class except if or while continue exec import pass yield def finally in print

3. Kiểu dữ liệu cơ bản 3.1 Kiểu dữ liệu số Bạn có thể sử dụng các phép toán số học trong python chẳng hạn như +, -, *, / . Ví dụ:

>>> 2 + 2
4
>>> 50 - 5*6
20
>>> [50 - 5*6] / 4
5.0
>>> 8 / 5  # Phép chia luôn trả về số thực
1.6
>>> 17 / 3  # phép chia trả về số thực chứ không phải số nguyên như một số ngôn ngữ khác
5.666666666666667
>>>
>>> 17 // 3  # phép chia loại bỏ phần thập phân
5
>>> 17 % 3  # toán tử phần % trả về phần dư của phép chia
2
>>> 5 * 3 + 2 
17

3.2 Kiểu chuỗi Kiểu chuỗi trong python có thể được biểu diễn dưới dạng các ký tự nằm trong dấu ' ' hoặc " "

>>> 'spam eggs'  # dấu  ' '
'spam eggs'
>>> 'doesn\'t'  #dùng \ để escape dấu '
"doesn't"
>>> "doesn't"  #  hoặc dùng  dấu " thay vào đó
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'

3.3 Danh sách [Lists] Đây đây là kiểu dữ liệu tập hợp, dùng để nhóm các giá trị lại với nhau

>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4. Câu lệnh điều kiện trong Python 4.1 Câu lệnh if Một ví dụ cơ bản về câu lệnh if else ở đây, if [biểu thức] và elif[biểu thức] dùng để xác định nhiều lựa chọn

>>> x = int[input["Please enter an integer: "]]
Please enter an integer: 42
>>> if x < 0:
...     x = 0
...     print['Negative changed to zero']
... elif x == 0:
...     print['Zero']
... elif x == 1:
...     print['Single']
... else:
...     print['More']
...
More

4.2 Vòng lặp for Vòng lặp for trong python hơi khác một chút so với C. Vòng lặp for của python sẽ lặp thông qua từng item của bất kỳ hàng nào [một list hay một chuỗi]. Ví dụ:

>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
...     print[w, len[w]]
...
cat 3
window 6
defenestrate 12

4.3 Hàm Range[]

Nếu bạn cần lặp qua một chuỗi số, python cung cấp một hàm xây dựng sẵng range[] để lặp.

>>> for i in range[5]:
...     print[i]
...
0
1
2
3
4

4.4 Câu lệnh break, continue, và mệnh đề else trên vòng lặp Câu lệnh break dùng để thoat khỏi khối gần nhất trong vòng lặp for hoặc while. Vòng lặp ngoài ra còn có thể có một mệnh đề else được thực thi khi vòng lặp chạy hết và trở nên false

>>> for n in range[2, 10]:
...     for x in range[2, n]:
...         if n % x == 0:
...             print[n, 'equals', x, '*', n//x]
...             break
...     else:
...         # loop fell through without finding a factor
...         print[n, 'is a prime number']
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

Lệnh continue được vay mượn từ C, dùng để nhảy qua vòng lặp kế tiếp:

>>> for num in range[2, 10]:
...     if num % 2 == 0:
...         print["Found an even number", num]
...         continue
...     print["Found a number", num]
Found an even number 2
Found a number 3
Found an even number 4
Found a number 5
Found an even number 6
Found a number 7
Found an even number 8
Found a number 9

Trên đây là bài viết cơ bản về lập trình Python, ở phần tiếp theo chúng ta sẽ cùng học về cách tạo Function trong Python, cấu trúc dữ liệu List, các khái niệm về hướng đối tượng trong Python. Cảm ơn các bạn đã theo dõi!

Với các ngôn ngữ bậc cao và được sử dụng nhiều thì khái niệm hàm là rất cơ bản. Chúng ta đã học cách sử dụng các hàm có sẵn của Python như print[], len[]. Hôm nay chúng ta sẽ cùng nhau học cách viết hàm riêng.

Nội dung của bài

  • 1 Khái niệm về hàm
  • 2 Xây dựng hàm
  • 3 Các loại tham số
    • 3.1 Positional Arguments
    • 3.2 Keyword Arguments
    • 3.3 Default Arguments
    • 3.4 Variable Length Positional Arguments [*args and **kwargs]
  • 4 Docstring
  • 5 Nested Functions
  • 6 Hàm đệ quy [ Recursion]
  • 7 Kết luận

Khái niệm về hàm

Trong quá trình phát triển sản phẩm phần mềm, chúng ta luôn gặp phải tình huống: một khối lệnh xử lý một logic nhất định được sử dụng nhiều lần. Giải pháp là đưa khối lệnh đó vào một hàm rồi khi nào cần chúng ta gọi hàm đã viết. Việc này giúp source code của chúng ta tinh gọn và dễ đọc, dễ hiểu hơn.

Python function

Xây dựng hàm

def greeting[]:
   print["Hello World!"]
greeting[]
# prints Hello World!

Chúng ta sử dụng từ khóa def sau đó là tên hàm và cặp ký tự [], bên trong [] là các tham số truyền vào.

def greeting[name]:
   print["Hello {0}!".format[name]]
greeting["Bob"]
# prints Hello Bob!

Các loại tham số

Ví dụ trên chúng ta truyền vào tham số và sử dụng tham số để in ra dòng chữ: Hello Bob! với Bob là giá trị tham số truyền vào.

Trong Python hỗ trợ rất nhiều kiểu tham số cho hàm, đây là điểm rất mạnh và nếu chúng ta sử dụng một cách hiệu quả thì chương trình của chúng ta sẽ dễ đọc hơn rất nhiều.
Các loại tham số bao gồm:

  • Positional Arguments
  • Keyword Arguments
  • Default Arguments
  • Variable Length Positional Arguments [*args]
  • Variable Length Keyword Arguments [**kwargs]

Positional Arguments

Là tham số phổ biến nhất, khi gọi hàm bắt buộc phải truyền và truyền đúng thứ tự tham số.

def func[name, job]:
   print[name, "is a", job]

func["Bob", "Developer"]
# prints Bob is a Developer

func["Developer", "Bob"]
# prints Developer is a Bob

Nếu chúng ta không chuyền giá trị tham số theo thứ tự, chúng ta sẽ có kết quả sai.

Keyword Arguments

def func[name = "Bob1", job = "Developer"]:
    print[name, "is a", job]
func[job = "Developer", name = "Bob"]

Để tránh việc chúng ta gặp lỗi truyền sai thứ tự tham số, khi gọi hàm chúng ta truyền tên biến cùng với giá trị như ví dụ bên trên. Lúc này chúng ta không phải để ý đến việc có truyền sai thứ tự hay không.

Default Arguments

# cài đặt giá trị mặc định 'developer' cho tham số 'job'
def func[name, job='developer']:
    print[name, 'is a', job]

func['Bob', 'Joker']
# Prints Bob is a Joker

func['Bob']
# Prints Bob is a developer

Như ví dụ trên, khi khởi tạo hàm chúng ta có thể khai báo giá trị mặc định cho một tham số. Và ở câu lệnh gọi hàm, nếu chúng ta lược bỏ giá trị cho tham số đó thì hệ thống sẽ lấy giá trị mặc định.

Variable Length Positional Arguments [*args and **kwargs]

Khi chúng ta muốn tạo ra một function mà chúng ta không muốn giới hạn số lượng tham số truyền vào như ví dụ:

def func[*args]:
    print[args]
func[1, 2, 5, 8, 10, 20]
[1, 2 ,5, 8, 10, 20]

Như ví dụ trên khi chúng ta khai báo function với tham số *args, khi lời gọi hàm được thực hiện, các tham số được đưa vào một tuple, cách sử dụng một tupe như thế nào bạn tham khảo bài tupe trong Python nhé.

**kwargs

def func[**kwargs]:
    print[kwargs]
func[name='Bob', age=25, job='dev']
# Prints {'name': 'Bob', 'age': 25, 'job': 'dev'}

** cũng tương tự nhưng chỉ hoạt động với kiểu Keyword Arguments, tất cả các tham số truyền vào sẽ đưa về 1 dictionary.

Docstring

Docstring là khái nhiệm riêng trong python là đoạn mô tả về hàm.

def func[]:
    """This function prints
       message on the screen"""  
    print["Hello World!"]

Chúng ta khai báo docstring ở dưới header của hàm, các IDE sẽ hỗ trợ hiện thị đoạn mô tả về hàm ở đoạn code gọi hàm.

Nested Functions

Nested Function là một hàm được khai báo bên trong một hàm khác.

def print_msg[msg]:
    # This is the outer enclosing function

    def printer[]:
        # This is the nested function
        print[msg]

    return printer  # returns the nested function

another = print_msg["Hello"]
another[]

Hàm đệ quy [ Recursion]

Đệ quy là bên trong một hàm sử dụng lời gọi chính nó.

def countdown[num]:
    if num 

Chủ Đề