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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)函数作用域,匿名函数,函数式编程,面向过程,面向对象

發布時間:2024/8/26 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)函数作用域,匿名函数,函数式编程,面向过程,面向对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數作用域  

?
12345678910def first():????name = 'Wangben'????def second():????????name = 'Mengtian'????????def third():????????????print(name)????????return third????return secondfirst()()()??? #打印輸出Mengtian,每一個()相當于一個函數調用
"""
運行程序:
  r1 = foo()
  print(r1)
  r2 = foo()()
  print(r2)
  r3 = foo()()()
  print(r3)
輸出結果:
  <function foo.<locals>.bar at 0x0000017F85725AE8>        只返回地址
  <function foo.<locals>.bar.<locals>.tt at 0x0000017F857371E0>
  wopeiqi
  None
"""

匿名函數:

1 """ 用 lambda 關鍵字定義 """ 2 3 lambda x:x+1 """x 為函數的形參,x+1 為函數的返回值 """ 4 5 """ 相當于""" 6 def plus(x): 7 return x+1

 

1 """ 在沒有把lambda賦給其他變量的情況下,其本身不知如何使用""" 2 """ 因此一般與其他函數結合使用,要使用時要賦給其他變量""" 3 4 name = 'zhizhi' 5 6 func = lambda x:x + '_celebrate' 7 8 print(func(name)) 9 10 """得到"" 11 zhizhi_celebrate

?

1 """ 要返回多個值需要加 ()""" 2 3 func = lambda x,y,z :( x+2,y**x,z/2) 4 5 print(func(2,6,8)) 6 7 """ 得到 """ 8 (4, 36, 9.0)

函數式編程,面向過程,面向對象:

  egon09.blog.51cto.com/9161406/1842475  該文章已經被博主隱藏 --_-- 傷心。。。

  以下為原文(看著視頻敲出來的,原文作者linhaifeng老師):

  介紹:

    當下主流的編程方法有三種:函數式、面向過程、面向對象,三者相當于編程界的三大門派,每個門派有自己的獨門秘籍,都是用來解決問題的。三種流派都是一種編程方法論,只不過是各自的風格不同,在不同的應用場景下也各顯優勢。

    一、函數式編程:函數式=編程語言定義的函數+數學意義的函數

      通俗來講,函數式就是用編程語言去實現數學函數。這種函數內對象式永恒不變的,要么參數式函數,要么返回值是函數,沒有for和while循環,所有的循環都由遞歸去實現,無變量的賦值(即不用變量去保存狀態),無賦值即不改變。

    PART 1特征:

      1. 不可變數據

      2. 第一類對象

      3. 尾調用優化(尾遞歸)

    例一:不可變:不用變量保存狀態,不修改變量

    

1 #非函數式 2 a = 1 3 def incr_test1(): 4 global a 5 a +=1 6 return a 7 incr_test1() 8 print(a)    #---->得到 2 9 10 #函數式 11 n = 1 12 def incr_test2(n): 13 return n+1 14 15 print(incr_test2(2)) #---->得到 3 16 17 print(n)      #---->得到 1

    例二:第一類對象:函數即“變量”

      1.函數名可以當作參數傳遞

      2.返回值可以是函數名

    高階函數:

      1.函數接受的參數是一個函數名(把函數當作參數傳給另外一個函數)

      2.返回值中包含函數

1 #把函數當作參數傳給另外一個函數 2 3 def foo(n): 4 print(n) 5 6 def bar(name): 7 print('my name is %s' %name) 8 9 foo(2) #----->2 10 foo(bar) #-----><function bar at 0x0000018A7F895D90> 返回地址,因為不是運行函數 11 foo(bar('風云')) #----> my name is 風云 1 #返回值中包含函數 2 3 def bar(): 4 print('from') 5 def foo(): 6 print('from foo') 7 return bar 8 n = foo() 9 n() 10 11 #得到 12 from foo 13 from bar 14 #n()相當于foo()(),即運行了foo函數之后,返回的時bar函數,運行bar函數 15 16 def test1(): 17 print('from test1') 18 def test2(): 19 print('from handle') 20 return test1() #----->直接運行test1,相當于test1() 21 22 23 #得到 24 from handle 25 from test1

    例三:

      尾調用:在函數的最后一步調用另外一個函數(最后一行不一定是函數的最后一步)

      

#函數bar在foo內為尾調用 def bar(n):return n def foo(x):return bar(x) """""" a = foo(8) print(a) #---->得到 8#函數bar和bar2在foo內均為尾調用,二者在if判斷條件不同的情況下都有可能作為函數的最后一步 def bar1(n):return ndef bar2(n):return n+1 def foo(x):if type(x) is str:return bar1(x)elif type(x) is int:return bar2(x)#函數bar在foo內為非尾調用 def bar(n):return ndef foo(x):y = bar(x)return y#函數bar在foo內為非尾調用 def bar(n):return n def foo(x):return bar(x)+1

?

轉自:
Python 學習 --day-16 - UMRzg - 博客園
http://www.cnblogs.com/qinzheg/articles/9394420.html

轉載于:https://www.cnblogs.com/jyfootprint/p/9468336.html

總結

以上是生活随笔為你收集整理的(转)函数作用域,匿名函数,函数式编程,面向过程,面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。

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