国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python基礎(chǔ):函數(shù)和函數(shù)式編程

這篇具有很好參考價值的文章主要介紹了Python基礎(chǔ):函數(shù)和函數(shù)式編程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

函數(shù)和函數(shù)式編程

函數(shù)

聲明函數(shù):

def hello():
    print("hello function!")

調(diào)用函數(shù):

# 使用()調(diào)用
hello()#output:hello function!

# 沒有(),則不進(jìn)行調(diào)用,一切皆是對象,函數(shù)也是對象
print(hello)#output:<function hello at 0x000001EE36F1B3A0>
hello#output:<function __main__.hello()>
print(hello.__class__)#output:<class 'function'>
print(type(hello))#output:<class 'function'>
print(type(hello()))
#output:
#hello function!
#<class 'NoneType'>

xxx = hello
print(xxx.__name__)#output:hello

函數(shù)—可變不可變對象

可更改(mutable)與不可更改(immutable)對象

在python中, strings, tuples,和 numbers是不可更改的對象,而list,dict等則是可以修改的對象。

  • **不可變類型:**變量賦值 a=5 后再賦值 a=10,這里實(shí)際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當(dāng)于新生成了a。
  • **可變類型:**變量賦值 la=[1,2,3,4] 后再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內(nèi)部的一部分值被修改了。

