Fungsi Python3


Fungsi ialah segmen kod yang teratur dan boleh diguna semula yang digunakan untuk melaksanakan fungsi tunggal atau berkaitan. Fungsi

boleh meningkatkan modulariti aplikasi dan penggunaan semula kod. Anda sudah tahu bahawa Python menyediakan banyak fungsi terbina dalam, seperti print(). Tetapi anda juga boleh mencipta fungsi anda sendiri, yang dipanggil fungsi yang ditentukan pengguna.


Tentukan fungsi

Anda boleh mentakrifkan fungsi dengan fungsi yang anda mahu, berikut adalah peraturan mudah:

  • Kod fungsi A blok bermula dengan kata kunci def, diikuti dengan nama pengecam fungsi dan kurungan ().

  • Sebarang parameter masuk dan pembolehubah bebas mesti diletakkan di antara kurungan dan ruang antara kurungan boleh digunakan untuk menentukan parameter.

  • Baris pertama fungsi boleh secara pilihan menggunakan docstring - digunakan untuk menyimpan perihalan fungsi.

  • Kandungan fungsi bermula dengan kolon dan diinden.

  • kembali [ungkapan] Menamatkan fungsi, secara pilihan mengembalikan nilai kepada pemanggil. Kembali tanpa ungkapan adalah bersamaan dengan mengembalikan Tiada.


Sintaks

Python mentakrifkan fungsi menggunakan kata kunci def, format umum adalah seperti berikut:

def 函数名(参数列表):
    函数体

Secara lalai, nilai parameter ​dan nama parameter Ia dipadankan dalam susunan yang ditakrifkan dalam pengisytiharan fungsi.

Contoh

Mari kita gunakan fungsi untuk mengeluarkan "Hello World!":

>>> def hello() :
   print("Hello World!")

   
>>> hello()
Hello World!
>>>

Untuk aplikasi yang lebih kompleks, bawa pembolehubah parameter dalam fungsi:

#!/usr/bin/python3

# 计算面积函数
def area(width, height):
    return width * height
 
def print_welcome(name):
    print("Welcome", name)

print_welcome("php")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))

Hasil keluaran contoh di atas:

Welcome php
width = 4  height = 5  area = 20

Panggilan fungsi

Tentukan fungsi: beri nama fungsi, nyatakan parameter yang terkandung dalam fungsi dan blok kod struktur.

Selepas struktur asas fungsi ini selesai, anda boleh melaksanakannya melalui panggilan fungsi lain atau terus daripada gesaan arahan Python.

Contoh berikut memanggil fungsi printme():

#!/usr/bin/python3
 
# 定义函数
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");

Hasil output contoh di atas:

我要调用用户自定义函数!
再次调用同一函数

Melalui parameter mengikut nilai dan lulus parameter melalui rujukan

Dalam Python, semua parameter (pembolehubah) diluluskan melalui rujukan. Jika anda menukar parameter dalam fungsi, parameter asal juga akan ditukar dalam fungsi yang memanggil fungsi ini. Contohnya:

#!/usr/bin/python3
 
# 可写函数说明
def changeme( mylist ):
   "修改传入的列表"
   mylist.append([1,2,3,4]);
   print ("函数内取值: ", mylist)
   return
 
# 调用changeme函数
mylist = [10,20,30];
changeme( mylist );
print ("函数外取值: ", mylist)

Objek dihantar ke fungsi dan objek untuk menambah kandungan baharu pada penghujungnya menggunakan rujukan yang sama. Oleh itu, output adalah seperti berikut:

函数内取值:  [10, 20, 30, [1, 2, 3, 4]]
函数外取值:  [10, 20, 30, [1, 2, 3, 4]]

Parameter

Berikut ialah jenis parameter formal yang boleh digunakan semasa memanggil fungsi:

  • Parameter yang diperlukan

  • Parameter kata kunci

  • Parameter lalai

  • Parameter panjang boleh ubah

Parameter yang diperlukan

Parameter yang diperlukan mesti dihantar ke dalam fungsi dalam susunan yang betul. Kuantiti apabila dipanggil mestilah sama seperti semasa diisytiharkan.

Apabila memanggil fungsi printme(), anda mesti memasukkan parameter, jika tidak ralat sintaks akan berlaku:

#!/usr/bin/python3
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme();

Hasil output contoh di atas:

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    printme();
TypeError: printme() missing 1 required positional argument: 'str'

Parameter kata kunci

Parameter kata kunci berkait rapat dengan panggilan fungsi Panggilan fungsi menggunakan parameter kata kunci untuk menentukan nilai parameter yang diluluskan.

