1. 程式人生 > >優化python程式的幾點建議

優化python程式的幾點建議

1、在需要只讀序列時,最好使用元組而非列表;

2、使用生成器yield,而不是建立大的元組和列表並在其上進行迭代處理;

3、儘量使用python內建的資料結構,而不實現自己的自定義結構;

4、從小字串中產生大字串時,不要對小字串進行連線,而是在列表中累積,最後將字串列表結合成一個單獨的字串;

5、如果某個物件需要多次使用屬性訪問,或從某個資料結構中進行訪問,那麼較好的做法是建立並使用一個區域性變數來訪問物件。

6、可使用字典對多個類似的elif分支進行簡化;

functions=dict(a=add,b=edit,l=list)

functions[recieve]()      其中add(),edit(),list()為函式名,recieve為接收的引數;

7、開啟讀寫檔案用上下文管理器with語句;

下面是對python複雜語法的一點補充:

1、動態程式設計與內省函式:

1 __import__()            根據模組名匯入模組;
2 delattr(obj,name)       從物件obj中刪除名為name的屬性;
3 getattr(obj,name,val)    返回物件obj中名為name的屬性值,如果沒有這一屬性,並且給定了val引數,就返回val;
4 setattr(obj,name,val)    將物件obj中名為name的屬性值設定為val,必要時候建立該屬性;
5 hasattr(obj,name)       如果物件obj中有名為name的屬性,就返回True;
6 locals()      返回當前本地上下文的字典; 7 globals()      返回當前全域性上下文的字典; 8 type(obj)      返回物件obj的型別物件; 9 vars(obj)      以字典形式返回物件obj的上下文,如果沒有給定obj,就返回本地上下文;

2、修飾器

修飾器是一個函式,接受一個函式或方法作為其唯一的引數,並返回一個新函式或方法。

一個簡單的修飾器函式:

1 def positieResult(function):
2     def wrapper(*args,**kwargs):
3 result=function(*args,**kwargs) 4 assert result>=0,function.__name__+"()result isn't>=0" 5 return result 6 wrapper.__name__=function.__name__ 7 wrapper.__doc__=function.__doc__ 8 return wrapper

也可用functools模組的wraps函式來取代最後對函式的同步語句:

@functools.wraps(function)

def wrapper(*args,**kwargs):

       ...

也可在此函式的外國再包一層函式來給修飾器增加可傳遞引數。

3、def a() ->bool:

       suite

表示對函式使用時加註釋(3.5後加的新功能)

4、函子另一種包含了特殊方法__call()__的類。它提供的一個關鍵好處就是可以維護一些狀態資訊。

閉包:

def make_strip_function(characters):
    def strip_function(string):
        return string.strip(characters)
    return strip_function

使用方法:

    strip_a=make_strip_function(',:;.!?')
    strip_a('ladys!')  #returns:'ladys'

相當於二次傳參,下面的函子具有相同的功能和用法

class Strip:
    def __init__(self,characters):
        self.characters=characters
    def __call__(self,string)
        return string.strip(self.characters)

相關推薦

優化python程式建議

1、在需要只讀序列時,最好使用元組而非列表; 2、使用生成器yield,而不是建立大的元組和列表並在其上進行迭代處理; 3、儘量使用python內建的資料結構,而不實現自己的自定義結構; 4、從小字串中產生大字串時,不要對小字串進行連線,而是在列表中累積,最後將字串列表結合成一個單獨的字串; 5、

優化Webpack構建性能的建議

webpackWebpack 作為目前最流行的前端構建工具之一,在 vue/react 等 Framework 的生態圈中都占據重要地位。在開發現代 Web 應用的過程中,Webpack 和我們的開發過程和發布過程都息息相關,如何改善 Webpack 構建打包的性能也關系到我們開發和發布部署的效率。以下是一些

關於unity優化建議

1、在釋放資源執行UnloadnusedAssets時,最好將其放在切換場景的時候進行,因為該操作比較耗時 2、儘量將if(other.tag == a.tag)改為other.CompareTag(a.tag).因為other.tag為產生180B的GC Allow. 3、少用fore

mysql優化建議

1、硬體配置優化 (1)CPU選擇:多核的CPU,主頻高的CPU (2)記憶體:更大的記憶體 (3)磁碟選擇:更快的轉速、RAID、陣列卡 (4)網路環境 2、mysql設計優化 (1)儲存引擎的選擇 ①Myisam:資料庫併發不大,讀多寫少,而且都能很好的用到索引,sql語句比較簡單 ②I

阿里資深無線開發專家給程式設計師職業發展的建議

熱文導讀 | 點選標題閱讀來自:http://www.techug.com/post/progr

ava多執行緒程式設計-(13)- 關於鎖優化建議

原文出自 : https://blog.csdn.net/xlgen157387/article/details/78363616 一、背景 在《 Java多執行緒程式設計-(11)-從volatile和synchronized的底層實現原理看Java虛擬機器對鎖

程式設計師長期保持身心健康的建議

程式設計師,一個在外人看來是高薪、前途無量的工作,但又有多少人清楚,我們有多少程式設計師是用自己的身心健康換來的這一看似華麗的褒讚。好吧,這裡先不吐苦水了,生活總是向前的,有問題,我們就要積極地去解決,更何況是關乎自身的身心健康問題,一味的抱怨只會將自己推向另一個深淵。本文是

