日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

函数进阶_月隐学python第11课

發布時間:2023/12/19 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数进阶_月隐学python第11课 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

1.函數類型

2. 匿名函數

3.傳入函數(理解)

4.閉包

5.偏函數

6.變量的作用域

6.1 變量作用域的分類

6.2 變量作?域查找規則

6.3 全局變量和局部變量

6.4 global和nonlocal

?

函數填空題


1.函數類型


函數也是一種類型,我們自定義的函數就是函數對象,函數名保存了函數對象的引用(地址)

2. 匿名函數


不再使用def 函數名()這種形式定義函數,而是使?lambda來創建匿名函數
特點:

  • lambda只是一個表達式,函數體?def定義的函數簡單的多
  • lambda的函數體不再是代碼塊,?是?個表達式
  • lambda只有?行,運行效率很高

語法:

3.傳入函數(理解)


一個函數就可以接收另?個函數作為參數,這種函數就稱之為高階函數,也可以稱之為傳?函數。可以實現通用編程,排序等復雜功能

4.閉包

我們可以在?個函數中再定義一個函數,在函數內部定義的函數稱之為內部函數,內部函數只能在函數內使用,不會污染外部空間。定義內部函數的函數稱之為外部函數,這樣的定義構成函數的嵌套

  • 內部函數只能在外部函數?調用,外界?法直接調?內部函數

在一個外部函數中定義了一個內部函數,內部函數?引?了外部函數的變量,并且外部函數的返回值是內函數的引用。這樣內部函數和其執?所需的環境變量就構成了一個閉包。
一般情況下,如果?個函數結束,函數的內部所有東西都會釋放掉,局部變量都會消失。但是閉包是一種特殊情況,如果外函數在結束的時候發現有?己的局部變量將來會在內部函數中?到,就把這個局部變量綁定給了內部函數,然后?己再結束。

?

在閉包中?法直接修改外部變量x的值

在python3中可以通過nonlocal關鍵字聲明?下x,表示這個變量不是局部變量,需要向上一層變量空間找這個變量

5.偏函數


當?個函數有?量參數,調?的時候非常不方便,可以使?偏函數技術,將?些參數固定(給默認值),達到簡化函數調用的?的。

6.變量的作用域


程序中的變量并不是在任意的位置都可以隨意訪問,在哪里可以訪問取決于這個變量的作?域,變量的作用域指的是變量在那段代碼中可以使?,可以使用變量的那段代碼就是變量的作用域。在python中,只有函數/類/模塊才引?作?域,if/elif/else , while/for,try/except等并不會引?新的作用域


6.1 變量作用域的分類


按照作用域劃分,可以分為:

  • L: Local,局部作用域
  • E: Enclosing,閉包作用域【閉包的外部函數中定義的變量】
  • G: Global,全局作用域 在所有函數外定義的變量
  • B: Built-in,內建作用域【內置作用域】
    ?

6.2 變量作?域查找規則


以 L --> E --> G -->B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,最后到內建作用域中找。


6.3 全局變量和局部變量


定義在函數內部的變量擁有?個局部作用域,被稱為局部變量
定義在函數外面的變量擁有?個全局作?域,被稱為全局變量
局部變量和全局變量同名,局部優先

6.4 global和nonlocal

函數填空題
?

1. 函數定義
def test1(a,b):
? ? ? return a + b
則test1(3,b=5)的值為___8______; test1(b=10,a=2)的值為
______12___。

2. 函數定義:
def test(a,b=2,*args):
? ? ? return a + b + sum(args)
則test(1,2,3,4,5)的值為__15_________; test(1)的值為:
_____3______; test(*[3,2,1,5])的值為: __11______;
test(*{1:2,3:4,5:6}.values())的值為___12____。

3. 函數定義:
def test(*args, **kwargs):
? ? ? tmp = list(args) + list(kwargs.values())
return sum([tmp[x] for x in range(len(tmp) )if not(x % 2) )]
則 t e s t ( a = 3 , b = 4 , c = 5 ) 的 值 : _ _8 _ _ _ _ ;
test(**{1:2,3:4,5:6,7:8})的值為: ___無法賦值______;
test(1,3,5,7,a=10,b=3)的值為: ___16______。

?

4. 函數定義:
def link(*args):
? ? ?args = [x if isinstance(x,str) else str(x) for x in args]
? ? ?return ‘’.join(args)
則lin k (1 ,2 ,3 )的值為: __123______; lin k (‘北京’,’python’,’1902’)的值為__北京python1902________。

5. 函數定義:
def demo(*args):
? ? ?return args * 2
則sum(demo(1,2,3))的值為____12____; len(demo())等于___0______。

6. 函數定義為:
def judge(a):
? ? if a > 0:
? ? ? ? return True
則print(“兔?” if judge(-1) else ‘狗’)輸出: __狗_____

7. 已知: pf = lambda a,b=2:a + b; 則pf(2) = _4_____;
pf(3,4) = __7____; pf(b=3,a=5) = ___8______;

8. 已知:
def demo(a):
? ? a = 5
則執?a = 10; demo(a);后a = _10____;

9. 已知:
def demo(a):
for key in a:
a[key] += 10
則a = {1:10,2:20,3:30};則執?demo(a)后, a =____{1: 20, 2: 30, 3: 40}___________。


?


?

總結

以上是生活随笔為你收集整理的函数进阶_月隐学python第11课的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。