Menggunakan hujah kata kunci membolehkan fungsi dipanggil dalam susunan yang berbeza daripada semasa ia diisytiharkan, kerana penterjemah Python dapat memadankan nama parameter dengan nilai parameter.

Contoh berikut menggunakan nama parameter apabila memanggil function printme():

#!/usr/bin/python3
 
#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str);
   return;
 
#调用printme函数
printme( str = "php中文网");

Hasil keluaran contoh di atas:

php中文网

Contoh berikut menunjukkan penggunaan parameter fungsi dan tidak perlu digunakan Tentukan urutan:

#!/usr/bin/python3
 
#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="php" );

Hasil keluaran contoh di atas:

名字:  php
年龄:  50

Parameter lalai

Apabila memanggil fungsi, jika tiada parameter diluluskan , parameter lalai akan digunakan. Dalam contoh berikut, jika parameter umur tidak diluluskan, nilai lalai digunakan:

#!/usr/bin/python3
 
#可写函数说明
def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print ("名字: ", name);
   print ("年龄: ", age);
   return;
 
#调用printinfo函数
printinfo( age=50, name="php" );
print ("------------------------")
printinfo( name="php" );

Hasil keluaran contoh di atas:

名字:  php
年龄:  50
------------------------
名字:  php
年龄:  35

Parameter panjang boleh ubah

Anda mungkin memerlukan fungsi untuk mengendalikannya Lebih banyak parameter daripada yang diisytiharkan pada asalnya. Parameter ini dipanggil parameter panjang berubah-ubah Tidak seperti dua parameter di atas, ia tidak akan dinamakan apabila diisytiharkan. Sintaks asas adalah seperti berikut:

def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

Nama pembolehubah dengan asterisk (*) akan menyimpan semua parameter pembolehubah yang tidak dinamakan. Jika tiada parameter dinyatakan apabila fungsi dipanggil, ia adalah tuple kosong. Kita juga tidak boleh menghantar pembolehubah yang tidak dinamakan kepada fungsi tersebut. Contoh berikut:

#!/usr/bin/python3
 
# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   for var in vartuple:
      print (var)
   return;
 
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

Hasil keluaran contoh di atas:

输出:
10
输出:
70
60
50

Fungsi tanpa nama

Python menggunakan lambda untuk mencipta fungsi tanpa nama.

Apa yang dipanggil tanpa nama bermakna anda tidak lagi menggunakan bentuk standard pernyataan def untuk mentakrifkan fungsi.

  • lambda hanyalah ungkapan, dan badan fungsi jauh lebih ringkas daripada def.

  • Isi badan lambda ialah ungkapan, bukan blok kod. Hanya logik terhad boleh dirangkumkan dalam ungkapan lambda.

  • Fungsi lambda mempunyai ruang nama sendiri dan tidak boleh mengakses parameter di luar senarai parameternya sendiri atau dalam ruang nama global.

  • Walaupun fungsi lambda nampaknya hanya boleh menulis satu baris, ia tidak bersamaan dengan fungsi sebaris C atau C++ Tujuan yang terakhir adalah untuk memanggil fungsi kecil tanpa menduduki memori tindanan dan dengan itu meningkatkan kecekapan pelaksanaan.

Sintaks

Sintaks fungsi lambda hanya mengandungi satu pernyataan, seperti berikut:

lambda [arg1 [,arg2,.....argn]]:expression

Contoh berikut:

#!/usr/bin/python3
 
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

Keputusan keluaran contoh di atas:

相加后的值为 :  30
相加后的值为 :  40

kenyataan pulangan

kembali [ungkapan] Kenyataan digunakan untuk keluar dari fungsi, secara pilihan mengembalikan ungkapan kepada pemanggil. Kenyataan pulangan tanpa nilai parameter mengembalikan Tiada. Contoh sebelumnya tidak menunjukkan cara mengembalikan nilai Contoh berikut menunjukkan penggunaan pernyataan pulangan:

#!/usr/bin/python3

# 可写函数说明
def sum( arg1, arg2 ):
   # 返回2个参数的和."
   total = arg1 + arg2
   print ("函数内 : ", total)
   return total;

# 调用sum函数
total = sum( 10, 20 );
print ("函数外 : ", total)

Hasil keluaran contoh di atas:

函数内 :  30
函数外 :  30

Skop pembolehubah.

Dalam Python, pembolehubah program tidak boleh diakses dari semua lokasi keizinan akses bergantung pada tempat pembolehubah diberikan nilai.