最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python變量命名的7條建議

 更新時(shí)間:2019年07月04日 09:24:46   作者:FOOFISH-PYTHON之禪  
這篇文章主要介紹了python變量命名的7條建議,如何給變量命名,如何讓它變得有意義成了程序員不可逾越的難題,需要的朋友可以參考下

前言

Quora 問答社區(qū)的一個(gè)開發(fā)者投票統(tǒng)計(jì),程序員最大的難題是:如何命名(例如:給變量,類,函數(shù)等等),光是如何命名一項(xiàng)的選票幾乎是其它八項(xiàng)的投票結(jié)果的總和。如何給變量命名,如何讓它變得有意義成了程序員不可逾越的難題,這篇文章參考了 Clean Code ,提供7條命名建議,希望能在取名字的過程中給你帶來一些幫助。

以下都是基于Python3.7語法

1、使用有意義而且可讀的變量名

ymdstr = datetime.date.today().strftime("%y-%m-%d")

鬼知道 ymd 是什么?

current_date: str = datetime.date.today().strftime("%y-%m-%d")

看到 current_date,一眼就懂。

2、同類型的變量使用相同的詞匯

這三個(gè)函數(shù)都是和用戶相關(guān)的信息,卻使用了三個(gè)名字

get_user_info()
get_client_data()
get_customer_record()

如果實(shí)體相同,你應(yīng)該統(tǒng)一名字

get_user_info()
get_user_data()
get_user_record()

極好 因?yàn)?Python 是一門面向?qū)ο蟮恼Z言,用一個(gè)類來實(shí)現(xiàn)更加合理,分別用實(shí)例屬性、property 方法和實(shí)例方法來表示。

class User:
  info : str

  @property
  def data(self) -> dict:
    # ...

  def get_record(self) -> Union[Record, None]:
    # ...


3、使用可搜索的名字

大部分時(shí)間你都是在讀代碼而不是寫代碼,所以我們寫的代碼可讀且可被搜索尤為重要,一個(gè)沒有名字的變量無法幫助我們理解程序,也傷害了讀者,記?。捍_保可搜索。

time.sleep(86400);

What the fuck, 上帝也不知道86400是個(gè)什么概念

# 在全局命名空間聲明變量,一天有多少秒
SECONDS_IN_A_DAY = 60 * 60 * 24

time.sleep(SECONDS_IN_A_DAY)

清晰多了。

4、使用可自我描述的變量

address = 'One Infinite Loop, Cupertino 95014'
city_zip_code_regex = r'^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$'
matches = re.match(city_zip_code_regex, address)

save_city_zip_code(matches[1], matches[2])

matches[1] 沒有自我解釋自己是誰的作用

一般

address = 'One Infinite Loop, Cupertino 95014'
city_zip_code_regex = r'^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$'
matches = re.match(city_zip_code_regex, address)

city, zip_code = matches.groups()
save_city_zip_code(city, zip_code)

你應(yīng)該看懂了, matches.groups() 自動(dòng)解包成兩個(gè)變量,分別是 city,zip_code

address = 'One Infinite Loop, Cupertino 95014'
city_zip_code_regex = r'^[^,\\]+[,\\\s]+(?P<city>.+?)\s*(?P<zip_code>\d{5})?$'
matches = re.match(city_zip_code_regex, address)

save_city_zip_code(matches['city'], matches['zip_code'])

5、 不要強(qiáng)迫讀者猜測變量的意義,明了勝于晦澀

seq = ('Austin', 'New York', 'San Francisco')

for item in seq:
  do_stuff()
  do_some_other_stuff()
  # ...
  # Wait, what's `item` for again?
  dispatch(item)

seq 是什么?序列?什么序列呢?沒人知道,只能繼續(xù)往下看才知道。

locations = ('Austin', 'New York', 'San Francisco')

for location in locations:
  do_stuff()
  do_some_other_stuff()
  # ...
  dispatch(location)

用 locations 表示,一看就知道這是幾個(gè)地區(qū)組成的元組

6、不要添加無謂的上下文

如果你的類名已經(jīng)可以告訴了你什么,就不要在重復(fù)對變量名進(jìn)行描述

class Car:
  car_make: str
  car_model: str
  car_color: str

感覺畫蛇添足,如無必要,勿增實(shí)體。

class Car:
  make: str
  model: str
  color: str

7、使用默認(rèn)參數(shù)代替短路運(yùn)算和條件運(yùn)算

def create_micro_brewery(name):
  name = "Hipster Brew Co." if name is None else name
  slug = hashlib.sha1(name.encode()).hexdigest()
  # etc.

