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

歡迎訪問 生活随笔!

生活随笔

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

python

自学python系列10:python的函数和函数式编程

發布時間:2025/7/14 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自学python系列10:python的函数和函数式编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1什么是函數

函數是對程序邏輯進行結構化或過程化的編程方法。這樣能節省空間,有助于保持一致性。 函數的創建,使用,引用方法: def foo():print 'bar' foo foo() 1.1.1函數vs過程 函數是布爾類型的,返回一個“是”或“否”的回答。一個非零或者零值。python的過程是函數,因為解釋器會隱式返回默認值None。 1.1.2返回值和函數類型 不返回任何東西。在C中默認為"void"返回類型,在python中該值為none >>> def hello():
???? print 'hello world' >>> a=hello()
hello world
>>> print a
None 1.2調用函數 1.2.1函數操作符 用圓括號調用函數。 1.2.2關鍵字參數 關鍵字參數的概念對函數的調用。 def foo(x): 標準調用foo(): ? ? foo(42) foo('2') 關鍵字調用foo(): ?foo(x=42) 例子: >>> def foo(x,y):
???? a >>> foo(1,2) 1.2.3默認參數 默認參數是聲明了默認值的參數。 1.2.4參數組 1.3創建函數 1.3.1def語句 def function_name(arguments): "function_documentation_string" function_boby_suite 例子: def hello(who): 'something' return str(who) 1.3.2聲明與定義的比較 在某些編程語言里,函數聲明和定義區分開。一個函數聲明包括提供對函數名,參數的名字,但不必給出函數的任何代碼,具體的代碼通常屬于函數定義的范疇。 1.3.3前向引用 python不允許在函數未聲明之前,對其進行引用或者調用。 >>> def foo():
???? print 'in foo()'
???? bar()

bar()還沒有申明 ? ??
>>> foo()
in foo()

Traceback (most recent call last):
? File "<pyshell#4>", line 1, in <module>
??? foo()
? File "<pyshell#3>", line 3, in foo
??? bar()
NameError: global name 'bar' is not defined 前向引用: 定義函數a,在函數b之前給出函數a的聲明

>>> def a():
print'a'


>>> def b():
print'b'
a()


>>> b()
b
a

1.3.4函數屬性 第一個特征:可獲得每個python模塊,類和函數的任意的名稱空間。可在foo和bar里都有名為x的一個變量。 即使在兩個模塊使用了相同的變量名字,也安全。因為句點屬性標識對于兩個模塊意味著不同的命名空間 import foo,bar: print foo.x,bar.x python的文檔字串,以及屬性 >>> def foo():
???? 'a'

????
>>> def bar():
???? pass

>>> bar.__doc__
>>> help(foo)
Help on function foo in module __main__:

foo()
??? a

>>> print bar.__doc__
None 1.3.5內部/內嵌函數 在函數體內創建另外一個函數,這叫內部/內嵌函數。 >>> def a():
???? def b():
????????? print'b'
???? print 'a'
???? b()

????
>>> a()
a
b
>>> b()

Traceback (most recent call last):
? File "<pyshell#25>", line 1, in <module>
??? b()
NameError: name 'b' is not defined 1.3.6*函數裝飾器 裝飾器是在函數調用之上的修飾。 使用多個裝飾器: @deco2 @deco1 def func(arg1,arg2,...):pass 和一個組合函數等價: def func(arg1,arg2,...):pass func=deco2(deco1(func)) 1.有參數和無參數的裝飾器 無參數: @deco def foo():pass 等價于:foo=deco(foo) 帶參數: @deco(a) def foo():pass 等價于:foo=deco(a)(foo) 一個含有多個裝飾器的例子,其中一個裝飾器帶有一個參數: @deco1(a) @deco2 def func():pass 等價于 func=dec1(a)(deco2(func)) 2.裝飾器是什么 裝飾器就是函數。可以用裝飾器來: 引入日志 增加計時邏輯來檢測性能 給函數加入事務的能力 1.4傳遞函數 第一個例子: >>> def a():
???? print'a'

????
>>> b=a
>>> b()
a 第二個例子:參數可以傳遞 >>> def a():
???? print'a'

????
>>> def c(x):
???? x()

????
>>> c(a)
a 1.5形參 1.5.1位置參數 傳入函數的參數數目必須和聲明的數字一致 >>> foo()

Traceback (most recent call last):
? File "<pyshell#62>", line 1, in <module>
??? foo()
TypeError: foo() takes exactly 1 argument (0 given)
>>> foo('s')
s >>> foo('s','x')

Traceback (most recent call last):
? File "<pyshell#64>", line 1, in <module>
??? foo('s','x')
TypeError: foo() takes exactly 1 argument (2 given) 1.5.2默認參數 參數名等號默認值。若沒有值傳遞給那個參數,那么這個參數就將取默認值。 >>> def func(a=1,b=2,c=3):
???? return a+b+3

