成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python函數(shù)式編程舉例分析

本篇內(nèi)容主要講解“python函數(shù)式編程舉例分析”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“python函數(shù)式編程舉例分析”吧!

成都創(chuàng)新互聯(lián)公司于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元邢臺(tái)縣做網(wǎng)站,已為上家服務(wù),為邢臺(tái)縣各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

入門

Python內(nèi)置了很多有用的函數(shù),我們可以直接調(diào)用。

要調(diào)用一個(gè)函數(shù),需要知道函數(shù)的名稱和參數(shù),比如求絕對(duì)值的函數(shù)abs,只有一個(gè)參數(shù)。

也可以在交互式命令行通過(guò)help(abs)查看abs函數(shù)的幫助信息。

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

>>> abs(100)
100
>>> abs(-20)
20
>>> abs(12.34)
12.34

函數(shù)式編程

在Python中的函數(shù)就是為了實(shí)現(xiàn)某一段功能的代碼段,可以重復(fù)利用。

就是以后不要重復(fù)造輪子,遇到那個(gè)場(chǎng)景就用那個(gè)函數(shù),就是函數(shù)式編程。

下面,我定義一個(gè) my_func,傳入一個(gè)Hello World,再打印一個(gè)Hello World

def my_func(message):
    print('Got a message: {}'.format(message))

# 調(diào)用函數(shù) my_func()
my_func('Hello World')
# 輸出
Got a message: Hello World

簡(jiǎn)單的知識(shí)點(diǎn)

  • def是函數(shù)的聲明

  • my_func是函數(shù)的名稱

  • message 是函數(shù)的參數(shù)

  • print 是函數(shù)的主體部分

  • 在函數(shù)的最后 可以返回調(diào)用結(jié)果(return 或yield ),也可以不返回

「定義在前,調(diào)用在后」

def my_sum(a, b):
    return a + b

result = my_sum(3, 5)
print(result)

# 輸出
8

對(duì)于函數(shù)的參數(shù)可以設(shè)定默認(rèn)值

def func(param = 0):
    pass

如果param沒(méi)有傳入,那么參數(shù)默認(rèn)是0,如果傳入了參數(shù),就覆蓋默認(rèn)值

多態(tài)

傳入的參數(shù)可以接受任何數(shù)據(jù)類型

比如,列表

print(my_sum([1, 2], [3, 4]))

# 輸出
[1, 2, 3, 4]

再比如,字符串

print(my_sum('hello ', 'world'))

# 輸出
hello world

當(dāng)然,如果參數(shù)數(shù)據(jù)類型不同,而兩者無(wú)法相加

print(my_sum([1, 2], 'hello'))
TypeError: can only concatenate list (not "str") to list

同一個(gè)函數(shù)可以應(yīng)用到整數(shù),列表,字符串等等的操作稱為多態(tài)。這可不是變態(tài)。

嵌套函數(shù)

函數(shù)嵌套就是函數(shù)中有函數(shù),就叫嵌套函數(shù)了。

def f1():
    print('hello')
    def f2():
        print('world')
    f2()
f1()

# 輸出
hello
world

函數(shù)的嵌套保證了內(nèi)部函數(shù)的調(diào)用,內(nèi)部函數(shù)只能被外部函數(shù)所調(diào)用,不會(huì)作用于全局域中。

合理使用函數(shù)嵌套,提高運(yùn)算速度

比如計(jì)算5的階乘。

def factorial(input):
    
    if not isinstance(input, int):
        raise Exception('input must be an integer.')
    if input < 0:
        raise Exception('input must be greater or equal to 0' )
  
    def inner_factorial(input):
        if input <= 1:
            return 1
        return input * inner_factorial(input-1)
    return inner_factorial(input)


print(factorial(5))

120

函數(shù)變量作用域

如果變量是izai函數(shù)內(nèi)部定義的,稱為局部變量,只在函數(shù)內(nèi)部有效,當(dāng)函數(shù)執(zhí)行完畢,局部變量就會(huì)被回收。

全局變量就是寫在函數(shù)外面的。

MIN_VALUE = 1
MAX_VALUE = 10
def validation_check(value):
    if value < MIN_VALUE or value > MAX_VALUE:
        raise Exception('validation check fails')

