A级片三级毛片中文字幕|97人人干人人爱|aaaaa毛片亚洲av资源网|超碰97在线播放|日本一a级毛片欧美一区黄|日韩专区潮吹亚洲AV无码片|人人香蕉视频免费|中文字幕欧美激情极品|日本高清一级免费不卡|国模大胆在线国产啪视频

AQF
首頁 備考指南 精品課程 名師團隊 職業(yè)前景
您現(xiàn)在的位置:首頁備考必備AQF資料 Python量化隨筆丨那些年,我寫python踩過的坑(二)

Python量化隨筆丨那些年,我寫python踩過的坑(二)

發(fā)表時間: 2019-03-14 10:41:46 編輯:tansy

如果別人問我,你在Python量化策略方面做的怎么樣呀,我從來都是說,在這方面我還是個小學(xué)生,不多評價,不多發(fā)言,畢竟這個行業(yè),現(xiàn)在牛鬼蛇神,各路神仙,稍微多說那么一句就會感覺,不是會跑到算法,就是會跑到金融,要么就是跑到去計量了,然后,我都會在心里默默的告訴自己,不想學(xué)算法、數(shù)學(xué)的金融礦工不是好程序員。

  如果別人問我,你在Python量化策略方面做的怎么樣呀,我從來都是說,在這方面我還是個小學(xué)生,不多評價,不多發(fā)言,畢竟這個行業(yè),現(xiàn)在牛鬼蛇神,各路神仙,稍微多說那么一句就會感覺,不是會跑到算法,就是會跑到金融,要么就是跑到去計量了,然后,我都會在心里默默的告訴自己,不想學(xué)算法、數(shù)學(xué)的金融礦工不是好程序員。

  那么,如果別人問我,你最擅長做啥啊?我以前會兩個眼睛冒著綠光,找到知音一樣的對他說,挖坑。然后,等我用了python才發(fā)現(xiàn),我只是擅長給自己挖坑,真的大神,向來都是給別人挖坑,挖完了坑,坐在一個好角度欣賞各種踩坑的姿勢,偶爾指點一下,接受大伙的膜拜,比如python。不過不管什么樣的坑,早知道,少些糾結(jié),多點從容。上篇兒:Python量化隨筆丨那些年,我寫Python踩過的坑(一)

  對python命名空間比較熟悉的同學(xué)會發(fā)現(xiàn),這種編寫方式其實更像是一個工廠函數(shù),其實并沒有將執(zhí)行者名稱和命名空間通過裝飾器綁定,只是構(gòu)建了兩個獨立的函數(shù)命名空間而已,當(dāng)然我們可以通過構(gòu)建可以傳入?yún)?shù)的裝飾器完成這個操作,但是為了將和裝飾器內(nèi)部編寫邏輯這個事情說清楚,這些已經(jīng)足夠了。>>>點擊咨詢Python量化投資前景

  如果,使用編輯器的時候都是像我們上面寫的hello_by_yellow_teeth = greeting_and_counter(hello)這種方式,那么裝飾器還是比較理解的。但是,python里面有一個裝飾器的語法糖就是將裝飾器的使用寫成這樣:

  @greeting_and_counterdef hello():

  return 'Hello, world!'

  這種寫法可以這樣理解:

  hello = greeting_and_counter(hello)

  那么對于這種更常見的方式進行裝飾器使用的方法,對于一個函數(shù),只能返回一個被裝飾后的函數(shù)并賦值給和原函數(shù)相同的變量名。所以如果想通過這種更容易閱讀的方式使用裝飾器完成之前兩個動作執(zhí)行者分別計次的要求,就需要再進一步改進裝飾器的代碼。這里面就不再進一步講解傳入?yún)?shù)的裝飾器寫法。

  裝飾器的原理已經(jīng)介紹清楚了,那么對于裝飾器的坑,我們就以不帶參數(shù)的裝飾器進行講解。

  首先,我們編寫兩個裝飾器。

  def decorator1(func):

  print('Enter decorator1') def wrapper1():

  print('Enter wrapper1')

  print(func())

  print('Exit wrapper1')

  print('Exit decorator1') return wrapper1

  def decorator2(func):

  print('Enter decorator2') def wrapper2():

  print('Enter wrapper2')

  print(func())

  print('Exit wrapper2')

  print('Exit decorator2') return wrapper2

  之所以說在裝飾器中會產(chǎn)生一些坑是因為用的人駕馭不了,是因為對于剛剛編寫好的decorator1這個裝飾器來說,每一個print都會在什么時候打印出來需要花點時間弄明白。那么我們可以看一下。

  我們先使用decorator1對一個函數(shù)進行裝飾

  @decorator1def help():

  return 'help me'

  Out:

  Enter decorator1

  Exit decorator1

  此時運行了enter decorator1和exit decorator1部分,這是最開始初學(xué)裝飾器非常容易弄錯的一點,對于enter decorator 部分還是比較容易理解的,但是調(diào)用一個函數(shù)的時候定義了另一個函數(shù),然后學(xué)習(xí)者可能就會忽略掉exit decorator的部分。

  然后我們調(diào)用help函數(shù)

  help()

  Out:

  Enter wrapper1

  help me

  Exit wrapper1

  那么運行在wraper之內(nèi)的部分就稍微好理解很多,就是正常的一個函數(shù)調(diào)用時候內(nèi)部代碼的運行順序,從上到下。

  其實說到這里,雖然稍微有點繞,但是還是可以弄清楚然后進行使用的,但是,如果在裝飾器各個部分之間內(nèi)部編寫上相互之間配合的邏輯就很容易因為命名空間的問題導(dǎo)致代碼運行出錯,另外,在裝飾器里面的邏輯編寫因為其運行順序,并不是從上到下這樣一種人容易理解的順序,那么如果編寫復(fù)雜后也很難理解,代碼的可讀性就會大打折扣。

  如果說花些時間,然后冒著被同事打的風(fēng)險還是可以在裝飾器里面編寫一些能夠理解的邏輯,那么多重裝飾器,特別是在裝飾器中附帶裝飾器可能理解起來就真的需要花些精力梳理一下了,例子如下。

  @decorator1@decorator2def help1():

  print('help me1')

  Out:

  Enter decorator2

  Exit decorator2

  Enter decorator1

  Exit decorator1

  或者這樣

  def decorator3(func):

  print('Enter decorator3') @decorator1

  def wrapper3():

  print('Enter wrapper3')

  print(func())

  print('Exit wrapper3')

  print('Exit decorator3')

  @decorator3def help():

  return 'help me3'

  Out:

  Enter decorator3

  Enter decorator1

  Exit decorator1

  Exit decorator3

  那么,這個時候,如果有人還在decorator1里面寫了比較復(fù)雜的邏輯,而且寫錯了的話,我想大家就只剩下打人的沖動了。

  所以說,對于裝飾器,一個非常大的坑就是你覺得你已經(jīng)掌握的很熟練了,希望弄得與眾不同,然后就在一些別人貌似不敢嘗試的地方做些文章,最后,即使你還是完成了一個裝飾器內(nèi)部非常復(fù)雜的運行邏輯,但是,工作環(huán)境中,你就會發(fā)現(xiàn)最經(jīng)常用的還是效率比較高的寫法。

  以上就是本篇文章介紹的內(nèi)容了,寫到這,發(fā)現(xiàn)要是想把一些高級一些的坑講清楚,都是要花一些時間。那么,我為什么會花這么多精力去寫一系列文章,原因有這樣幾個:一是自己學(xué)python時候遇到了無數(shù)的坑,初級的坑靠自己,高級的坑也靠自己,雖然可以通過各種的博客和書籍找到相應(yīng)的解決方案,或者自己根據(jù)python的運行原理推出潛在的坑,但是由于網(wǎng)絡(luò)文章魚目混珠,觀看書籍又如大海撈針,浪費了很多時間,當(dāng)時我就特別希望有人能夠給我講講,或者有那么幾篇不錯的文章,可惜沒有,求不得的苦也就沒必要讓眾人重復(fù),算是行善積德;二是介紹一個觀點,就是編程必然是一個不斷遇到錯誤的過程,編程的能力不僅僅包括讀代碼、寫代碼的能力,還包括debug的能力。如果你不能debug,那么你就不算學(xué)會了編程,太多python初學(xué)者遇到bug喜歡請教別人,其實放棄了掌握必備技能的機會,算是指明去路;三,也是關(guān)鍵,我長得這么丑,又沒文化,寫一些好的技術(shù)文章也許是我出名最后的機會了。>>>點擊咨詢Python量化學(xué)習(xí)指南

  挖坑也好,踩坑也罷,編程、學(xué)習(xí)、工作、生活,處處充滿了如意和不如意的事情,不同人對于類似事情反應(yīng)各不相同,也就有了這樣一種說法,見得多了也便習(xí)以為常。所以,珍惜你身邊的每一個程序員或程序媛,他們充滿坎坷的debug經(jīng)歷培養(yǎng)了他們縝密的邏輯和過人的耐心,嫁他或者娶她,都將是你一生較好的選擇。

  最后,還是用郭德剛郭大爺相聲里的一句話結(jié)個尾:

  “雷霆雨露具是天恩”

  所以,常懷感恩之心,面對大神,少點bug,就沒有殺害。

AQF在線咨詢

  金程推薦: AQF就業(yè)前景 AQF年薪 量化金融分析師年薪

  AQF考友群:760229148

  金融寬客交流群:801860357

  微信公眾號:量化金融分析師

  >>>返回首頁

吐槽

對不起!讓你吐槽了

/500

上傳圖片

    可上傳3張圖片

    2001-2025 上海金程教育科技有限公司 All Rights Reserved. 信息系統(tǒng)安全等級:三級
    中央網(wǎng)信辦舉報中心 上海市互聯(lián)網(wǎng)舉報中心 不良信息舉報郵箱:law@gfedu.net
    滬ICP備14042082號 滬B2-20240743 通過ISO9001:2015 國際質(zhì)量管理體系認(rèn)證 滬公網(wǎng)安備31010902103762號 出版物經(jīng)營許可證 電子營業(yè)執(zhí)照

    掃描二維碼登錄金程網(wǎng)校

    請使用新版 金程網(wǎng)校APP 掃碼完成登錄

    登錄即同意金程網(wǎng)校協(xié)議及《隱私政策》