Hoặc, chúng ta có thể đặt tên cho các đối số khi chúng ta gọi hàm, điều này cho phép chúng ta chỉ định chúng theo bất kỳ thứ tự nào và thêm sự rõ ràng cho vị trí cuộc gọi;
print_date[month=3, day=19, year=1871]
1871/3/19
- Qua Twitter.
1 chứa các thành phần cho chức năng trong khi phần thân chứa công thứcprint_date[month=3, day=19, year=1871]
Các hàm có thể trả về kết quả cho người gọi của chúng bằng cách sử dụng print_date[month=3, day=19, year=1871]
2
print_date[month=3, day=19, year=1871]
- Sử dụng
3 để trả lại giá trị cho người gọiprint_date[month=3, day=19, year=1871]
- Có thể xảy ra bất cứ nơi nào trong chức năng
- Nhưng các chức năng sẽ dễ hiểu hơn nếu
2 xảy raprint_date[month=3, day=19, year=1871]
- Khi bắt đầu xử lý các trường hợp đặc biệt
- Cuối cùng, với một kết quả cuối cùng
def average[values]:
if len[values] == 0:
return None
return sum[values] / len[values]
a = average[[1, 3, 4]]
print['average of actual values:', a]
________số 8_______
print_greeting[]
0print_greeting[]
1- Nhớ. mỗi chức năng trả về một cái gì đó
- Một hàm không rõ ràng
2 một giá trị tự động trả vềprint_date[month=3, day=19, year=1871]
6print_date[month=3, day=19, year=1871]
print_greeting[]
2print_greeting[]
3Xác định lỗi cú pháp
- Đọc mã bên dưới và cố gắng xác định lỗi là gì mà không cần chạy nó
- Chạy mã và đọc thông báo lỗi. Nó là một
7 hay mộtprint_date[month=3, day=19, year=1871]
8?print_date[month=3, day=19, year=1871]
- Sửa lỗi
- Lặp lại bước 2 và 3 cho đến khi bạn đã sửa tất cả các lỗi
4print_greeting[]
Giải pháp
5print_greeting[]
Định nghĩa và sử dụng
Đoạn chương trình sau in ra gì?
6print_greeting[]
Giải pháp
7print_greeting[]
Một lệnh gọi hàm luôn cần dấu ngoặc đơn, nếu không, bạn sẽ nhận được địa chỉ bộ nhớ của đối tượng hàm. Vì vậy, nếu chúng ta muốn gọi hàm có tên báo cáo và đặt cho nó giá trị 22. 5 để báo cáo, chúng ta có thể gọi hàm như sau
8print_greeting[]
9print_greeting[]
Thứ tự hoạt động
Có gì sai trong ví dụ này?
0Hello!
Sau khi khắc phục sự cố ở trên, hãy giải thích lý do chạy mã ví dụ này
1Hello!
đưa ra đầu ra này
2Hello!
Tại sao kết quả của cuộc gọi là
6?print_date[month=3, day=19, year=1871]
Giải pháp
Vấn đề với ví dụ này là hàm
0 được xác định sau khi gọi hàm được thực hiện. Python không biết cách giải quyết tên1871/3/19
1 vì nó chưa được xác định và sẽ tăng giá trị1871/3/19
2 e. g. ,1871/3/19
31871/3/19
Dòng đầu tiên của đầu ra
4 được in bởi dòng mã đầu tiên,1871/3/19
5 liên kết giá trị được trả về bằng cách gọi1871/3/19
1 với biến1871/3/19
7. Dòng thứ hai là từ lệnh in thứ hai để in nội dung của biến1871/3/19
71871/3/19
0 không rõ ràng về giá trị1871/3/19
2, do đó, nó tự động trả vềprint_date[month=3, day=19, year=1871]
6print_date[month=3, day=19, year=1871]
đóng gói
Điền vào chỗ trống để tạo một hàm lấy một tên tệp làm đối số, tải dữ liệu trong tệp được đặt tên theo đối số và trả về giá trị nhỏ nhất trong dữ liệu đó
3Hello!
Giải pháp
4Hello!
Tìm người đầu tiên
Điền vào chỗ trống để tạo một hàm lấy danh sách các số làm đối số và trả về giá trị âm đầu tiên trong danh sách. Chức năng của bạn sẽ làm gì nếu danh sách trống?
5Hello!
Giải pháp
6Hello!
Nếu một danh sách trống hoặc một danh sách có tất cả các giá trị dương được chuyển đến hàm này, thì nó sẽ trả về
6print_date[month=3, day=19, year=1871]
7Hello!
8Hello!
Gọi tên
Trước đó chúng ta đã thấy chức năng này
9Hello!
Chúng ta thấy rằng chúng ta có thể gọi hàm bằng cách sử dụng các đối số được đặt tên, như thế này
0def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
3 in gì?def average[values]: if len[values] == 0: return None return sum[values] / len[values]
- Bạn đã từng thấy lệnh gọi hàm như thế này khi nào chưa?
- Khi nào và tại sao gọi hàm theo cách này lại hữu ích?
Giải pháp
4def average[values]: if len[values] == 0: return None return sum[values] / len[values]
- Chúng tôi đã xem các ví dụ về cách sử dụng các đối số được đặt tên khi làm việc với thư viện gấu trúc. Ví dụ: khi đọc trong tập dữ liệu bằng cách sử dụng
5, đối số cuối cùngdef average[values]: if len[values] == 0: return None return sum[values] / len[values]
6 là đối số được đặt têndef average[values]: if len[values] == 0: return None return sum[values] / len[values]
- Sử dụng các đối số được đặt tên có thể làm cho mã dễ đọc hơn vì người ta có thể nhìn thấy từ hàm gọi tên của các đối số khác nhau bên trong hàm. Nó cũng có thể làm giảm khả năng chuyển các đối số theo thứ tự sai, vì bằng cách sử dụng các đối số được đặt tên, thứ tự không thành vấn đề
Đóng gói khối If/Print
Đoạn mã dưới đây sẽ chạy trên máy in nhãn cho trứng gà. Cân kỹ thuật số sẽ báo khối lượng trứng gà [tính bằng gam] cho máy tính và sau đó máy tính sẽ in nhãn
1def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Khối if phân loại trứng có thể hữu ích trong các trường hợp khác, vì vậy để tránh lặp lại, chúng ta có thể gấp nó thành một hàm,
7. Sửa đổi chương trình để sử dụng chức năng sẽ cung cấp cho chúng tôi điều nàydef average[values]: if len[values] == 0: return None return sum[values] / len[values]
2def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
- Tạo định nghĩa hàm cho
7 sẽ hoạt động với chương trình đã sửa đổi ở trên. Lưu ý rằng giá trị trả về của hàmdef average[values]: if len[values] == 0: return None return sum[values] / len[values]
7 sẽ rất quan trọng. Đầu ra mẫu từ chương trình trên sẽ làdef average[values]: if len[values] == 0: return None return sum[values] / len[values]
0a = average[[1, 3, 4]] print['average of actual values:', a]
- Một quả trứng bẩn có thể có khối lượng hơn 90 gam và một quả trứng hư hoặc hỏng có thể có khối lượng dưới 50 gam. Sửa đổi hàm
7 của bạn để giải thích cho các điều kiện lỗi này. Đầu ra mẫu có thể làdef average[values]: if len[values] == 0: return None return sum[values] / len[values]
2a = average[[1, 3, 4]] print['average of actual values:', a]
Giải pháp
3def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Đóng gói phân tích dữ liệu
Giả sử rằng đoạn mã sau đã được thực thi
4def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Hoàn thành các câu dưới đây để có được GDP trung bình của Nhật Bản trong những năm được báo cáo cho những năm 1980
5def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Tóm tắt đoạn mã trên thành một hàm duy nhất
6def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Bạn sẽ khái quát hóa chức năng này như thế nào nếu bạn không biết trước những năm cụ thể nào xảy ra dưới dạng các cột trong dữ liệu? . sử dụng các cột để lọc ra những cột tương ứng với thập kỷ, thay vì liệt kê chúng trong mã. ]
Giải pháp
GDP trung bình của Nhật Bản trong những năm được báo cáo cho những năm 1980 được tính bằng
7def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Mã đó như một chức năng là
8def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Để có được mức trung bình cho các năm có liên quan, chúng ta cần lặp lại chúng
9def print_date[year, month, day]: joined = str[year] + '/' + str[month] + '/' + str[day] print[joined] print_date[1871, 3, 19]
Chức năng bây giờ có thể được gọi bởi
01871/3/19
11871/3/19
Mô phỏng một hệ động lực
Trong toán học, một hệ động lực là một hệ trong đó một hàm mô tả sự phụ thuộc thời gian của một điểm trong không gian hình học. Một ví dụ điển hình của hệ thống động lực là bản đồ logistic, một mô hình tăng trưởng tính toán mật độ dân số mới [từ 0 đến 1] dựa trên mật độ hiện tại. Trong mô hình, thời gian nhận các giá trị rời rạc 0, 1, 2, …
Định nghĩa một hàm gọi là
3 nhận hai đầu vào.a = average[[1, 3, 4]] print['average of actual values:', a]
4, đại diện cho dân số hiện tại [tại thời điểma = average[[1, 3, 4]] print['average of actual values:', a]
5] và một tham sốa = average[[1, 3, 4]] print['average of actual values:', a]
6. Hàm này sẽ trả về một giá trị thể hiện trạng thái của hệ thống [dân số] tại thời điểma = average[[1, 3, 4]] print['average of actual values:', a]
7, sử dụng hàm ánh xạa = average[[1, 3, 4]] print['average of actual values:', a]
8a = average[[1, 3, 4]] print['average of actual values:', a]
Sử dụng vòng lặp
9 hoặca = average[[1, 3, 4]] print['average of actual values:', a]
0, lặp lại hàmaverage of actual values: 2.6666666666666665
3 được xác định trong phần 1, bắt đầu từ tổng thể ban đầu là 0. 5, trong một khoảng thời giana = average[[1, 3, 4]] print['average of actual values:', a]
2. Lưu trữ các kết quả trung gian trong một danh sách để sau khi vòng lặp kết thúc, bạn đã tích lũy được một chuỗi các giá trị biểu thị trạng thái của bản đồ hậu cần tại các thời điểmaverage of actual values: 2.6666666666666665
3 [tổng cộng 11 giá trị]. In danh sách này để xem sự tiến hóa của dân sốaverage of actual values: 2.6666666666666665
Đóng gói logic vòng lặp của bạn thành một hàm có tên là
4 lấy dân số ban đầu làm đầu vào đầu tiên, tham sốaverage of actual values: 2.6666666666666665
5 làm đầu vào thứ hai và tham sốaverage of actual values: 2.6666666666666665
6 làm đầu vào thứ ba. Hàm sẽ trả về danh sách các giá trị biểu thị trạng thái của bản đồ hậu cần tại các thời điểmaverage of actual values: 2.6666666666666665
3. Chạy hàm này trong khoảng thời gianaverage of actual values: 2.6666666666666665
8 vàaverage of actual values: 2.6666666666666665
9 và in một số giá trị. Là dân số có xu hướng hướng tới một trạng thái ổn định?average of actual values: 2.6666666666666665
Giải pháp
21871/3/19
31871/3/19
41871/3/19
51871/3/19
Dân số dường như đang tiến gần đến con số không
Sử dụng hàm với điều kiện trong Pandas
Các hàm thường sẽ chứa các điều kiện. Dưới đây là một ví dụ ngắn sẽ cho biết đối số thuộc nhóm phần tư nào dựa trên các giá trị được mã hóa thủ công cho các điểm cắt phần tư
61871/3/19
71871/3/19
Hàm đó thường được sử dụng trong vòng lặp
9, nhưng Pandas có một cách khác, hiệu quả hơn để thực hiện điều tương tự và đó là bằng cách áp dụng một hàm cho khung dữ liệu hoặc một phần của khung dữ liệu. Đây là một ví dụ, sử dụng định nghĩa trêna = average[[1, 3, 4]] print['average of actual values:', a]
81871/3/19
Có rất nhiều thứ trong dòng thứ hai đó, vì vậy hãy xem từng phần một. Ở phía bên phải của
01, chúng tôi bắt đầu vớiprint_greeting[]
02, là cột trong khung dữ liệu có tên làprint_greeting[]
03 có nhãn làprint_greeting[]
04. Chúng tôi sử dụngprint_greeting[]
05 để làm những gì nó nói, áp dụngprint_greeting[]
06 cho giá trị của cột này cho mỗi hàng trong khung dữ liệuprint_greeting[]
Chức năng đọc và ghi trong Python là gì?
Nối và Đọc ['a+']. Sử dụng phương pháp này, bạn có thể đọc và ghi trong tệp. Nếu tệp chưa tồn tại, một tệp sẽ được tạo. Tay cầm được đặt ở cuối tệp. Văn bản mới viết sẽ được thêm vào cuối, sau dữ liệu đã viết trước đó.Hàm write[] trả về trong Python là gì?
f. write[string] ghi nội dung của chuỗi vào tệp, trả về số ký tự đã viết .Hàm write[] trả về là gì?
💡 Mẹo. Phương thức write[] trả về số ký tự đã viết . Nếu bạn muốn viết nhiều dòng cùng một lúc, bạn có thể sử dụng phương thức writelines[], phương thức này nhận danh sách các chuỗi. Mỗi chuỗi đại diện cho một dòng sẽ được thêm vào tệp.Ghi tệp trong Python là gì?
Ghi vào tệp hiện có . "a" - Nối - sẽ nối vào cuối tệp . "w" - Viết - sẽ ghi đè lên bất kỳ nội dung hiện có nào .