python 函數(shù)的參數(shù)傳遞:

  • **不可變類型:**類似 c++ 的值傳遞,如 整數(shù)、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內(nèi)部修改 a的值,只是修改另一個復(fù)制的對象,不會影響 a 本身。
  • **可變類型:**類似 c++的引用傳遞,如列表,字典。如fun (la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響python 中一切都是對象,嚴(yán)格意義我們不能說值傳遞還是引用傳遞,我們應(yīng)該說傳不可變對象和傳可變對象。

可變類型:

def changeme(mytest_List):
    mytest_List.append([1, 2, 3, 4])
    print("函數(shù)內(nèi)取值:", mytest_List)
    return
#調(diào)用changeme函數(shù)
mytest_List = [100, 200, 300]
print(mytest_List)
changeme(mytest_List)
print("函數(shù)外取值:", mytest_List)
#output:
#[100, 200, 300]
#函數(shù)內(nèi)取值: [100, 200, 300, [1, 2, 3, 4]]
#函數(shù)外取值: [100, 200, 300, [1, 2, 3, 4]]

不可變類型:

def change_int(a):
    a = 10
b = 3
change_int(b)
print(b)
#output:3

函數(shù)—參數(shù)

  1. 必備參數(shù)

    • 定義

      def func(p):
          print(f"p is {p}")
      
    • 調(diào)用

      func(1)#output:p is 1
      func(p=1)#output:p is 1
      
  2. 默認(rèn)參數(shù)

    def func(a, b=1, c=2):
        print(f"a={a}, b={b}, c={c}")
    func(1, 1, 1)
    func(1, c=1)
    func(1)
    # output:
    # a=1, b=1, c=1
    # a=1, b=1, c=1
    # a=1, b=1, c=2
    
  3. 可變參數(shù)

    def func(a, *args, **kwargs):
        print(f"a={a}, args={args}, kwargs={kwargs}")
    func(1, 1, 1)
    func(1, c=1)
    func(1)
    func(1, 2, 3, x=8)
    # output:
    # a=1, args=(1, 1), kwargs={}
    # a=1, args=(), kwargs={'c': 1}
    # a=1, args=(), kwargs={}
    # a=1, args=(2, 3), kwargs={'x': 8}
    
  4. 可變參數(shù)調(diào)用

    # *變量名 元組傳入?yún)?shù)
    args = (0, 10, 2)
    print(list(range(*args)))
    # output:
    # [0, 2, 4, 6, 8]
    
    # **變量名 字典傳入?yún)?shù)
    from datetime import datetime
    print(datetime(year=1999, month=7, day=1))
    # output:
    # 1999-07-01 00:00:00
    
    kwargs = {"year":1999, "month":7, "day":1}
    print(datetime(**kwargs))
    # output:
    # 1999-07-01 00:00:00
    

函數(shù)—函數(shù)返回值

在函數(shù)體內(nèi)使用return語句可以從函數(shù)中返回一個值并跳出函數(shù)的功能。

  • 多條return語句:

return語句可以放在函數(shù)中任何位置,當(dāng)執(zhí)行到第一個return語句時程序返回到調(diào)用程序。

  • 返回多個值:

如果需要返回多個值,則可以返回一個元組。

函數(shù)—Built-in 函數(shù)

內(nèi)置函數(shù):

函數(shù)—作用域

  • LEGB解析順序:Local, Enclosing, Global, Built-in

  • global關(guān)鍵字

    total = 100 # 這是一個全局變量
    def sum(arg1, arg2):
        total = arg1 + arg2 # 這里是局部變量
        print("函數(shù)內(nèi)是局部變量:", total)
        return total
    sum(10, 20)
    print("函數(shù)外是全局變量:", total)
    # output:
    # 函數(shù)內(nèi)是局部變量: 30
    # 函數(shù)外是全局變量: 100
    

    注意:

    • 全局變量大寫首字母,局部變量全小寫
    • 不要使用Built-in和關(guān)鍵字作變量/函數(shù)名
    • python中print函數(shù)需要返回值,如果你在print函數(shù)中沒有返回值,那么print將會return None

全局語句global

在函數(shù)體中可以引用全局變量,但如果函數(shù)內(nèi)部的變量名時第一次出現(xiàn)在賦值語句之前(變量賦值),則解釋為定義局部變量。

如果要為定義在函數(shù)外的全局變量賦值,可以使用global語句,表明變量是在外面定義的全局變量。global語句可以指定多個全局變量。

#全局變量
Pi = 3.1415
E =2.71828
def my_func():
    global Pi #全局變量,于前面的全局變量Pi指向相同對象
    Pi = 3.1 #改變?nèi)肿兞康闹?/span>
    print("global Pi= ", Pi)#輸出全局變量值
    E = 2.7 #局部變量,與前面的全局變量E指向不同的對象
    print("local E = ", E)#輸出局部變量值

print("module Pi= ", Pi)
print("module E= ", E)
my_func()
print("module Pi= ", Pi)# 輸出全局變量的值,該值在函數(shù)中已被更改
print("module E= ", E)
# output:
# module Pi=  3.1415
# module E=  2.71828
# global Pi=  3.1
# local E =  2.7
# module Pi=  3.1
# module E=  2.71828

非局部語句nonlocal

在函數(shù)體中可以定義嵌套函數(shù),在嵌套函數(shù)中如果要為定義在上級函數(shù)體的局部變量賦值,可以使用nonlocal語句,表明變量不是所在塊的局部變量,而是在上級函數(shù)體中定義的局部變量。

# module E=  2.71828
#%%
def outer_func():
    tax_rate = 0.17 #上級函數(shù)體中的局部變量
    print("outer func tax rate= ", tax_rate)#輸出上級函數(shù)體中局部變量的值
    def inner_func():
        nonlocal tax_rate # 不是所在塊的局部變量,而是在上級函數(shù)體中定義的局部變量
        tax_rate = 0.05 # 上級函數(shù)體中的局部變量重新賦值
        print("inner func tax rate= ", tax_rate) # 輸出上級函數(shù)體中局部變量的值
    inner_func()
    print("outer func tax rate= ", tax_rate) # 輸出上級函數(shù)體中局部變量的值(已更改)

outer_func()
# output:
# outer func tax rate=  0.17
# inner func tax rate=  0.05
# outer func tax rate=  0.05

函數(shù)式編程

函數(shù)式編程

input -> f1 -> f2 -> f3 ->f4 -> f5 -> output

函數(shù)式編程vs面向?qū)ο缶幊?/strong>

  • First-class function,簡化很多設(shè)計模式
  • 更簡單的函數(shù)-更好編寫和維護(hù)
  • 更容易做單元測試
  • 更容易跨線程,跨進(jìn)程,甚至跨機(jī)器執(zhí)行任務(wù)

