日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python編程入門指南之函數_python

作者:BetaDu ? 更新時間: 2022-03-27 編程語言

Python編程:函數

函數是帶名字的代碼塊,用于完成具體的工作。要執行函數定義的特定任務,可調用該函數。需要在程序中多次執行同一項任務時,你無需反復編寫完成該任務的代碼,而只需調用執行該任務的函數,讓 Python 運行其中的代碼。函數可以極大地簡化代碼編寫與讓代碼結構清晰化。

定義和調用函數

>>>def greeting():
>>>  """簡單問候"""
>>>  print("Hello!")

關鍵字 def?來告訴 Python 你要定義一個函數,后面緊跟函數名。在括號內指出函數為完成其任務需要什么樣的信息。緊跟在 def greet_user(): 后面的所有縮進行構成了函數體。三引號(""" “”")內的文本是被稱為**文檔字符串( docstring )**的注釋,描述了函數是做什么的,Python 使用它們來生成有關程序中函數的文檔。

>>>greeting()
Hello!

調用函數,可依次指定函數名以及用括號括起的必要信息。

向函數傳遞信息

如果我們在打招呼時,需要用戶的名字用作抬頭。為此,可在函數定義 def greet_user() 的括號內添加 username。

>>>def greeting(username):
>>>  """簡單問候用戶"""
>>>  print("Hello,"+username.title()+"!")
greeting("jessi")
Hello,Jessi!

在函數greet_user() 的定義中,變量 username 是一個?形參?—— 函數完成其工作所需的一項信息。在代碼 greet_user(‘jesse’) 中,值 ‘jesse’ 是一個?實參——調用函數時傳遞給函數的信息。將實參傳遞給函數并存儲在形參中。

傳遞實參:位置實參

你調用函數時, Python 必須將函數調用中的每個實參都關聯到函數定義中的一個形參。

最簡單的關聯方式是基于實參的順序,這種關聯方式被稱為位置實參。此時調用函數時實參的位置十分重要,需要與形參對應,不然會引發邏輯錯誤。

>>>def describe_pet(animal_type, pet_name):
>>>""" 顯示寵物的信息 """
>>>print("My " + animal_type + "'s name is " + pet_name.title() + ".")

>>>describe_pet('hamster', 'harry')
My hamster's name is Harry.

傳遞實參:關鍵字實參

關鍵字實參是傳遞給函數值時,直接在實參中將名稱和值關聯起來。此時實參的位置不再重要,形參所對應的值已經明示了。

describe_pet(animal_type='hamster', pet_name='harry')

傳遞實參:默認值

編寫函數時,可給每個形參指定 默認值 。在調用函數中給形參提供了實參時, Python 將使用指定的實參值,否則,將使用形參的默認值。默認值必須放在形參最后。

>>>def describe_pet(pet_name, animal_type='dog'):
   -snip-
>>>describe_pet(pet_name='willie')

你提供的實參多于或少于函數完成其工作所需的信息時,將出現實參不匹配錯誤。

傳遞列表

將列表傳遞給函數可以提升列表處理的效率。比如將用戶姓名列表 username 傳遞給 greeting() 函數可以生成批量打招呼的輸出。

def greeting(usernames):
"""給用戶打招呼"""
	for name in usernames:
    print("Hello, " + name.title() + "!")

禁止函數修改列表

有了傳遞列表的功能我們就可以批量修改列表中的數據。有時候,我們需要獲取列表中的數據而保持原始列表不變,此時就要使用切片表示法禁止修改列表。此時函數處理的是列表的副本,而原始列表不變。

function_name(list_name[:]) 

傳遞任意數量實參

當顧客要點一個pizza,我們不知道ta要點多少種配料,就可以寫成如下形式:

>>>def make_pizza(*toppings):
>>>    -snip-

形參名 *toppings 中的星號讓 Python 創建一個名為 toppings 的空元組,并將收到的所有值都封裝到這個元組中。

結合使用位置實參和任意數量實參

如果顧客要點一個pizza并且告知它的尺寸和配料:

>>>def make_pizza(size, *toppings):
>>> 	-snip

使用任意數量的關鍵字實參

有時候,需要接受任意數量的實參,但預先不知道傳遞給函數的會是什么樣的信息。在這種情況下,可使用字典接收輸入的實參。

>>>def build_profile(**user_info):
	"""創建字典存儲用戶信息"""
    profile{}
    for key,value in user_info.items():
      profile[key]=value
    return profile
>>>user_profile=build_profile(local='London',field='physics')
>>>print(user_profile)
{'local':'London','field':'physics'}

形參 **user_info 中的兩個星號讓 Python 創建一個名為 user_info 的空字典,并將收到的所有鍵值對都封裝到這個字典中。

返回值

函數并非總是直接顯示輸出,相反,它可以處理一些數據,并返回一個或一組值。函數返回的值被稱為返回值?。

可使用return返回調用函數的代碼行。返回值讓你能夠將程序的大部分繁重工作移到函數中去完成,從而簡化主程序。

返回簡單值

可將輸出完整姓名提出來作為一個函數模塊,此時主程序只有兩行:

>>>def get_formatted_name(first_name, middle_name, last_name):
>>>""" 返回整潔的姓名 """
>>>	full_name = first_name + ' ' + middle_name + ' ' + last_name
>>>	return full_name.title()

>>>musician = get_formatted_name('john', 'lee', 'hooker')
>>>print(musician)
John Lee Hooker

讓實參可選

有時候,需要讓實參變成可選的,這樣使用函數的人就只需在必要時才提供額外的信息。

例如,有些人的名字有中間名,有些人沒有,我們就可以給實參 middle_name 指定一個默認值 —— 空字符串,
并將其移到形參列表的末尾:

>>>def get_formatted_name(first_name, last_name, middle_name=''):
    """返回整潔姓名"""
>>>	  if middle_name:
>>> 	full_name = first_name + ' ' + middle_name + ' ' + last_name
>>>   else:
>>>		full_name = first_name + ' ' + last_name
>>>   return full_name

返回字典

函數可返回任何類型的值,包括列表和字典等較復雜的數據結構。

>>>def build_person(first_name,last_name):
  """返回包含人物信息的字典"""
>>>   person={'first':first_name,'last':last_name}
>>>   return person

將函數存儲在模塊中

函數的優點之一是,使用它們可將代碼塊與主程序分離。我們可以更進一步將函數存儲在模塊中,在主程序中導入模塊。

導入整個模塊

模塊是擴展名為 .py 的文件,包含要導入到程序中的代碼。

import pizza

代碼行 import pizza 讓 Python 打開文件 pizza.py ,并將其中的所有函數都復制到這個程序中。調用模塊中的函數用句點法:

module_name.function_name()

導入特定函數

如果你不需要模塊中的所有函數,只需要其中某個特定函數:

from module_name import function_name
from module_name import function_name  #導入模塊中某幾個函數

使用as給函數指定別名

如果要導入的函數的名稱可能與程序中現有的名稱沖突,或者函數的名稱太長,可指定簡短而獨一無二的 別名 —— 函數的另一個名稱,類似于外號。

from pizza import make_pizza as mp  #將函數make_pizza()重新命名為mp()

使用as給模塊指定別名

你還可以給模塊指定別名。這樣不僅能使代碼更簡潔,還可以讓你不再關注模塊名,而專注于描述性的函數名。這些函數名明確地指出了函數的功能,對理解代碼而言,它們比模塊名更重要。

import module_name as mn

導入模塊中的所有函數

from module_name import * 

import 語句中的 * 讓 Python 將模塊 pizza 中的每個函數都復制到這個程序文件中。由于導入了每個函數,可通過名稱來調用每個函數,而無需使用句點表示法。

然而,最好不要采用這種導入方法:如果模塊中有函數的名稱與你的項目中使用的名稱相同,可能導致意想不到的結果: Python 可能遇到多個名稱相同的函數或變量,進而覆蓋函數,而不是分別導入所有的函數。

函數編寫指南

1.應給函數指定描述性名稱,且只在其中使用小寫字母和下劃線

2.每個函數都應包含簡要地闡述其功能的注釋,該注釋應緊跟在函數定義后面,并采用文檔字符串格式

3.給形參指定默認值時與使用關鍵字實參時,等號兩邊不要有空格

4.如果程序或模塊包含多個函數,可使用兩個空行將相鄰的函數分開

5.所有的 import 語句都應放在文件開頭,唯一例外的情形是,在文件開頭使用了注釋來描述整個程序

總結

原文鏈接:https://blog.csdn.net/qq_53019232/article/details/122432568

欄目分類
最近更新