您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關python自定義函數有哪些寫法及用法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
函數是什么
函數是一組操作的集合,并賦予它一個名字。你已經使用過許多 Python 內置的函數,例如 string.title() 和 list.sort() 。我們也可以定義自己的函數,它們可以“教導” Python 作一些新的行為。
通用語法
一個函數通常如下所示:
# Let's define a function. def function_name(argument_1, argument_2): # Do whatever we want this function to do, # using argument_1 and argument_2 # Use function_name to call the function. function_name(value_1, value_2)
這段代碼并不能運行,但顯示了函數的通常用法。
定義一個函數
使用關鍵字 def 告訴 Python 你將要定義一個函數。
給你的函數起一個名字。函數名應當能表明函數是干什么的。
給函數需要的數據起名稱。
它們是變量名,而且只在函數里用。
這些名稱被稱為函數的參數(arguments)
確保函數的定義以冒號結束。
在函數內部,寫下任意你想要的代碼。
使用你的函數
函數名后跟圓括號調用函數。
在圓括號中,給出函數運行需要的數據。
函數中的參數可以是變量,例如 current_name 和 current_age,也可以是實際的數據,例如 'eric' 和 5。
第一個例子
第一個簡單的例子,我們實現一個道賀的程序。我們先實現一個不用函數的版本,嘗試去理解函數的作用。如下所示:
print("You are doing good work, Adriana!") print("Thank you very much for your efforts on this project.") print("\nYou are doing good work, Billy!") print("Thank you very much for your efforts on this project.") print("\nYou are doing good work, Caroline!") print("Thank you very much for your efforts on this project.")
上述代碼有很多重復的地方,函數就是用來替代重復的代碼,在需要的地方引用它。使用函數后的代碼如下所示:
def thank_you(name): # This function prints a two-line personalized thank you message. print("\nYou are doing good work, %s!" % name) print("Thank you very much for your efforts on this project.") thank_you('Adriana') thank_you('Billy') thank_you('Caroline')
在初始代碼中,每條被打印的語句中,除了名字其他部分都是相同的。當你看到這樣的重復語句后,就可以使用函數使你的程序更有效率。
一個常見的錯誤
函數一定要在使用之前定義。否則就會引起錯誤。示例如下:
thank_you('Adriana') thank_you('Billy') thank_you('Caroline') def thank_you(name): # This function prints a two-line personalized thank you message. print("\nYou are doing good work, %s!" % name) print("Thank you very much for your efforts on this project.")
第一行先調用了函數,但是 Python 不知道如何運行這個函數。只有在調用它之前定義才能正確運行。
第二個例子
在我們介紹列表中的排序方法時,寫了很多重復的代碼。讓我們先來看看不使用函數情況下的代碼。如下所示:
students = ['bernice', 'aaron', 'cody'] # Put students in alphabetical order. students.sort() # Display the list in its current order. print("Our students are currently in alphabetical order.") for student in students: print(student.title()) # Put students in reverse alphabetical order. students.sort(reverse=True) # Display the list in its current order. print("\nOur students are now in reverse alphabetical order.") for student in students: print(student.title())
接下來使用函數來實現相同的功能。代碼如下所示:
def show_students(students, message): # Print out a message, and then the list of students print(message) for student in students: print(student.title()) students = ['bernice', 'aaron', 'cody'] # Put students in alphabetical order. students.sort() show_students(students, "Our students are currently in alphabetical order.") #Put students in reverse alphabetical order. students.sort(reverse=True) show_students(students, "\nOur students are now in reverse alphabetical order.")
這段代碼就簡潔的多了。我們想要顯示列表中的學生名字并展示一條提示信息。給這個操作賦予一個名字 show_students() 。
這個函數需要兩條信息來完成它的工作。學生列表和一條要展示的信息。在函數內部,打印要展示的信息并循環打印學生列表。
現在為止我們的程序變得相當簡潔,我們只需要關注重復代碼中不同的部分即可。程序的可讀性也提高了。
使用函數的優點
通過這些例子,你可能已經體會到使用函數的好處:
在這個簡單的例子中,我們節省了不少的工作量。在更大的程序中,將會節省更多的工作量。
當一個函數可以工作后,我們不必擔心函數的代碼。每次在程序中重復使用函數時,都是一次檢驗函數的機會。每次發現 bug 時,只需要修改函數代碼而不必在每個重復的地方修改。
同理,在完善,增添代碼功能時,只需要修改函數內部代碼即可。
返回值
每個函數都可以返回一個值。返回值可以是當前函數主要功能外無足輕重的功能,也可以是函數的主要功能。下述代碼通過數字返回相應的單詞。
def get_number_word(number): # Takes in a numerical value, and returns # the word corresponding to that number. if number == 1: return 'one' elif number == 2: return 'two' elif number == 3: return 'three' # ... # Let's try out our function. for current_number in range(0,4): number_word = get_number_word(current_number) print(current_number, number_word)
在上述代碼中,輸出的第一行是 None,這是一個邏輯錯誤。函數接受一個參數 0,這個變量不在函數 if 鏈的判斷范圍內,返回了一個 None。我們需要添加一個 else 來處理不在判斷范圍內的情況。如下所示:
def get_number_word(number): # Takes in a numerical value, and returns # the word corresponding to that number. if number == 0: return 'zero' elif number == 1: return 'one' elif number == 2: return 'two' elif number == 3: return 'three' else: return "I'm sorry, I don't know that number." # Let's try out our function. for current_number in range(0,6): number_word = get_number_word(current_number) print(current_number, number_word)
如果你在函數中使用返回語句,謹記在碰到返回返回語句后函數會立即停止執行。例如,我們可以在函數的返回語句后添加一條語句,這條語句永遠都不會被執行。如下所示:
def get_number_word(number): # Takes in a numerical value, and returns # the word corresponding to that number. if number == 0: return 'zero' elif number == 1: return 'one' elif number == 2: return 'two' elif number == 3: return 'three' else: return "I'm sorry, I don't know that number." # This line will never execute, because the function has already # returned a value and stopped executing. print("This message will never be printed.") # Let's try out our function. for current_number in range(0,6): number_word = get_number_word(current_number) print(current_number, number_word)
上述就是小編為大家分享的python自定義函數有哪些寫法及用法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。