>>> func()
6 1.6可變長度的參數 見核心編程p307 ? 1.7函數式編程 支持很多有價值的函數式編程語言構建。四種內建函數和lambda表達式出現。 1.7.1匿名函數與lambda lambda [arg1,arg2,...]:expression python允許用lambda關鍵字創造匿名函數。一個完整的lambda"語句"代表一個表達式,這個表達式需和聲明放在同一行。 上面的函數沒帶任何的參數并且總是返回True。如以下: def true():return True 使用lambda的等價表達式: lambda:True >>> lambda:True
<function <lambda> at 0x0000000002C71F28> 1.7.2內建函數apply(),filter(),map(),reduce() 見核心技術p312 1.8變量作用域 標識符的作業域是定義為其聲明在程序里的可應用范圍。變量可以是局部域或全局域 1.8.1全局變量與局部變量 聲明適用的程序的范圍被稱為聲明的作用域。在一個過程中,若干名稱在過程的聲明之內,它的出現則為過程的局部變量,否則出現為局部。 全局變量和局部變量: >>> a=1
>>> def test():
???? b=2

????
>>> print a
1
>>> print b

Traceback (most recent call last):
? File "<pyshell#12>", line 1, in <module>
??? print b
NameError: name 'b' is not defined a是全局變量,b是局部變量 1.8.2global語句 若將全局變量聲明在一個函數體內,全局變量會被局部變量覆蓋掉。 >>> a='1'
>>> def foo():
???? global a
???? a='2'
???? b='3'
???? print a+b

????
>>> foo()
23
>>> print a
2 1.8.3作用域的數字 ? ? ?python從語法支持多個函數嵌套。雖然而,在2.1之前的版本中,最多為兩個作用域,一個函數的局部作用域和全局作用域。雖然存在多個函數的嵌套,但不能訪問超過兩個作用域。 貌似不行,核心編程p321 ? 1.8.4閉包 1.8.5作用域和lambda 1.8.6變量作用域和名稱空間 1.9*遞歸 1.10生成器

轉載于:https://www.cnblogs.com/wyx123/articles/4105673.html

總結

以上是生活随笔為你收集整理的自学python系列10:python的函数和函数式编程的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 森泽佳奈作品在线观看 | 91在线视频国产 | 欧美精品123区 | 日韩一区二区三区精品视频 | 国产婷婷一区二区三区久久 | 国产亚洲欧美一区二区 | 欧美激情图片 | 精品婷婷| 日韩精品久久久久久久 | 琪琪射 | 色综合天天综合网天天狠天天 | 日本 在线 | 欧美一区二区三区在线免费观看 | jizzzxxxx| 一对一色视频聊天a | 亚色在线| 中文字幕精品视频 | 欧美综合网 | 国产精品久久视频 | 久草免费在线观看 | 亚洲av无码一区二区三区dv | 免费看黄的网址 | 国产人妻人伦精品1国产丝袜 | 久久综合婷婷国产二区高清 | 中文在线一区 | 成人a毛片 | www国产精品视频 | 性色av一区二区三区四区 | 久久综合热 | 日日狠狠久久偷偷四色综合免费 | 黄色小视频在线播放 | 亚洲一区二区av | 成年激情网 | 绯色av蜜臀vs少妇 | 一级全黄男女免费大片 | 美美女高清毛片视频免费观看 | 性久久久久久久久久久久 | 91丨porny丨露出| 欧美特黄一级 | 一级视频片 | 久久久国产成人一区二区三区 | 欧美香蕉视频 | av av片在线看 | 亚洲玖玖爱 | 成人禁污污啪啪入口 | 欧美日韩视频无码一区二区三 | 在线视频这里只有精品 | 日本精品在线播放 | 亚洲三级av | 精品午夜福利在线观看 | 婷婷六月天 | 少妇久久久久久 | 日本泡妞xxxx免费视频软件 | 一区二区三区视频免费视 | 高清中文字幕mv的电影 | 亚洲GV成人无码久久精品 | 欧美视频亚洲 | 住在隔壁的她动漫免费观看全集下载 | 性生活视频软件 | 国产精品短视频 | 日韩精品高清视频 | 91精品啪 | 丝袜一区二区三区四区 | 永久免费无码av网站在线观看 | 欧美xxx视频| 女色综合 | 日韩二区视频 | 婷婷综合六月 | 麻豆影视在线免费观看 | 成人h动漫精品一区二 | 中文字幕一区二区人妻视频 | 波多在线观看 | 亚洲男人天堂网 | 国产东北女人做受av | 成年人视频在线播放 | 欧美少妇诱惑 | 四虎影院在线视频 | 你懂的在线视频网站 | 久久不射网站 | 自拍偷拍 国产 | 三级av免费 | 羞羞在线观看 | 精品国产一区二区不卡 | 国产精品成人久久久久 | 人妻无码中文字幕 | 97超碰在线资源 | 91成人福利在线 | 欧美久久综合网 | 18成人免费观看视频 | 丁香婷婷深情五月亚洲 | 手机看片一区二区三区 | 小蝌蚪av | 自慰无码一区二区三区 | 精品偷拍网 | 香港三级在线视频 | 中文字幕在线观看精品 | 最新av免费在线观看 | 性欧美巨大| 超碰在线小说 |