def create_micro_brewery(name: str = "Hipster Brew Co."):
  slug = hashlib.sha1(name.encode()).hexdigest()
  # etc.

這個(gè)應(yīng)該能理解吧,既然函數(shù)里面需要對沒有參數(shù)的變量做處理,為啥不在定義的時(shí)候指定它呢?

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.dumps())

    Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.du

    本文主要介紹了Python中JSON常見用法(json.load()、json.loads()、json.dump()、json.dumps()),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Keras框架中的epoch、bacth、batch size、iteration使用介紹

    Keras框架中的epoch、bacth、batch size、iteration使用介紹

    這篇文章主要介紹了Keras框架中的epoch、bacth、batch size、iteration使用介紹,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用matplotlib繪制圖形大全(曲線圖、條形圖、餅圖等)

    Python使用matplotlib繪制圖形大全(曲線圖、條形圖、餅圖等)

    matplotlib 是一個(gè)用于創(chuàng)建靜態(tài)、動(dòng)態(tài)和交互式可視化圖形的 Python 庫,它被廣泛用于數(shù)據(jù)可視化,并且可以與多種操作系統(tǒng)和圖形后端一起工作,本文給大家介紹了Python使用matplotlib繪制圖形大全,需要的朋友可以參考下
    2024-06-06
  • Python通用驗(yàn)證碼識別OCR庫之ddddocr驗(yàn)證碼識別

    Python通用驗(yàn)證碼識別OCR庫之ddddocr驗(yàn)證碼識別

    dddd_ocr也是一個(gè)用于識別驗(yàn)證碼的開源庫,又名帶帶弟弟ocr,爬蟲界大佬sml2h3開發(fā),識別效果也是非常不錯(cuò),下面這篇文章主要給大家介紹了關(guān)于Python通用驗(yàn)證碼識別OCR庫之ddddocr驗(yàn)證碼識別的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Pandas異常值處理小結(jié)

    Pandas異常值處理小結(jié)

    在Pandas中,異常值是數(shù)據(jù)中那些與其他數(shù)據(jù)點(diǎn)顯著不同的點(diǎn)本文主要介紹了Pandas異常值處理小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Python實(shí)現(xiàn)定時(shí)任務(wù)利器之a(chǎn)pscheduler使用詳解

    Python實(shí)現(xiàn)定時(shí)任務(wù)利器之a(chǎn)pscheduler使用詳解

    在Python中,還可以用第三方包來管理定時(shí)任務(wù),比如celery、apscheduler。相對來說apscheduler使用起來更簡單一些,這里來介紹一下apscheduler的使用方法
    2022-10-10
  • 常用的10個(gè)Python實(shí)用小技巧

    常用的10個(gè)Python實(shí)用小技巧

    這篇文章主要介紹了常用的10個(gè)Python實(shí)用小技巧,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下
    2020-08-08
  • Python3批量創(chuàng)建Crowd用戶并分配組

    Python3批量創(chuàng)建Crowd用戶并分配組

    這篇文章主要介紹了Python3批量創(chuàng)建Crowd用戶并分配組,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 基于Python和TFIDF實(shí)現(xiàn)提取文本中的關(guān)鍵詞

    基于Python和TFIDF實(shí)現(xiàn)提取文本中的關(guān)鍵詞

    TFIDF 的工作原理是按比例增加一個(gè)詞語在文檔中出現(xiàn)的次數(shù),但會被它所在的文檔數(shù)量抵消。本文將利用TFIDF實(shí)現(xiàn)提取文本中的關(guān)鍵詞,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-04-04
  • Ubuntu下安裝PyV8

    Ubuntu下安裝PyV8

    本文給大家簡單介紹了下在ubuntu下安裝pyv8的方法和注意事項(xiàng),非常的實(shí)用,有需要的小伙伴可以參考下
    2016-03-03

最新評論

如皋市| 洪洞县| 仙游县| 菏泽市| 巨鹿县| 乐都县| 合江县| 兰溪市| 扎兰屯市| 孝义市| 丽江市| 茶陵县| 宁陵县| 扎囊县| 沁源县| 元氏县| 青河县| 五常市| 桓台县| 张家港市| 黄龙县| 余姚市| 克东县| 康平县| 元氏县| 紫云| 阿荣旗| 本溪| 冀州市| 宜川县| 资阳市| 晋江市| 陵川县| 金堂县| 大宁县| 庄河市| 商南县| 麻城市| 永吉县| 稻城县| 巴林左旗|