日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

详解Python模块化编程-自定义函数

發布時間:2024/9/15 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解Python模块化编程-自定义函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文目錄

0、楔子 1、自定義函數格式 2、編寫函數說明文檔 3、函數參數函數形參和實參區別位置實參關鍵字實參默認實參讓實參可選傳遞任意數量的實參結合使用位置實參和任意數量實參使用任意數量的關鍵字實參 4、函數返回值將函數存儲在模塊中并導入新程序中

正文開始啦

0、楔子

函數可以理解為多條語句整合而成的代碼塊,指定特定的名稱, 用于實現具體的功能。函數可以實現代碼更好的復用,是結構化編程的核心。例如,已知圓的半徑r求圓的面積,可以通過如下代碼解決。

import?math r?=?3 S?=?math.pi*r*r print(S)

28.274333882308138

但是,當需要求多個圓的面積時,反復寫上面代碼就顯得很繁瑣,這時可以定義一個求圓面積的函數s_circle,每次只需傳入不同圓的半徑,即可計算不同圓面積。

def?s_circle(r):S?=?math.pi*r*rreturn?S print(s_circle(3)) print(s_circle(333))

28.274333882308138

348368.06776391855


1、 自定義函數格式

格式如下:

def?fun_name(args):fun_bodyreturn?xxfun_name,自定義的函數名; args,傳入函數的參數; fun_body,函數體,即函數想實現的功能; return?xx,return結束函數,函數返回值?xx,不指定則返回None。

舉個栗子,定義一個計算圓面積的函數:

def?s_circle(r):#自定義函數s_circle,傳入的參數r。S?=?math.pi*r*r#函數體return?S????#返回圓的面積S print(s_circle(3))#函數名()調用函數,括號內為傳入

28.274333882308138

當函數體只有一行時,可以置于def語句同一行。

def?for_multi(x,y):?print(x*y)#函數定義 for_multi(10,12)#調用函數

120


2、編寫函數說明文檔

說明文檔置于函數開頭處,作為函數的一部分存儲起來,通過函數名.__doc__可查看說明文檔。

def?s_circle(r):"compute?the?circular?area?with?radius"#函數說明文檔內容S?=?math.pi*r*rreturn?S s_circle.__doc__#函數__doc__屬性存儲函數說明文檔

'compute the circular area with radius'


3、函數參數

形參和實參區別

  • 形參:定義函數時,函數名稱后面括號里的內容為形參;

  • 實參:調用函數時,括號里的內容為實參。

def?hello2sb(sb):#括號內為傳入的參數,此處sb為形參。print("Hello?%s!"%sb.title()) hello2sb("jack")?#此處jack為調用hello2sb的實參,是調用函數時傳遞給函數的信息。

Hello Jack!

位置實參

調用函數時按照形參的順序關聯實參。

def?des_sb(name,provice):"""describe?sb"""print("%s?comes?from?%s."%(name.title(),provice.title())) #title函數返回標題化字符,單詞的開頭為大寫,其余為小寫 des_sb("cao","anhui")

Cao comes from Anhui.

關鍵字實參

形參=實參傳遞參數,無需考慮實參順序。

def?des_sb(name,provice):"""describe?sb"""print("%s?comes?from?%s."%(name.title(),provice.title())) #無需考慮輸入實參順序,以下兩種輸出一樣 des_sb(name?=?"cao",provice?=?"anhui") des_sb(provice?=?"anhui",name?=?"cao")#顛倒實參順序

Cao comes from Anhui.

Cao comes from Anhui.

默認實參

定義函數時,給形參一個默認值,調用函數時若提供了實參則使用提供值,否則使用默認值。

def?des_sb(name,provice,dynasty="Three?Kingdoms?Era"):#定義時形參dynasty指定默認值"""describe?sb"""print("%s?comes?from?%s?of?%s."%(name.title(),provice.title(),dynasty)) des_sb(name?=?"cao",provice?=?"anhui")#形參此處未指定實參,調用默認值 des_sb(name?=?"cao",provice?=?"anhui",dynasty?=?"Qin")#dynasty指定實參,使用實參

Cao comes from Anhui of Three Kingdoms Era.

Cao comes from Anhui of Qin.

