Python-自定義函數(shù)

自定義函數(shù)及調(diào)用

創(chuàng)建一個(gè)專(zhuān)門(mén)存放自定義函數(shù)的文件夾 D:\python\customize

構(gòu)建一個(gè)簡(jiǎn)單的函數(shù)

def greet_user():          # 關(guān)鍵詞 def 開(kāi)頭,后接定義的函數(shù)名肺然,括號(hào)必不可少辉饱,最后以冒號(hào)結(jié)尾 
    '''顯示簡(jiǎn)單的問(wèn)候語(yǔ)'''    # 注釋用三個(gè)引號(hào)括起
    print('Hello!')        # 單引號(hào)雙引號(hào)都可以

將函數(shù)保存到 customize 文件夾中已骇,命名為greet.py

image-20211114002034335

調(diào)用自定義的函數(shù)

import sys
sys.path.append(r"D:\python\customize") # 設(shè)置自定義的路徑
import greet                            # 調(diào)用自定義函數(shù)greet.py的文件名
greet.greet_user()                      # 調(diào)用函數(shù)方式
image-20211114002711631

參數(shù)的位置

函數(shù)調(diào)用要根據(jù)定義時(shí)參數(shù)變量的位置

def difference(x,y):
    diff = x - y
    print(diff)  # diff作為一個(gè)變量不用加雙引號(hào)颤陶,加了雙引號(hào)就會(huì)打印diff而不會(huì)打印計(jì)算的結(jié)果
    
difference(3,5)
difference(5,3)
image-20211115230334912

根據(jù)關(guān)鍵詞調(diào)用可不按照位置來(lái)

def difference(x,y):
    diff = x - y
    print(diff)
    
difference(y=3,x=5)
image-20211115230716208

默認(rèn)值

使用默認(rèn)值時(shí)臀栈,先列出沒(méi)有默認(rèn)值的參數(shù)娃圆。再列出有默認(rèn)值的參數(shù)

def difference(x,y=2):
    diff = x-y
    print(diff)
    
difference(5)
difference(5,3)
image-20211115231831534

參數(shù)可選

def difference(x,y,z=''):
    if z:                 # z 存在的時(shí)候
        diff = x-y+z
    else:
        diff = x+y
    print(diff)
    
difference(5,3)
difference(5,3,1)
image-20211117233949080

返回值

在函數(shù)中玫锋,可使用 return 語(yǔ)句將值返回到調(diào)用函數(shù)的代碼行。返回值讓你能夠?qū)⒊绦虻拇蟛糠址敝毓ぷ饕频胶瘮?shù)中去完成讼呢,從而簡(jiǎn)化主程序

def difference(x,y):
    diff = x-y
    return diff
    
z = difference(3,5)
print(z)
image-20211125170042675

函數(shù)與列表

傳遞列表

def greet_users(names):
    for name in names:
        msg = "Hello, " + name.title() + "!" # title返回"標(biāo)題化"的字符串,就是說(shuō)所有單詞都是以大寫(xiě)開(kāi)始撩鹿,其余字母均為小寫(xiě)
        print(msg)

usernames = ['hannah', 'ty', 'margot']
greet_users(usernames)
image-20211124130856413

修改列表

def print_objects(unprinted_objects, completed_objects):                 
    while unprinted_objects:                     # 當(dāng)unprinted_objects列表有值的時(shí)候執(zhí)行下列指令
        current = unprinted_objects.pop()        # 刪除unprinted_objects的最后一個(gè)元素并將該元素賦值給current
        print("Printing object: " + current)     #打印刪除的元素
        completed_objects.append(current)        # 在completed_objects列表末尾添加current
def show_completed(completed_objects):
    print("\nThe following objects have been printed:")
    for completed_object in completed_objects:
        print(completed_object)
        
unprinted_objects = ["A","b","C"]
completed_objects = []

print_objects(unprinted_objects, completed_objects)
show_completed(completed_objects)
image-20211124142415746

禁止修改列表

上述修改是在unprinted_objects列表里面直接刪除,執(zhí)行完函數(shù)之后悦屏,該列表沒(méi)有元素變?yōu)榭樟斜斫诼伲蚝瘮?shù)傳遞列表的副本可避免這個(gè)問(wèn)題。unprinted_objects[:]即為unprinted_objects的副本

調(diào)用上述函數(shù)時(shí)可以用

print_objects(unprinted_objects[:], completed_objects)

任意數(shù)量的實(shí)參

傳遞任意數(shù)量的實(shí)參

當(dāng)不知道函數(shù)需要傳遞多少個(gè)實(shí)參的時(shí)候础爬,可以用*加形參來(lái)表示

如下甫贯,*words表示創(chuàng)建一個(gè)名為words的空元組

def print_words(*words):
    print(words)
    
print_words('a')
print_words('apple','grape')
image-20211125144031631

結(jié)合使用位置實(shí)參和任意數(shù)量實(shí)參

def print_words(type,*examples):
    print('type: '+type)
    for example in examples:
        print(example)
        
print_words('n','noun','group')
print_words('v','ask','do','can')   
image-20211125145850915

使用任意數(shù)量的關(guān)鍵字實(shí)參

**加形參創(chuàng)建一個(gè)字典以使函數(shù)接受任意的鍵值對(duì)

def user_profile(name,nation,**user_info):
    profile = {}
    profile['name'] = name
    profile['nationality'] = nation
    for key,value in user_info.items():
        profile[key] = value
    return profile
    
user = user_profile('Jenny','America',gender='woman',age=25)
print(user)
image-20211125154628391

