python命名規則
命名風格
python幾種不同命名風格
1. 駝峰式命名法(WjW) 2. 混合式命名法(wjWj) 3. 大寫(WJWJWJ)或大寫加下划線(WJWJWJ)
4. 前綴(wjing)或后綴(ingwj)下划線,有時雙下划線
變量
python變量分為:
1. 常量
2. 公有和私有變量
1.常量
常量全局變量,使用大寫加下划線。指定的變量表示一個常數值
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
2.命名和使用
常量定義的是一組值,程序需要依賴的一組不變值,大多數就是配置文件名,最好的做法是將所有常量放到一個文件中,例如django的settings文件
SECRET_KEY = '(5hjjo=-=r1s43d+=yu(ay2vy_pe53ut0kzd5skzxa9@5#qf_x'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'helloapp',
]
也可以使用Configparser模塊創建配置文件。這種沒有上一種好。
一段很好的像標記的代碼,可以給定一些是無標記屬性等
OPTIONS={}
def register_option(name):
return OPTIONS.setdefault(name,1<<len(OPTIONS))#bin(len(OPTIONS))查看二進制數據
def has_option(options,name):
return bool(options&name)
#定義標簽
BLUE=register_option('BLUE')
RED=register_option('RED')
YELLOW=register_option('YELLOW')
#設置標簽
SET=BLUE|RED
#判斷標簽是否存在設置中
has_option(SET,BLUE)
has_option(SET,YELLOW)
3.公有和私有變量
對於可變的且可以通過導入自由訪問的全局變量,如果它們需要被保護,那么應該使用下划線加小寫字母變成私有變量。
4.函數和方法
函數和方法盡量使用小寫加下划線,有些情況也使用混合大小寫
5.私有元素的正義
對於私有方法和函數,通常是前綴兩個下划線,這樣在運行時會被解釋器重命名,這樣可以避免與任何子類沖突。舉例說明
class Base(object):
def __secret(self):
print("don't tell")
def public(self):
self.__secret()
class Top(Base):
def __secret(self):
print("never say never")
print(dir(Base))
b=Base()
b._Base__secret()
print(dir(Top))
Top().public()輸出
['_Base__secret',..., 'public']
don't tell
['_Base__secret', '_Top__secret', ..., 'public']
don't tell
這樣就會重命名帶有雙下划線的函數和方法
6.特殊方法
特殊方法就是使用雙下划線開始和結尾,常規的方法不應該使用這樣的寫法。
def __init__(self):
pass
def __add__(self):
pass
7.參數
參數都是用小寫,有時可以加下划線
8.property
屬性都是用小寫或小寫加下划線
9.類
類名使用駝峰法WjWj
10.模塊和包
模塊通常都是小寫,不帶下划線,出了特殊的如init模塊,如果模塊是包的私有模塊會使用前綴加一個下划線。包也是一樣
命名
用'has'或'is'前綴命名布爾元素
is_life=True#是否活着
is_connected=True#是否連接
has_cache=True#是否有內存
復數命名集合
users=['zhangsan','lisi']
顯示命名字典
個人地址用全稱
persons_addresses={'zhangsan':'beijing','lisi':'shanghai'}
類的名稱
類的名稱簡明扼要
SQLEngine
BaseCookie
模塊和包名稱
模塊和包要小寫,簡短sqlite,sha1,如果是協議加lib后綴,urllib