**注意:**以上三種參數傳遞方式可以混用,自己最容易理解的調用方式即可。

讓實參可選

指定形參默認值為空字符串,放到所有形參最后,則該形參可空(可以提供實參也可以不用)。

def?return_fullname(firstname,lastname,middlename=""):"""Show?fullname"""if?middlename:fullname?=?"?".join((middlename.title()+""+lastname,firstname.title()))else:fullname?=?"?".join((lastname.title(),firstname.title()))return?fullname#返回fullname #調用函數 fullname?=?return_fullname(firstname?=?"cao",lastname?=?"cao")#middlename形參為空 fullname1?=?return_fullname(firstname?=?"cao",middlename?=?"meng",lastname?=?"de") print(fullname) print(fullname1)

Cao Cao

Mengde Cao

傳遞任意數量的實參

定義函數時使用:*形參名稱。

def?known_tangera(*heros):#星號(*)使得Python將所有實參存入heros元組中"""show?known?heros?in?tang"""print(heros) known_tangera("yuanba?li","shiming?li") known_tangera("yuanba?li","shiming?li","cheng?nuo")

('yuba li', 'shiming li')

('yuba li', 'shiming li', 'cheng nuo')

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

在函數定義中將接納任意數量實參的形參(*形參名)放在最后.。

def?make_pizza(size,?*toppings):"""概述要制作的比薩"""print("\nMaking?a?"?+?str(size)?+?"-inch?pizza?with?the?following?toppings:")for?topping?in?toppings:#toppings元組存儲任意數量的實參print("-?"?+?topping) make_pizza(16,?'pepperoni') make_pizza(12,?'mushrooms',?'green?peppers',?'extra?cheese')

Making a 16-inch pizza with the following toppings:

- pepperoni

Making a 12-inch pizza with the following toppings:

- mushrooms -

- green peppers

- extra cheese

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

定義函數時使用:**形參名稱。

def?build_profile(first,?last,?**user_info):#形參**user_info?中的兩個星號讓Python創建一個名為user_info?的空字典,?#并將收到的所有名稱—值對都封裝到這個字典中。"""創建一個字典,?其中包含我們知道的有關用戶的一切"""profile?=?{}profile['first_name']?=?firstprofile['last_name']?=?lastfor?key,?value?in?user_info.items():profile[key]?=?valuereturn?profile #傳遞 user_profile?=?build_profile('albert',?'einstein',location='princeton',field='physics') print(user_profile)

{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}


4、函數返回值

在函數中, 可使用return 語句將值返回到調用函數的代碼行。

將函數存儲在模塊中并導入新程序中

將函數存儲在被稱為模塊的獨立文件(模塊可以理解為以.py結尾的文件)中,再將模塊導入到主程序中。import 語句允許在當前運行的程序文件中使用模塊中的代碼。導入模塊的方法有多種, 下面對每種都作簡要的介紹

  • 導入整個模塊

下面創建pizza模塊,pizza.py:

def?make_pizza(size,?*toppings):"""概述要制作的比薩"""print("\nMaking?a?"?+?str(size)?+"-inch?pizza?with?the?following?toppings:")for?topping?in?toppings:print("-?"?+?topping)
  • 在pizza.py所在的目錄中創建另一個名為making_pizzas.py的模塊:

import?pizza#導入pizza模塊 #讓Python打開文件pizza.py,并將其中的所有函數都復制到這個程序中。 #本程序可以使用pizza.py中定義的所有函數。 pizza.make_pizza(16,?'pepperoni')#調用pizza模塊中make_pizza函數 pizza.make_pizza(12,?'mushrooms',?'green?peppers',?'extra?cheese')

Making a 16-inch pizza with the following toppings:

- pepperoni

Making a 12-inch pizza with the following toppings:

- mushrooms

- green peppers

- extra cheese

  • 導入模塊特定的函數

#從module_name模塊中導入任意數量函數,函數之間逗號分割。

from module_name import function_0, function_1, function_2

making_pizzas.py

from?pizza?import?make_pizza#只導入pizza模塊中的make_pizza函數 make_pizza(16,?'pepperoni')#調用pizza模塊中make_pizza函數 make_pizza(12,?'mushrooms',?'green?peppers',?'extra?cheese')
  • 導入模塊中的所有函數

