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 chức năng có thể trả lại kết quả cho người gọi của họ 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ớ lại. 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[]
Dung dịch
5print_greeting[]
Định nghĩa và sử dụng
Đoạn chương trình sau in ra gì?
6print_greeting[]
Dung dịch
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?
30print_date[month=3, day=19, year=1871]
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
31print_date[month=3, day=19, year=1871]
đưa ra đầu ra này
32print_date[month=3, day=19, year=1871]
Tại sao kết quả của cuộc gọi là
6?print_date[month=3, day=19, year=1871]
Dung dịch
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 hiển thị giá trị1871/3/19
2 một cách rõ ràng, do đó, nó sẽ 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 đó
33print_date[month=3, day=19, year=1871]
Dung dịch
34print_date[month=3, day=19, year=1871]
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?
35print_date[month=3, day=19, year=1871]
Dung dịch
36print_date[month=3, day=19, year=1871]
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, nó sẽ trả về
6print_date[month=3, day=19, year=1871]
37print_date[month=3, day=19, year=1871]
38print_date[month=3, day=19, year=1871]
Gọi tên
Trước đó chúng ta đã thấy chức năng này
39print_date[month=3, day=19, year=1871]
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
70print_date[month=3, day=19, year=1871]
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?
Dung dịch
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ác đối số khác nhau có 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
71print_date[month=3, day=19, year=1871]
Khối if phân loại trứng có thể hữu ích trong các tình huống 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]
72print_date[month=3, day=19, year=1871]
- 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 chức năng
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]
Dung dịch
73print_date[month=3, day=19, year=1871]
Đóng gói phân tích dữ liệu
Giả sử rằng đoạn mã sau đã được thực thi
74print_date[month=3, day=19, year=1871]
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
75print_date[month=3, day=19, year=1871]
Tóm tắt đoạn mã trên thành một hàm duy nhất
76print_date[month=3, day=19, year=1871]
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ã. ]
Dung dịch
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
77print_date[month=3, day=19, year=1871]
Mã đó như một chức năng là
78print_date[month=3, day=19, year=1871]
Để 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
79print_date[month=3, day=19, year=1871]
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, …
Xác định một chức năng gọi là
3 có 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
Dung dịch
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[]
Hàm write[] trả về trong Python là gì?
Mô tả. Phương thức tệp Python write[] ghi một chuỗi str vào tệp. Không có giá trị trả về . Do bộ đệm, chuỗi có thể không thực sự hiển thị trong tệp cho đến khi phương thức flush[] hoặc close[] được gọi.Tham số Python là gì?
Tham số trong python là biến — phần giữ chỗ cho giá trị thực mà hàm cần . Khi hàm được gọi, các giá trị này được truyền vào dưới dạng đối số. Ví dụ: các đối số được truyền vào hàm.Tham số đầu vào trong Python là gì?
Tham số của input[] là một chuỗi dấu nhắc in ra, nhắc người dùng nội dung họ phải nhập . Có vẻ tốt nhất để thêm một khoảng trắng ở cuối chuỗi dấu nhắc.