成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

4-函數(shù)

why_rookie / 2874人閱讀

摘要:可以被函數(shù)調(diào)用并提取元素的對象稱為迭代器對象。判斷一個對象是否為迭代器對象將轉(zhuǎn)為對象生成器生成器使用的函數(shù)被稱為是生成器函數(shù)。

通用函數(shù)
def fun(*args, **kwargs):
    print(args) # 元組
    print(kwargs) # 字典 關(guān)鍵字傳參
匿名函數(shù)
lambda x:x*x if x>5
lambda num:"TRUE" if num == 1 else "FALSE"
裝飾器
本身是一個閉包,就是一個返回函數(shù)的函數(shù) 
閉包:把一個函數(shù)作為參數(shù),返回一個代替版的函數(shù)
        
def getAge(age):
    print("我的年齡是 %d" % age)
def getHeight(height):
    print(height)
            
def outer(paraFun):
    def inner(num):
        # 添加檢測條件
        if num < 0:
            num = 12
        paraFun(num)
    return inner
            
outer(getAge) === inner
outer(getAge)(-12)

#語法糖 @后可以繼續(xù)使用原來函數(shù)的名字
def outer(func):
    def inner(num):
        if num < 0:
            num = 99999
         func(num)
    return inner

@outer   # 相當(dāng)于 getAge  == outer(getAge)
def getAge(age):
    print(age)
# f4 = outer(getAge)
# f4(-90)
getAge(-99)

@outer
def getWeight(ww):
        print(ww)
getWeight(-99) 
偏函數(shù)
int("1010",base=2)
def myInt(str):
    return int(str, base=2)
import functools 
newInt = functools.partial(int, base=2)
迭代器
可迭代對象:可以直接作用于for循環(huán)的對象,叫做可迭代對象[Iterable] 可以直接作用于for的對象:1、基本數(shù)據(jù)類型:list 
tuple dict set string 2、generator生成器:帶有yield的生成器函數(shù)
from collections import Iterable
print(isinstance([], Iterable))  # T
print(isinstance({}, Iterable))  # T
print(isinstance((), Iterable))  # T
print(isinstance("abc", Iterable))  # T
print(isinstance((x for x in range(5)), Iterable))   # T
迭代器:Iterator 迭代器:不僅可以作用于for循環(huán),也可以使用next()
函數(shù)不斷用并獲取下一個值,直到取出最后一個。當(dāng)取出嘴一個元素時,再繼續(xù)調(diào)用next()時,會提出一個StopIteration錯誤表示無法繼續(xù)下一個數(shù)據(jù)的提取。可以被next()函數(shù)調(diào)用并提取元素的對象稱為迭代器對象。判斷一個對象是否為迭代器對象:isinstance(obj,
Iterator)
from  collections import Iterator
print(isinstance([], Iterator))  # F
print(isinstance({}, Iterator))  # F
print(isinstance((), Iterator))  # F
print(isinstance("abc", Iterator))  # F
print(isinstance((x for x in range(5)), Iterator))  # T
        