匿名函數(shù)

lambda

優(yōu)勢:結(jié)構(gòu)體簡單,函數(shù)體簡短場景適用,即用即棄

a = [0, 1, 2, 3, 4, 5]
result = filter(lambda x: x % 2 == 0, a)
print(list(result))
# output:[0, 2, 4]
  • filter()

filter(func, lst)函數(shù)?于過濾序列, 過濾掉不符合條件的元素, 返回?個 fifilter 對象,。如果要轉(zhuǎn)換為列表文章來源地址http://www.zghlxwxcb.cn/news/detail-530242.html

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(x):
    return x % 2 == 0

result = filter(func, list1)
print(result)
print(list(result))

到了這里,關(guān)于Python基礎(chǔ):函數(shù)和函數(shù)式編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【零基礎(chǔ)入門學(xué)習(xí)Python---Python中安全編程和測試之快速入門實(shí)踐】

    【零基礎(chǔ)入門學(xué)習(xí)Python---Python中安全編程和測試之快速入門實(shí)踐】

    ?? 零基礎(chǔ)入門學(xué)習(xí)Python?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅持,因?yàn)樗哂泻芨叩膬r值,算法就是這樣? ?? 作者簡介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國家獎學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題

    2024年02月12日
    瀏覽(48)
  • 【Python零基礎(chǔ)學(xué)習(xí)入門篇⑤】——第五節(jié):Python中的函數(shù)

    【Python零基礎(chǔ)學(xué)習(xí)入門篇⑤】——第五節(jié):Python中的函數(shù)

    ???????????? ???Hello,大家好呀我是陳童學(xué)哦,一個普通大一在校生,請大家多多關(guān)照呀嘿嘿?????? ?????? 技術(shù)這條路固然很艱辛,但既已選擇,該當(dāng)堅毅地走下去,加油! ???PUA: ” 你所看到的驚艷都曾平庸歷練 **“**?????? ?????? 最后讓我

    2024年02月04日
    瀏覽(24)
  • Python零基礎(chǔ)學(xué)習(xí)7.2—Python自定義函數(shù)的綜合應(yīng)用

    本章我們加大一點(diǎn)難度,來讓大家更好的掌握Python函數(shù)的使用技巧 來看例題: 任務(wù)描述 本關(guān)任務(wù):素數(shù)問題函數(shù)。 (1)實(shí)現(xiàn)isPrime()函數(shù),參數(shù)為整數(shù)。如果是素數(shù),返回True,否則返回False。 (2)在(1)的基礎(chǔ)上,編寫一個函數(shù)listPrime(),該函數(shù)可以接受任意個數(shù)數(shù)據(jù),返

    2024年02月03日
    瀏覽(25)
  • ????Java開發(fā)者的Python快速進(jìn)修指南:函數(shù)基礎(chǔ)

    話不多說,今天我們要介紹的是函數(shù)。本系列文章追求短而精,今天我們將重點(diǎn)討論函數(shù)以及與Java方法的區(qū)別。與Java方法不同,函數(shù)不需要像Java方法一樣講究修飾符等其他特性,它只需要使用\\\"def\\\"進(jìn)行聲明。另外,函數(shù)的參數(shù)也與Java方法有所不同,Java方法中不存在默

    2024年02月05日
    瀏覽(20)
  • Python零基礎(chǔ)學(xué)習(xí)7.1—Python自定義函數(shù)的定義和調(diào)用

    函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。 函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。Python提供了許多內(nèi)建函數(shù),比如print()。但我們也可以自己創(chuàng)建函數(shù)來實(shí)現(xiàn)一些功能,這被叫做用戶自定義函數(shù)。 下面來看幾個例題: 任務(wù)描述 本關(guān)

    2024年02月04日
    瀏覽(22)
  • 從零開始學(xué)習(xí)Python基礎(chǔ)語法:打開編程大門的鑰匙

    從零開始學(xué)習(xí)Python基礎(chǔ)語法:打開編程大門的鑰匙

    重溫Python,適合新手搭建知識體系,也適合大佬的溫故知新~ 1.1 Python作為一種流行的編程語言的介紹 Python是一種流行的高級編程語言,以其簡潔、易讀和強(qiáng)大的特性而備受開發(fā)者歡迎。它由 Guido van Rossum 于 1991 年創(chuàng)建,并且在過去幾十年中得到了廣泛的發(fā)展和應(yīng)用。 Python作

    2024年01月20日
    瀏覽(46)
  • Python爬蟲學(xué)習(xí)日記——SSL證書驗(yàn)證

    Python爬蟲學(xué)習(xí)日記——SSL證書驗(yàn)證

    問題引入:現(xiàn)在很多網(wǎng)站是使用HTTPS協(xié)議的,但是有些網(wǎng)站并沒有設(shè)置好HTTPS證書,或者HTTPS的證書不被CA機(jī)構(gòu)認(rèn)可,這個時候訪問這些網(wǎng)站就會報SSL證書錯誤 實(shí)例:訪問https://www.ssr2.scrape.center/ 對于這種情況我們使用代碼來爬取的效果 代碼提示我們是SSL錯誤 因此如果就是要爬

    2024年02月16日
    瀏覽(24)
  • [Python物聯(lián)網(wǎng)]Python基礎(chǔ)知識和語法--控制流和函數(shù)--Python快速上手開發(fā)物聯(lián)網(wǎng)上位機(jī)程序

    目錄 一、前言? ? ? ?? 二、條件語句 三、循環(huán)語句 ????????1.for循環(huán) ????????2.while循環(huán) 四、函數(shù) 五、總結(jié) ????????Python的控制流語句允許程序根據(jù)特定條件執(zhí)行不同的代碼塊。Python中的常見控制流語句包括 條件語句 和 循環(huán)語句 。在本篇文章中,我們將討論

    2024年02月04日
    瀏覽(39)
  • python教程 入門學(xué)習(xí)筆記 第3天 編程基礎(chǔ)常識 代碼注釋 變量與常量

    編程基礎(chǔ)常識 一、注釋 1、對代碼的說明與解釋,它不會被編譯執(zhí)行,也不會顯示在編譯結(jié)果中 2、注釋分為:單行注釋和多行注釋 3、用#號開始,例如:#這是我的第一個python程序 4、注釋可以寫在單獨(dú)一行,也可以寫在一句代碼后面 5、不想執(zhí)行編譯,又不能刪除的代碼,可

    2024年02月14日
    瀏覽(94)
  • 【socket】從計算機(jī)網(wǎng)絡(luò)基礎(chǔ)到socket編程——Windows && Linux C語言 + Python實(shí)現(xiàn)(TCP+UDP)

    【socket】從計算機(jī)網(wǎng)絡(luò)基礎(chǔ)到socket編程——Windows && Linux C語言 + Python實(shí)現(xiàn)(TCP+UDP)

    簡單講一下基礎(chǔ)知識,便于后面代碼的理解,建議大概瀏覽一下這一小節(jié)內(nèi)容。這里講的只是冰山一角,建議大家學(xué)習(xí)計算機(jī)網(wǎng)絡(luò)相關(guān)知識,推薦幾本書: 《計算機(jī)網(wǎng)絡(luò)》(謝希仁) 《計算機(jī)網(wǎng)絡(luò) 自頂向下方法》 《計算機(jī)網(wǎng)絡(luò)技術(shù)》 《計算機(jī)網(wǎng)絡(luò)基礎(chǔ)及應(yīng)用》 《Linux C從入

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包