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

歡迎訪問 生活随笔!

生活随笔

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

python

python之路金角大王_Python 之路03 - Python基础3

發布時間:2024/3/13 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python之路金角大王_Python 之路03 - Python基础3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節內容

函數與函數式編程

函數式編程之參數詳解

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

嵌套函數

遞歸

函數式編程介紹

高階函數

內置函數

1. 函數與函數式編程

1.面向對象:華山派---》類---》class

2.面向過程:少林派---》過程---》def

3.函數式編程:逍遙派---》函數---》def

函數過程區別:

def func1():

#函數

print('in the func1')

return 0

def func2():

#過程

print('in the func2')

#過程沒有返回值

x=func1()

y=func2()

print("from func1 return is %s" %x)

print("from func2 return is %s" %y)

為什么要使用函數??

代碼重用

保持一致

可擴展性

import time

def 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. 函數式編程之參數詳解

函數返回值:

def test1():

print("this is test1")

def test2():

print("this is test2")

return 1

def 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)

總結:

返回值數=0,返回None

返回值數=1,返回object

返回值數>1,返回tuple(元組)

參數:

1.形參和實參

2.位置參數和關鍵字

標準調用-實參與形參位置一一對應

關鍵字調用-位置無需固定

3.默認參數

4.參數組

#*args:接受N個位置參數,轉換為元組的方式

def test(*args):

print(args)

test(1,2,4,5,6)

test(*[1,2,3]) # args=tuple([1,2,3])

#和其他參數一起使用,實現可擴展的功能

def test1(x,*args):

print(x)

print(args)

test1(1,2,3,4,5)

#**kwargs:接受N個關鍵字參數,轉換成字典的方式

def test2(**kwargs):

print(kwargs)

test2(name='alex',age=8,sex='F')

test2(**{'name':'alex','age':8,'sex':'F'})

#和其他參數一起使用,實現可擴展的功能

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" #這里是局部變量,這個函數就是這個函數的作用域

school = "Mage Linux"

print("after change,name:%s,school:%s" %(name,school))

name = "alex"

change_name(name)

print("name:",name)

print("school:",school)

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

names = ['Alex','Jack','Rain']

def change_name():

names[0] = '金角大王'

print("inside:",names)

change_name()

print("outside:",names)

全局與局部變量

在子程序中定義的變量稱為局部變量,在程序的一開始定義的變量稱為全局變量。

全局變量作用域是整個程序,局部變量作用域是定義該變量的子程序。

當全局變量與局部變量同名時:

在定義局部變量的子程序內,局部變量起作用;在其它地方全局變量起作用。

4. 遞歸

def calc(n):

print(n)

if int(n/2) > 0:

return calc(int(n/2))

print("->",n)

calc(10)

遞歸特性:

1.必須有一個明確的結束條件

2.每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少

3.遞歸效率不高,遞歸層次過多會導致棧溢出

(在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出)

5. 函數式編程介紹

函數是Python內建支持的一種封裝,我們通過把大段代碼拆成函數,通過一層一層的函數調用,就可以把復雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程序設計。函數就是面向過程的程序設計的基本單元。

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

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

一、定義

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

主要思想是把運算過程盡量寫成一系列嵌套的函數調用。舉例來說,現在有這樣一個數學表達式:

(1 + 2) * 3 - 4

傳統的過程式編程,可能這樣寫:

var a = 1 + 2;

var b = a * 3;

var c = b - 4;

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

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

這段代碼再演進以下,可以變成這樣

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

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

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

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

要想學好函數式編程,不要玩py,玩Erlang,Haskell, 好了,我只會這么多了。。。

6. 高階函數

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

def add(a,b,f):

return f(a)+f(b)

res = add(3,-6,abs)

print(res)

程序練習

程序1: 實現簡單的shell sed替換功能

程序2:修改haproxy配置文件

需求:

1、查

輸入:www.oldboy.org

獲取當前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 local2

daemon

maxconn 256

log 127.0.0.1 local2 info defaults

log global

mode http

timeout connect 5000ms

timeout client 50000ms

timeout server 50000ms

option dontlognull

listen stats :8888

stats enable

stats uri /admin

stats auth admin:1234

frontend oldboy.org

bind 0.0.0.0:80

option httplog

option httpclose

option forwardfor

log global

acl www hdr_reg(host) -i www.oldboy.org

use_backend www.oldboy.org if www

backend www.oldboy.org

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000

原配置文件

總結

以上是生活随笔為你收集整理的python之路金角大王_Python 之路03 - Python基础3的全部內容,希望文章能夠幫你解決所遇到的問題。

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