這里的MIN_VELUE 和MAX_VALUE就是全局變量,但是我們不能在函數(shù)的內(nèi)部隨意改變?nèi)肿兞康闹?/p>

MIN_VALUE = 1
def validation_check(value):
    MIN_VALUE += 1
    
validation_check(5)

報(bào)錯(cuò):UnboundLocalError: local variable 'MIN_VALUE' referenced before assignment

要想改變 必須加上global這個(gè)聲明

MIN_VALUE = 1
def validation_check(value):
    global MIN_VALUE  
    MIN_VALUE += 1
    
validation_check(5)

global告訴python解析器,函數(shù)內(nèi)部的變量MIN_VALUE就是定義的全局變量,這里輸入的是2,這樣修改的全局變量的值

MIN_VALUE = 1
MAX_VALUE = 10
def validation_check():
    MIN_VALUE = 3
    print(MIN_VALUE)
validation_check()
print(MIN_VALUE)

# 3
# 1

對(duì)于嵌套函數(shù)來(lái)說(shuō),內(nèi)部函數(shù)無(wú)法修改外部函數(shù)定義的變量,可以訪問(wèn),想要修改就要加上 nonolocal

def outer():
    x = "local"
    def inner():
        nonlocal x # nonlocal 關(guān)鍵字表示這里的 x 就是外部函數(shù) outer 定義的變量 x
        x = 'nonlocal'
        print("inner:", x)
    inner()
    print("outer:", x)
outer()
# 輸出
inner: nonlocal
outer: nonlocal

不加就不會(huì)覆蓋

def outer():
    x = "local"
    def inner():
        x = 'nonlocal' # 這里的 x 是 inner 這個(gè)函數(shù)的局部變量
        print("inner:", x)
    inner()
    print("outer:", x)
outer()
# 輸出
inner: nonlocal
outer: local

閉包

函數(shù)的閉包其實(shí)和函數(shù)的嵌套很相似。和嵌套不同,閉包的外部函數(shù)返回是一個(gè)函數(shù),而不是一個(gè)具體的值。

閉包就是在函數(shù)里面調(diào)用函數(shù),一般用return來(lái)執(zhí)行,return出內(nèi)部調(diào)用的函數(shù)名。

我們接下來(lái)計(jì)算下一個(gè)數(shù)的n次冪,用閉包寫如下:

def nth_power(exponent):
    def exponent_of(base):
        return base ** exponent
    return exponent_of # 返回值是 exponent_of 函數(shù)

square = nth_power(2) # 計(jì)算一個(gè)數(shù)的平方
cube = nth_power(3) # 計(jì)算一個(gè)數(shù)的立方 
square
# 輸出
<function __main__.nth_power.<locals>.exponent(base)>

cube
# 輸出
<function __main__.nth_power.<locals>.exponent(base)>

print(square(2))  # 計(jì)算 2 的平方
print(cube(2)) # 計(jì)算 2 的立方
# 輸出
4 # 2^2
8 # 2^3

當(dāng)然,我們也可以通過(guò)一個(gè)函數(shù)來(lái)寫這個(gè)功能:

def nth_power(base,exponent):
    return base**exponent

但是,使用閉包,可以讓程序變得更加簡(jiǎn)潔易懂。

到此,相信大家對(duì)“python函數(shù)式編程舉例分析”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)頁(yè)標(biāo)題:python函數(shù)式編程舉例分析
網(wǎng)站路徑:http://jinyejixie.com/article44/posshe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、搜索引擎優(yōu)化企業(yè)建站、建站公司、企業(yè)網(wǎng)站制作、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
揭西县| 和林格尔县| 通城县| 呼玛县| 鞍山市| 绥中县| 曲阜市| 乐亭县| 来凤县| 潮安县| 堆龙德庆县| 永登县| 龙陵县| 泗洪县| 方山县| 莒南县| 凌海市| 奉贤区| 靖远县| 通化市| 太康县| 丰原市| 祁东县| 铜川市| 曲沃县| 南昌市| 鄂尔多斯市| 石楼县| 祁门县| 岑巩县| 达尔| 马鞍山市| 高平市| 广德县| 策勒县| 溧阳市| 芜湖市| 井冈山市| 酒泉市| 永平县| 离岛区|