中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python函數式編程舉例分析

發布時間:2021-11-25 11:28:08 來源:億速云 閱讀:179 作者:iii 欄目:大數據

本篇內容主要講解“python函數式編程舉例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python函數式編程舉例分析”吧!

入門

Python內置了很多有用的函數,我們可以直接調用。

要調用一個函數,需要知道函數的名稱和參數,比如求絕對值的函數abs,只有一個參數。

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

調用abs函數:

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

函數式編程

在Python中的函數就是為了實現某一段功能的代碼段,可以重復利用。

就是以后不要重復造輪子,遇到那個場景就用那個函數,就是函數式編程。

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

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

# 調用函數 my_func()
my_func('Hello World')
# 輸出
Got a message: Hello World

簡單的知識點

  • def是函數的聲明

  • my_func是函數的名稱

  • message 是函數的參數

  • print 是函數的主體部分

  • 在函數的最后 可以返回調用結果(return 或yield ),也可以不返回

「定義在前,調用在后」

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

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

# 輸出
8

對于函數的參數可以設定默認值

def func(param = 0):
    pass

如果param沒有傳入,那么參數默認是0,如果傳入了參數,就覆蓋默認值

多態

傳入的參數可以接受任何數據類型

比如,列表

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

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

再比如,字符串

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

# 輸出
hello world

當然,如果參數數據類型不同,而兩者無法相加

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

同一個函數可以應用到整數,列表,字符串等等的操作稱為多態。這可不是變態。

嵌套函數

函數嵌套就是函數中有函數,就叫嵌套函數了。

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

# 輸出
hello
world

函數的嵌套保證了內部函數的調用,內部函數只能被外部函數所調用,不會作用于全局域中。

合理使用函數嵌套,提高運算速度

比如計算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

函數變量作用域

如果變量是izai函數內部定義的,稱為局部變量,只在函數內部有效,當函數執行完畢,局部變量就會被回收。

全局變量就是寫在函數外面的。

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就是全局變量,但是我們不能在函數的內部隨意改變全局變量的值

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

報錯:UnboundLocalError: local variable 'MIN_VALUE' referenced before assignment

要想改變 必須加上global這個聲明

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

global告訴python解析器,函數內部的變量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

對于嵌套函數來說,內部函數無法修改外部函數定義的變量,可以訪問,想要修改就要加上 nonolocal

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

不加就不會覆蓋

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

閉包

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

閉包就是在函數里面調用函數,一般用return來執行,return出內部調用的函數名。

我們接下來計算下一個數的n次冪,用閉包寫如下:

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

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

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

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

當然,我們也可以通過一個函數來寫這個功能:

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

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

到此,相信大家對“python函數式編程舉例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西乡县| 大同县| 内黄县| 大渡口区| 曲麻莱县| 左贡县| 鄢陵县| 万安县| 杨浦区| 华池县| 金门县| 安龙县| 定陶县| 韶山市| 河津市| 沙坪坝区| 南宫市| 修武县| 肇源县| 察隅县| 锡林浩特市| 贺兰县| 绿春县| 汝南县| 大理市| 晴隆县| 岳池县| 湘乡市| 平顶山市| 登封市| 安义县| 来安县| 绥芬河市| 嵊泗县| 晋城| 新闻| 康定县| 古蔺县| 山阴县| 咸丰县| 临汾市|