# 將list、tuple、dict、str轉(zhuǎn)為Iterator對象
a = iter([1, 2, 3]
生成器
生成器:generator:使用yield的函數(shù)被稱為是生成器函數(shù)。使用yield的函數(shù)與普通函數(shù)的區(qū)別:生成器函數(shù)是一個返回迭代器的函數(shù),只能用于迭代操作可以認(rèn)為生成器就是一個迭代器
        
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return

for i in fib(6):
       print(i)
   
   
   # 生成器打印楊輝三角
def Triangle(n):
    l, index = [1], 0
    while index < n:
        yield l
        l = [1] + [l[i] + l[i + 1] for i in range(len(l) - 1)] + [1]
        index += 1
for x in Triangle(10):
    print(x)

閉包
閉包:概念:在函數(shù)體內(nèi)定義的內(nèi)部函數(shù),并且該內(nèi)部函數(shù)使用的外部函數(shù)的變量,外部函數(shù)將內(nèi)部函數(shù)作為返回值返回,該內(nèi)部函數(shù)就叫做閉包。

優(yōu)點:避免變量污染全局環(huán)境,我們可以在全局范圍內(nèi)間接使用局部變量。
缺點:數(shù)據(jù)會長期駐留在內(nèi)存中,造成內(nèi)存浪費,在IE瀏覽器中,極易崩潰,所以請慎重使用。

作用域
built-in Global Enclosing Local
變量查找規(guī)則:L->E->G->B
只有module class def lambda 才會引入新的作用域
i = 666
def outer():
    i = 555   # 局部變量
    def inner():
        nonlocal i  # nonlocal 非局部的
        i = 444   #
        print("inner ==", i)
    inner()
    print("outer ==", i)
        
outer() # 444

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41641.html

相關(guān)文章

  • 【進(jìn)階 6-1 期】JavaScript 高階函數(shù)淺析

    摘要:引言本期開始介紹中的高階函數(shù),在中,函數(shù)是一種特殊類型的對象,它們是。簡單來說,高階函數(shù)是一個接收函數(shù)作為參數(shù)傳遞或者將函數(shù)作為返回值輸出的函數(shù)。我們來看看使用它們與不使用高階函數(shù)的方案對比。引言 本期開始介紹 JavaScript 中的高階函數(shù),在 JavaScript 中,函數(shù)是一種特殊類型的對象,它們是 Function objects。那什么是高階函數(shù)呢?本節(jié)將通過高階函數(shù)的定義來展...

    yiliang 評論0 收藏0
  • 【JS必知必會】高階函數(shù)詳解與實戰(zhàn)

    摘要:函數(shù)作為參數(shù)情況,,和是中內(nèi)置的高階函數(shù)。知道了到底啊什么是高階函數(shù),有哪些類型的高階函數(shù)。公眾號技術(shù)棧路線大家好,我是,公眾號程序員成長指北作者,這篇文章是必知必會系列的高階函數(shù)講解。 前言 一道經(jīng)典面試題: //JS實現(xiàn)一個無限累加的add函數(shù) add(1) //1 add(1)(2) //3 add(1)(2)(3) //6 當(dāng)大家看到這個面試題的時候,能否在第一時間想到...

    李昌杰 評論0 收藏0
  • 史上最強C語言教程----函數(shù)(1)

    摘要:無論實參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形參。形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動銷毀了。函數(shù)的調(diào)用傳值調(diào)用函數(shù)的形參和實參分別占有不同內(nèi)存塊,對形參的修改不會影響實參。沒有找到找到了下標(biāo)為 目錄 1.? 函數(shù)是什么? 2.??C語言中函數(shù)的分類: 2...

    A Loity 評論0 收藏0
  • JS中函數(shù)式編程基本原理簡介

    摘要:在做了一些研究之后,我發(fā)現(xiàn)了函數(shù)式編程的概念,比如不變性和純函數(shù)。在這篇文章中,將通大量代碼示例來詳細(xì)介紹函數(shù)式編程和一些相關(guān)重要概念。該非純函數(shù)接收該值并重新分配,使其值增加。函數(shù)式編程不鼓勵可變性。純函數(shù)是穩(wěn)定的一致的和可預(yù)測的。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 在長時間學(xué)習(xí)和使用面向?qū)ο缶幊讨螅蹅?..

    tunny 評論0 收藏0
  • 函數(shù) 閉包eeva iife

    摘要:概述函數(shù)的聲明命令函數(shù)表達(dá)式變量賦值命令后面不帶有函數(shù)名。如果加上函數(shù)名,該函數(shù)名只在函數(shù)體內(nèi)部有效,在函數(shù)體外部無效。同樣的,函數(shù)體內(nèi)部聲明的函數(shù),作用域綁定函數(shù)體內(nèi)部??梢酝ㄟ^,達(dá)到調(diào)用函數(shù)自身的目的。 函數(shù) 函數(shù)是一段可以反復(fù)調(diào)用的代碼塊。函數(shù)還能接受輸入的參數(shù),不同的參數(shù)會返回不同的值。 1.概述1.1函數(shù)的聲明1.2函數(shù)的重復(fù)聲明1.3圓括號運算符,return 語句和遞歸1...

    AnthonyHan 評論0 收藏0
  • 【譯】JavaScript 中的函數(shù)式編程原理

    摘要:在這篇文章中,我將通過中的大量代碼示例向您詳細(xì)介紹函數(shù)式編程和一些重要概念。注意在函數(shù)式編程中不鼓勵可變性。純函數(shù)是穩(wěn)定,一致并且可預(yù)測的。 原文:Functional Programming Principles in Javascript作者:TK譯者:博軒 經(jīng)過很長一段時間的學(xué)習(xí)和面向?qū)ο缶幊痰墓ぷ?,我退后一步,開始思考系統(tǒng)的復(fù)雜性。 復(fù)雜性是任何使軟件難以理解或修改的東西。 -...

    zhigoo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<