java開發中對於程式設計師的建議,你們有想到嗎?

建議一:只有真正喜歡才能寫好程式 喜歡寫程式,做程式設計師就是上天堂; 不喜歡寫程式,做程式設計師就是下地獄; 程式設計師需要整天趴在電腦前,經常沒日沒夜的,非常辛苦,而且工作來不得半點虛假,少寫一個標點符號都不行。喜歡的人,日子過得非常開心,每寫一行程式碼,都會有新的成就,尤其當自己的

Redis設計與優化建議

Redis+Spring jedis:設計與優化的幾點建議 1.  設計: a)   Redis適用的場合為需要快速的存取資料,資料之間的關係不是很緊密,因此資料結構設計時儘量設計為獨立。 b)   Redis不適合對值的查詢,如果不可避免會使用到,應該設計輔助的key值來

給小白程式設計師的建議

接納自己是一張白紙這個事實        我覺得這是一個首要的前提。也許你很優秀,有很強的學習能力,有強大的信念,有超強的小宇宙,有百折不撓的韌性……但是,你沒做過,你確實是一張白 紙。這是一個客觀事實,我們必須要要承認。我們所做的一切,都是在接納現

Java記憶體優化和效能優化建議

1.沒有必要時請不用使用靜態變數     使用Java的開發者都知道,當某個物件被定義為stataic變數所引用,這個物件所佔有的記憶體將不會被回收。有時,開發者會將經常呼叫的物件或者變數定義為static,以便提高程式的執行效能。因此,不是常用到的物件或者變數,不要定

爭對mysql表資料量比較大時優化建議

1、優化你的sql和索引,比如優化你的sql語句的寫法,不要把sql語句寫的太複雜,使用“臨時表”暫存中間結果等; 2、加快取,比如使用memcached,redis等; 3、如果以上都做了後,還是慢,可以考慮做主從複製或主主複製,讀寫分離,可以在應用層做,效率高,也可以用三方工具,        第三方工具

程式設計師找工作的建議

作為一名程式設計師,在找工作時,踩過很多坑,整理了幾點建議,作為前車之鑑。 1. 整理簡歷 (1)寫明擅長的技術,熟悉的語言,框架等 (2)整理做過的專案時,寫清楚技術要點,突出自己在其中的角色。 專案中涉及的知識點,好好整理, 深挖設計原理,為什麼

選擇優異Linux培訓機構的建議

it培訓機構 linux 教育機構 朋友 廣告 一個Linux培訓機構好不好,牢記,一、不要光看它的廣告打的有多響,二、不要光看它的課程內容有多豐厚,三、不要光看他的教師多麽高大上的名頭來歷,四、不要光看所謂的教學質量有多好!那麽到底看什麽呢?最簡單的看學生畢業的結果,這個你懂的!機構裏的

工作上的建議-轉載

自己的 昨天 你家 每天 限制 好的 我認 職位 的人 2017-08-11 19:16 修改樣式,潤飾句子。 我認為這些建議不僅僅是針對工作上的,生活,學習等方面同樣適用。我覺得主要地從根本上來講,給你以下幾個建議: 努力 工作要努力,隨隨便便過日子過四五年也是過,

關於異常處理的建議

ext 統計 href 信息 trace 莫名其妙 dex 推薦 ... 一、原則 捕獲異常必須處理異常,要麽轉換成對應文案返回給調用方,要麽顯式拋出異常給調用方,提醒調用方捕獲處理,顯式拋出異常時,源異常信息和異常Trace棧信息必須打印出來或者拋給調用

程序員找工作的建議

pre 解決 能力 要點 寫代碼 設計 查找 介紹 工作 作為一名程序員,在找工作時,踩過很多坑,整理了幾點建議,作為前車之鑒。 1. 整理簡歷 (1)寫明擅長的技術,熟悉的語言,框架等 (2)整理做過的項目時,寫清楚技術要點,突出自己在其中的角色。 項目中涉及的知識點,好

設計模式大雜燴(24種設計模式的總結以及學習設計模式的建議

  作者:zuoxiaolong8810(左瀟龍),轉載請註明出處,特別說明:本博文來自博主原部落格,為保證新部落格中博文的完整性,特複製到此留存,如需轉載請註明新部落格地址即可。            迄今為止

求職面試的建議(肺腑之言)

考試結束,班級平均分只拿到了年級第二,班主任於是問道:大家都知道世界第一高峰珠穆朗瑪峰,有人知道世界第二高峰是什麼嗎?正當班主任要繼續發話,只聽到角落默默想起來一個聲音:”喬戈裡峰” 前言 我的室友看了我在做公眾號在給大家傳授一些經驗,他(已拿百度後臺開發offer)也想著給大家分

給即將學習大資料的建議

以下內容摘自一位學習大資料技術的朋友的感想和總結,文采飛揚、字字肺腑、產生共鳴。經本人同意,釋出至此,希望給很多站在大資料門口駐足、猶疑、徘徊的小夥伴一些建議,大資料行業發展不等人,要想改變現狀,現在出發,即可動手,大資料學習現在開始,為時未晚。 ——————————————————華麗的分割線