Untuk memiliki banyak parameter, cukup terima lebih dari 1 parameter saat mendefinisikan fungsi. Jumlah argumen dalam fungsi sama dengan jumlah parameter
Untuk mendapatkan banyak pengembalian, kita perlu menggunakan Tuples
Tupel
- Seperti daftar - dapat berisi beberapa nilai
- Tidak dapat diubah - tidak dapat mengubah nilai, ini berarti Anda tidak dapat memperbarui elemen di Tuple dengan print(even_nums[1])
second_num = even_nums[1]
6 - Bangun menggunakan tanda kurung ()
Buka kemasan tuple menjadi beberapa variabel
2
3
even_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
Mengakses elemen tuple seperti daftar menggunakan pengindeksan nol
2
print(even_nums[1])
second_num = even_nums[1]
Contoh
2
3
4
5
6
def raise_both(value1, value2) # Function header
"""Raise value1 to the power of value2 and vice versa"""
new_value1 = value1 ** value2 # Function body
new_value2 = value2 ** value1
new_tuple = (new_value1, new_value2)
return new_tuple
Studi kasus. jumlah bahasa tweeter
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Define count_entries()
def count_entries(df, col_name):
"""Return a dictionary with counts of
occurrences as value for each key."""
# Initialize an empty dictionary: langs_count
langs_count = {}
# Extract column from DataFrame: col
col = df[col_name]
# Iterate over lang column in DataFrame
for entry in col:
# If the language is in langs_count, add 1
if entry in langs_count.keys():
langs_count[entry] += 1
# Else add the language to langs_count, set the value to 1
else:
langs_count[entry] = 1
# Return the langs_count dictionary
return(langs_count)
# Call count_entries(): result
result = count_entries(tweets_df, 'lang')
# Print the result
print(result)
Cakupan dan Fungsi yang Ditentukan Pengguna
Lingkup adalah bagian dari program di mana objek atau nama dapat diakses, karena tidak semua objek dapat diakses di mana pun dalam skrip
- Cakupan global. didefinisikan di bagian utama skrip atau program python
- Cakupan lokal. didefinisikan di dalam suatu fungsi. Setelah eksekusi selesai, nama apa pun di dalam lingkup lokal tidak akan ada lagi
- Lingkup bawaan. nama dalam modul bawaan yang ditentukan sebelumnya yang disediakan python, seperti print(even_nums[1])
second_num = even_nums[1]
7 dan print(even_nums[1])
second_num = even_nums[1]
8
Urutan cakupan yang akan dilihat Python saat memanggil nama adalah. lingkup lokal -> Melampirkan fungsi (jika ada) -> lingkup global -> lingkup bawaan. (Aturan LEGB)
Contoh
Pertama kita mendefinisikan fungsi
"""Return the square of a value""" # Docstring
new_value = value ** 2
return new_value
num = square(4)
print(num)
0def square(value):
"""Return the square of a value""" # Docstring
new_value = value ** 2
return new_value
num = square(4)
print(num)
1
Kita tidak dapat mengakses variabel print(even_nums[1])
second_num = even_nums[1]
_9 di luar fungsi, karena variabel ini didefinisikan hanya dalam lingkup lokal fungsi, dan tidak didefinisikan secara global
Di bawah ini, kami mendefinisikan nama secara global sebelum mendefinisikan dan memanggil fungsi
"""Return the square of a value""" # Docstring
new_value = value ** 2
return new_value
num = square(4)
print(num)
2def square(value):
"""Return the square of a value""" # Docstring
new_value = value ** 2
return new_value
num = square(4)
print(num)
3
- Setiap kali kami memanggil nama dalam lingkup global, kami akan mengakses nama dalam lingkup global
- Setiap kali kita memanggil nama dalam lingkup lokal fungsi, Python akan melihat terlebih dahulu dalam lingkup lokal (itulah sebabnya 1
2
3
4
5
6
0 menghasilkan 9 bukannya 10). Jika Python tidak dapat menemukan nama dalam lingkup lokal, ia akan, dan baru kemudian, mencari dalam lingkup global
Di bawah ini, kami mengakses new_val, yang didefinisikan secara global, di dalam kotak fungsi. Perhatikan bahwa nilai global yang diakses adalah nilai pada saat fungsi dipanggil, bukan nilai saat fungsi didefinisikan
Jadi, jika kita menetapkan kembali nilai ke 1
2
3
4
5
6
1, dan memanggil fungsi kuadrat lagi, kita dapat melihat bahwa nilai baru dari 1
2
3
4
5
6
1 diakses
second_num = even_nums[1]
_11_______5
Bagaimana jika kita ingin mengubah nilai nama global dalam pemanggilan fungsi?
second_num = even_nums[1]
_11_______7
Contoh lain
second_num = even_nums[1]
_11_______9
Fungsi bersarang
Ini membantu ketika beberapa perhitungan serupa diperlukan
"""Return the square of a value""" # Docstring
new_value = value ** 2
return new_value
num = square(4)
print(num)
41
2
3
1
Juga, dapat digunakan untuk mengembalikan fungsi
2
3
21
2
3
3
Menggunakan 1
2
3
4
5
6
_4 untuk mengakses dan mengubah nama dalam lingkup terlampir
2
3
21
2
3
5 Argumen Default dan Fleksibel
Tambahkan argumen default
12
3
4
5
6
1
2
3
_7
Argumen yang fleksibel
Kami menggunakan argumen fleksibel saat kami tidak yakin tentang argumen spesifik yang ditambahkan ke fungsi dengan 1
2
3
4
5
6
5
2
3
81
2
3
9
Kami juga dapat memberikan jumlah argumen kata kunci yang sewenang-wenang dengan 1
2
3
4
5
6
6, yang merupakan argumen yang didahului oleh pengidentifikasi. (kamus)
a, b, c = even_nums
print(a) #will return 2
0even_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
1
Studi kasus
Hasilkan fungsi sebelumnya untuk menghitung kejadian di kolom mana pun dalam kerangka data
a, b, c = even_nums
print(a) #will return 2
2even_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
3Fungsi Lambda & Penanganan Kesalahan
Fungsi Lambda
Lambda memungkinkan Anda menulis fungsi dengan cepat dan berpotensi kotor
12
even_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
5
1
2
3
4
5
6
_7
- mengambil dua argumen. 1
2
3
4
5
6
_8 - berlaku fungsi semua elemen dalam urutan
- Dalam hal ini, fungsi tersebut bahkan tidak perlu memiliki nama, dan dengan demikian disebut sebagai fungsi anonim. even_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
6even_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
7
1
2
3
4
5
6
_9
- menyaring elemen dari daftar yang tidak memenuhi kriteria tertentueven_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
8even_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
9
def raise_both(value1, value2) # Function header
"""Raise value1 to the power of value2 and vice versa"""
new_value1 = value1 ** value2 # Function body
new_value2 = value2 ** value1
new_tuple = (new_value1, new_value2)
return new_tuple
_0
- berguna untuk melakukan beberapa perhitungan pada daftar dan mengembalikan satu nilai sebagai hasilnya
- perlu diimpor dari modul def raise_both(value1, value2) # Function header
"""Raise value1 to the power of value2 and vice versa"""
new_value1 = value1 ** value2 # Function body
new_value2 = value2 ** value1
new_tuple = (new_value1, new_value2)
return new_tuple
_1 sebelum digunakaneven_nums = (2, 4, 6)
a, b, c = even_nums
print(a) #will return 2
81
2
1
Penanganan Kesalahan
Kita harus berusaha untuk menghasilkan pesan kesalahan yang berguna untuk fungsi yang kita tulis. tangkap pengecualian selama eksekusi dengan klausa def raise_both(value1, value2) # Function header
"""Raise value1 to the power of value2 and vice versa"""
new_value1 = value1 ** value2 # Function body
new_value2 = value2 ** value1
new_tuple = (new_value1, new_value2)
return new_tuple
2 & def raise_both(value1, value2) # Function header
"""Raise value1 to the power of value2 and vice versa"""
new_value1 = value1 ** value2 # Function body
new_value2 = value2 ** value1
new_tuple = (new_value1, new_value2)
return new_tuple
3