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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python之路,week03 - Python基础3

發(fā)布時(shí)間:2023/12/20 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之路,week03 - Python基础3 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本節(jié)內(nèi)容

  • 函數(shù)與函數(shù)式編程

  • 函數(shù)式編程之參數(shù)詳解

  • 局部變量與全局變量作用域

  • 嵌套函數(shù)

  • 遞歸

  • 函數(shù)式編程介紹

  • 高階函數(shù)

  • 內(nèi)置函數(shù)


  • 1. 函數(shù)與函數(shù)式編程

    1.面向?qū)ο?#xff1a;華山派---》類---》class
    2.面向過程:少林派---》過程---》def
    3.函數(shù)式編程:逍遙派---》函數(shù)---》def

    函數(shù)過程區(qū)別:

    def func1(): #函數(shù)print('in the func1')return 0def func2(): #過程print('in the func2')#過程沒有返回值 x=func1() y=func2()print("from func1 return is %s" %x) print("from func2 return is %s" %y)

    為什么要使用函數(shù)??

  • 代碼重用
  • 保持一致
  • 可擴(kuò)展性
  • import timedef logger():time_format = '%Y-%m-%d %X'time_current = time.strftime(time_format)with open('a.txt','a+') as f:f.write('%s end action\n' %time_current)def test1():print('in the test1')logger()def test2():print('in the test2')logger()def test3():print('in the test3')logger()test1() test2() test3()

    2. 函數(shù)式編程之參數(shù)詳解

    函數(shù)返回值:

    def test1():print("this is test1")def test2():print("this is test2")return 1def test3():print("this is test3")return 0,10,'hello',['alxe','lb'],{'wf':'ss'}x=test1() y=test2() z=test3() print(x) print(y) print(z)

    總結(jié):
    返回值數(shù)=0,返回None
    返回值數(shù)=1,返回object
    返回值數(shù)>1,返回tuple(元組)

    參數(shù):
    1.形參和實(shí)參
    2.位置參數(shù)和關(guān)鍵字
    標(biāo)準(zhǔn)調(diào)用-實(shí)參與形參位置一一對應(yīng)
    關(guān)鍵字調(diào)用-位置無需固定
    3.默認(rèn)參數(shù)
    4.參數(shù)組

    #*args:接受N個(gè)位置參數(shù),轉(zhuǎn)換為元組的方式 def test(*args):print(args)test(1,2,4,5,6) test(*[1,2,3]) # args=tuple([1,2,3])#和其他參數(shù)一起使用,實(shí)現(xiàn)可擴(kuò)展的功能 def test1(x,*args):print(x)print(args)test1(1,2,3,4,5)#**kwargs:接受N個(gè)關(guān)鍵字參數(shù),轉(zhuǎn)換成字典的方式 def test2(**kwargs):print(kwargs)test2(name='alex',age=8,sex='F') test2(**{'name':'alex','age':8,'sex':'F'})#和其他參數(shù)一起使用,實(shí)現(xiàn)可擴(kuò)展的功能 def test3(name,**kwargs):print(name)print(kwargs)test3('alex',age=8,sex='F')

    3. 局部變量與全局變量作用域

    school = "Oldboy edu." def change_name(name):global school#如果需要修改全局變量,需要先申明print("before change,name:%s,school:%s" %(name,school))name="Alex Li" #這里是局部變量,這個(gè)函數(shù)就是這個(gè)函數(shù)的作用域school = "Mage Linux"print("after change,name:%s,school:%s" %(name,school))name = "alex" change_name(name) print("name:",name) print("school:",school)

    ps:稍微復(fù)雜的類型,如【列表 字典 集合 類】等都能直接改數(shù)據(jù)

    names = ['Alex','Jack','Rain']def change_name():names[0] = '金角大王'print("inside:",names) change_name() print("outside:",names)

    全局與局部變量
    在子程序中定義的變量稱為局部變量,在程序的一開始定義的變量稱為全局變量。
    全局變量作用域是整個(gè)程序,局部變量作用域是定義該變量的子程序。
    當(dāng)全局變量與局部變量同名時(shí):
    在定義局部變量的子程序內(nèi),局部變量起作用;在其它地方全局變量起作用。


    4. 遞歸

    ` def calc(n):print(n)if int(n/2) > 0:return calc(int(n/2))print("->",n)calc(10)

    遞歸特性:
    1.必須有一個(gè)明確的結(jié)束條件
    2.每次進(jìn)入更深一層遞歸時(shí),問題規(guī)模相比上次遞歸都應(yīng)有所減少
    3.遞歸效率不高,遞歸層次過多會導(dǎo)致棧溢出
    (在計(jì)算機(jī)中,函數(shù)調(diào)用是通過棧(stack)這種數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的,每當(dāng)進(jìn)入一個(gè)函數(shù)調(diào)用,棧就會加一層棧幀,每當(dāng)函數(shù)返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調(diào)用的次數(shù)過多,會導(dǎo)致棧溢出)


    5. 函數(shù)式編程介紹

    函數(shù)是Python內(nèi)建支持的一種封裝,我們通過把大段代碼拆成函數(shù),通過一層一層的函數(shù)調(diào)用,就可以把復(fù)雜任務(wù)分解成簡單的任務(wù),這種分解可以稱之為面向過程的程序設(shè)計(jì)。函數(shù)就是面向過程的程序設(shè)計(jì)的基本單元。

    函數(shù)式編程中的函數(shù)這個(gè)術(shù)語不是指計(jì)算機(jī)中的函數(shù)(實(shí)際上是Subroutine),而是指數(shù)學(xué)中的函數(shù),即自變量的映射。也就是說一個(gè)函數(shù)的值僅決定于函數(shù)參數(shù)的值,不依賴其他狀態(tài)。比如sqrt(x)函數(shù)計(jì)算x的平方根,只要x不變,不論什么時(shí)候調(diào)用,調(diào)用幾次,值都是不變的。

    Python對函數(shù)式編程提供部分支持。由于Python允許使用變量,因此,Python不是純函數(shù)式編程語言。

    一、定義

    簡單說,"函數(shù)式編程"是一種"編程范式"(programming paradigm),也就是如何編寫程序的方法論。

    主要思想是把運(yùn)算過程盡量寫成一系列嵌套的函數(shù)調(diào)用。舉例來說,現(xiàn)在有這樣一個(gè)數(shù)學(xué)表達(dá)式:

      (1 + 2) * 3 - 4

    傳統(tǒng)的過程式編程,可能這樣寫:

      var a = 1 + 2;

      var b = a * 3;

      var c = b - 4;

    函數(shù)式編程要求使用函數(shù),我們可以把運(yùn)算過程定義為不同的函數(shù),然后寫成下面這樣:

      var result = subtract(multiply(add(1,2), 3), 4);

    這段代碼再演進(jìn)以下,可以變成這樣

    add(1,2).multiply(3).subtract(4)

    這基本就是自然語言的表達(dá)了。再看下面的代碼,大家應(yīng)該一眼就能明白它的意思吧:

    merge([1,2],[3,4]).sort().search("2")

    因此,函數(shù)式編程的代碼更容易理解。

    要想學(xué)好函數(shù)式編程,不要玩py,玩Erlang,Haskell, 好了,我只會這么多了。。。


    6. 高階函數(shù)

    變量可以指向函數(shù),函數(shù)的參數(shù)能接收變量,那么一個(gè)函數(shù)就可以接收另一個(gè)函數(shù)作為參數(shù),這種函數(shù)就稱之為高階函數(shù)。

    def add(a,b,f):return f(a)+f(b)res = add(3,-6,abs) print(res)

    **程序練習(xí)  
    程序1: 實(shí)現(xiàn)簡單的shell sed替換功能

    程序2:修改haproxy配置文件

    需求:**

    1、查輸入:www.oldboy.org獲取當(dāng)前backend下的所有記錄2、新建輸入:arg = {'bakend': 'www.oldboy.org','record':{'server': '100.1.7.9','weight': 20,'maxconn': 30}}3、刪除輸入:arg = {'bakend': 'www.oldboy.org','record':{'server': '100.1.7.9','weight': 20,'maxconn': 30}} global log 127.0.0.1 local2daemonmaxconn 256log 127.0.0.1 local2 info defaultslog globalmode httptimeout connect 5000mstimeout client 50000mstimeout server 50000msoption dontlognulllisten stats :8888stats enablestats uri /adminstats auth admin:1234frontend oldboy.orgbind 0.0.0.0:80option httplogoption httpcloseoption forwardforlog globalacl www hdr_reg(host) -i www.oldboy.orguse_backend www.oldboy.org if wwwbackend www.oldboy.orgserver 100.1.7.9 100.1.7.9 weight 20 maxconn 3000原配置文件

    轉(zhuǎn)載于:https://www.cnblogs.com/lemonT/p/7471761.html

    總結(jié)

    以上是生活随笔為你收集整理的Python之路,week03 - Python基础3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。