暑期經(jīng)驗(yàn)分享
- 寫在前面的話
- python代碼的書寫規(guī)范
- 編碼
- 空行
- 空格
- 注釋規(guī)范
- 命名規(guī)范
- 函數(shù)開頭
寫在前面的話
時(shí)間飛逝,轉(zhuǎn)眼兩年已經(jīng)過去了,現(xiàn)在也已經(jīng)到了忙碌奔波寫論文找工作的時(shí)間了,仔細(xì)回想下之前兩年的點(diǎn)點(diǎn)滴滴,除了在各種push下做了一些小項(xiàng)目,其他真的沒有一點(diǎn)東西,真的慚愧。這么長一段時(shí)間的python語言的使用還是積累下來了一些東西,下面是把自己的一些愚見記錄下來,希望能夠給讀者有一點(diǎn)點(diǎn)幫助。
python代碼的書寫規(guī)范
書寫代碼的時(shí)候一定要注意養(yǎng)成遵守規(guī)范的好習(xí)慣,每寫一行代碼都要保證遵守相應(yīng)的規(guī)范,這樣起碼后面自己再看當(dāng)年的大作的時(shí)候還是能夠看得懂的。
編碼
沒有特殊情況,一般情況下就使用UTF-8編碼。
文件頭部加上# coding:utf-8。
# coding: utf-8
空行
兩個(gè)函數(shù)模塊之間一般是要空兩行,類內(nèi)函數(shù)之間需要空一行:
class
MainFunc
(
)
:
def
__init__
(
self
,
name
)
:
self
.
name
=
name
def
play_game
(
self
)
:
pass
def
main_func
(
)
:
pass
def
hello_world
(
)
:
pass
函數(shù)中,空行還可以用來分割不同的邏輯塊:
def
yolo_body
(
inputs
,
num_anchors
,
num_classes
)
:
"""Create YOLO_V3 model CNN body in Keras."""
darknet
=
Model
(
inputs
,
darknet_body
(
inputs
)
)
x
,
y1
=
make_last_layers
(
darknet
.
output
,
512
,
num_anchors
*
(
num_classes
+
5
)
)
x
=
compose
(
DarknetConv2D_BN_Leaky
(
256
,
(
1
,
1
)
)
,
UpSampling2D
(
2
)
)
(
x
)
x
=
Concatenate
(
)
(
[
x
,
darknet
.
layers
[
152
]
.
output
]
)
x
,
y2
=
make_last_layers
(
x
,
256
,
num_anchors
*
(
num_classes
+
5
)
)
x
=
compose
(
DarknetConv2D_BN_Leaky
(
128
,
(
1
,
1
)
)
,
UpSampling2D
(
2
)
)
(
x
)
x
=
Concatenate
(
)
(
[
x
,
darknet
.
layers
[
92
]
.
output
]
)
x
,
y3
=
make_last_layers
(
x
,
128
,
num_anchors
*
(
num_classes
+
5
)
)
return
Model
(
inputs
,
[
y1
,
y2
,
y3
]
)
空格
在二元運(yùn)算符兩邊各空一格[=,-,+=,==,>,in,is not, and, ……]:
a
=
b
+
c
batch_size
=
img_nums
//
batch_nums
函數(shù)的參數(shù)列表中,默認(rèn)值等號(hào)兩邊不要添加空格:
def
train
(
batch_size
=
128
,
epoch
=
50
,
log_dir
=
'./logs'
)
:
pass
逗號(hào)和冒號(hào)只需要在后面留空格,這個(gè)在字典的定義過程中體現(xiàn)的最為明顯:
demo_dict
=
{
'1'
:
'1'
,
'2'
:
'2'
,
'3'
:
'3'
}
注釋規(guī)范
行注釋,使用#開頭,后面加上空格,注釋一定要是有意義的話,這個(gè)是思路的解釋,而不是簡(jiǎn)單復(fù)述代碼:
# 將像素值轉(zhuǎn)化為8位
img
*=
255
.
函數(shù)注釋,使用三個(gè)雙引號(hào)開頭和三個(gè)雙引號(hào)結(jié)尾,解釋函數(shù)的作用,輸入?yún)?shù)以及返回的參數(shù):
def
reverse_list
(
nums
)
:
""" 反轉(zhuǎn)列表 :pram nums:要反轉(zhuǎn)的list :returns:返回反轉(zhuǎn)之后的list,以及l(fā)ist的長度 """
new_nums
=
nums
[
:
:
-
1
]
return
new_nums
,
len
(
nums
)
命名規(guī)范
類名一般采用駝峰(CamelCase)命名規(guī)則,每個(gè)單詞的首字母大寫:
class
MainFunc
(
)
:
pass
class
HelloWorld
(
)
:
pass
函數(shù)名和變量名均全部使用小寫,不同字母之間使用下劃線_分割開:
def
hello_world
(
)
:
demo_dict
=
{
'1'
:
'2'
}
demo_list
=
[
]
常量則全部使用大寫,字母之間使用下劃線分開:
BATCH_SIZE
=
128
EPOCH
=
50
函數(shù)開頭
如果要寫一個(gè)能直接執(zhí)行的腳本,要給腳本加一個(gè)規(guī)范的開頭,如下:
# coding: utf-8
def
demo
(
)
:
print
(
'hello world'
)
if
__name__
==
'__main__'
:
demo
(
)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