將函數(shù)存儲(chǔ)在模塊中

模塊是擴(kuò)展名為.py的文件,包含要導(dǎo)入到程序中的代碼看蚜。

D:\python_test目錄下創(chuàng)建一個(gè)存放長(zhǎng)方形周長(zhǎng)和面積計(jì)算公式的py文件叫搁,內(nèi)容如下,記為rectangle_functions.py供炎,該文件即為一個(gè)模塊

def rectangle_C(a,b):
    c=(a+b)*2
    return c
    
def rectangle_S(a,b):
    s=a*b
    return s

導(dǎo)入整個(gè)模塊

rectangle_functions.py所在的目錄中創(chuàng)建另一個(gè)名為rectangle.py的文件渴逻,內(nèi)容如下

import rectangle_functions

C=rectangle_functions.rectangle_C(4,5)
S=rectangle_functions.rectangle_S(4,5)
print('長(zhǎng)度為4,寬度為5的長(zhǎng)方形')
print('周長(zhǎng)為'+str(C)+'音诫,面積為'+str(S))
image-20211125164432732

調(diào)用rectangle

import sys
sys.path.append(r"D:\python_test") 
import rectangle                           
image-20211125171040461
# 導(dǎo)入特定的的函數(shù)
from rectangle_functions import rectangle_C

# 導(dǎo)入全部函數(shù)
from rectangle_functions import *

使用 as 指定別名

如果要導(dǎo)入的函數(shù)的名稱(chēng)可能與程序中現(xiàn)有的名稱(chēng)沖突裸卫,或者函數(shù)的名稱(chēng)太長(zhǎng),可指定簡(jiǎn)短而獨(dú)一無(wú)二的別名

# 使用 as 給模塊指定別名
import rectangle_functions as rf
# 調(diào)用方式
C=rf.rectangle_C(4,5)

# 使用 as 給函數(shù)指定別名
from rectangle_functions import rectangle_C as c
# 調(diào)用方式
C=c(4,5)

參考書(shū)目:Python編程從入門(mén)到實(shí)踐 - Eric Matthes 著纽竣,袁國(guó)忠 譯

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末墓贿,一起剝皮案震驚了整個(gè)濱河市茧泪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聋袋,老刑警劉巖队伟,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異幽勒,居然都是意外死亡嗜侮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)啥容,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锈颗,“玉大人,你說(shuō)我怎么就攤上這事咪惠』髦ǎ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵遥昧,是天一觀的道長(zhǎng)覆醇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)炭臭,這世上最難降的妖魔是什么永脓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮鞋仍,結(jié)果婚禮上常摧,老公的妹妹穿的比我還像新娘。我一直安慰自己威创,他們只是感情好落午,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著那婉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪党瓮。 梳的紋絲不亂的頭發(fā)上详炬,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音寞奸,去河邊找鬼呛谜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枪萄,可吹牛的內(nèi)容都是我干的隐岛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瓷翻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼聚凹!你這毒婦竟也來(lái)了割坠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤妒牙,失蹤者是張志新(化名)和其女友劉穎彼哼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體湘今,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敢朱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摩瞎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拴签。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旗们,靈堂內(nèi)的尸體忽然破棺而出蚓哩,到底是詐尸還是另有隱情,我是刑警寧澤蚪拦,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布杖剪,位于F島的核電站,受9級(jí)特大地震影響驰贷,放射性物質(zhì)發(fā)生泄漏盛嘿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一括袒、第九天 我趴在偏房一處隱蔽的房頂上張望次兆。 院中可真熱鬧,春花似錦锹锰、人聲如沸芥炭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)园蝠。三九已至,卻和暖如春痢士,著一層夾襖步出監(jiān)牢的瞬間彪薛,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工怠蹂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留善延,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓城侧,卻偏偏與公主長(zhǎng)得像易遣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嫌佑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文為《爬著學(xué)Python》系列第十篇文章豆茫。 在實(shí)際操作中侨歉,可能函數(shù)是我們幾乎唯一的實(shí)現(xiàn)操作的方式,這是因?yàn)楹瘮?shù)能...
    SyPy閱讀 5,465評(píng)論 0 8
  • 3.5 傳遞任意數(shù)量的實(shí)參 當(dāng)不知道函數(shù)需要接受多少個(gè)實(shí)參時(shí)澜薄,可以通過(guò)星號(hào)加一個(gè)空元組名來(lái)實(shí)現(xiàn)为肮。 實(shí)例:一個(gè)制作比...
    妞妞她爸閱讀 624評(píng)論 0 0
  • 3.3 返回值 函數(shù)并非總是直接顯示輸出,相反肤京,它可以處理一些數(shù)據(jù)颊艳,并返回一個(gè)或一組值。在函數(shù)中忘分,可使用retur...
    妞妞她爸閱讀 357評(píng)論 0 0
  • 3. 函數(shù) 函數(shù)是帶名字的代碼塊棋枕,用于完成具體的工作。需要在程序中多次執(zhí)行同一項(xiàng)任務(wù)時(shí)妒峦,你無(wú)需反復(fù)編寫(xiě)完成該任務(wù)的...
    妞妞她爸閱讀 260評(píng)論 0 0
  • 函數(shù) 定義函數(shù) 使用關(guān)鍵字def來(lái)告訴Python你要定義一個(gè) 函數(shù)重斑。這是函數(shù)定義,向Python指出了函數(shù)名肯骇,還...
    yushui1995閱讀 485評(píng)論 0 0