使用星號(* ) 運算符可讓Python導入模塊中的所有函數。

from?pizza?import?*#導入pizza模塊所有函數 make_pizza(16,?'pepperoni') make_pizza(12,?'mushrooms',?'green?peppers',?'extra?cheese')
  • 使用as 給函數指定別名

from?pizza?import?make_pizza?as?mp#函數別名mp mp(16,?'pepperoni') mp(12,?'mushrooms',?'green?peppers',?'extra?cheese')
  • 使用as 給模塊指定別名

import?pizza?as?p#模塊別名p p.make_pizza(16,?'pepperoni') p.make_pizza(12,?'mushrooms',?'green?peppers',?'extra?cheese'

參考:Python編程:從入門到實踐Python基礎教程(第3版)

END

各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)

推薦閱讀

牛逼!Python常用數據類型的基本操作(長文系列第①篇)

牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)

牛逼!Python函數和文件操作(長文系列第③篇)

牛逼!Python錯誤、異常和模塊(長文系列第④篇)

總結

以上是生活随笔為你收集整理的详解Python模块化编程-自定义函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产又粗又黄的视频 | 污网站免费 | 天天躁夜夜操 | 国产欧美激情 | 国产成人无码aa精品一区 | 日韩在线观看网站 | 欧美日韩一区二区三区不卡 | 青青草免费观看视频 | 国产区精品 | 中文字幕第四页 | 丰满女人又爽又紧又丰满 | 久久久久综合网 | 毛片视频网站 | 色吊丝中文字幕 | 香蕉久久综合 | 国产三极片 | 精品福利视频一区二区 | 婷婷丁香在线 | 天天碰视频 | 国产色播 | 黄色av片三级三级三级免费看 | xxxxx69| 给我免费观看片在线电影的 | 粗暴video蹂躏hd| 免费成人黄色片 | 日韩欧美亚洲在线 | 欧美视频1区 | 国产婷婷综合 | 最新视频 - 88av | 亚洲成人精选 | 成人av一区二区三区 | 亚洲理伦电影 | 日韩在线观看 | 精品一区二区视频在线观看 | 影音先锋久久久 | 成人精品一区二区三区电影 | 精品国产一区二区三区久久久久久 | 欧美最猛性xxxx | 超碰导航 | 九草在线观看 | 免费毛片视频 | 国产黄色精品视频 | 欧美最猛黑人xxxx | 51自拍视频 | 久久五月网 | 日韩毛片高清在线播放 | 日韩在线三区 | 涩涩视频免费观看 | 91av久久| 超碰97免费在线 | 超碰在线视屏 | 欧美日韩操 | 色八戒av| 欧美黄色特级视频 | 浮妇高潮喷白浆视频 | 荫蒂被男人添免费视频 | 黄色网免费 | 国产激情视频一区二区 | 99在线精品视频免费观看20 | 欧美激情片一区二区 | 国产专区一区 | 国产区精品视频 | 成人毛片视频在线观看 | 有码在线 | 亚洲中文字幕无码专区 | 久久免费网 | 日韩一区在线观看视频 | 91麻豆精品一二三区在线 | 亚洲色图狠狠干 | 好男人视频www | 日本毛片网站 | 91 高清 在线 制服 偷拍 | 激情五月激情综合网 | 亚洲成熟少妇视频在线观看 | 国产精品系列在线观看 | 欧美撒尿777hd撒尿 | 91手机在线| 无码精品久久久久久久 | 99久久亚洲精品日本无码 | 免费成人看视频 | 欧美日韩一区二区三区在线播放 | 亚洲夜夜爱 | 色婷婷av一区二区三 | 伊人一区二区三区四区 | 波多野结衣亚洲天堂 | 欧美老司机 | 国产裸体网站 | 一级黄色片在线看 | www.香蕉视频.com | 亲嘴扒胸摸屁股免费视频日本网站 | 黄色香港三级三级三级 | 亚洲欧洲色 | 波岛野结衣 | 男女精品视频 | 国产精品第108页 | 日韩白浆 | 国产精品刘玥久久一区 | 欧美性色a | 国产天天射 |