婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Python代碼風(fēng)格與編程習(xí)慣重要嗎?

Python代碼風(fēng)格與編程習(xí)慣重要嗎?

熱門標(biāo)簽:市場(chǎng)上的電銷機(jī)器人 北京電銷外呼系統(tǒng)加盟 北瀚ai電銷機(jī)器人官網(wǎng)手機(jī)版 小蘇云呼電話機(jī)器人 儋州電話機(jī)器人 佛山400電話辦理 地圖標(biāo)注面積 朝陽(yáng)手機(jī)外呼系統(tǒng) 所得系統(tǒng)電梯怎樣主板設(shè)置外呼

Python代碼風(fēng)格

首先我們要以 PEP8 代碼規(guī)范為標(biāo)準(zhǔn),但也無(wú)需完全遵守。例如:一行不能超過(guò) 79 個(gè)字符等。

Python模塊模板

模塊開(kāi)頭指定編碼格式

模塊文檔注釋,展示模塊的信息,信息內(nèi)容自己決定,如:

  • Author,作者
  • Desc,模塊描述
  • Date,創(chuàng)建時(shí)間

有一個(gè) main() 函數(shù)

有一個(gè)程序主入口 if __name__ == '__main__':

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# @Author: Hui
# @Desc: { 項(xiàng)目主入口模塊 }
# @Date: 2020/05/21 13:04


def main():
    print('Hello Python')


if __name__ == '__main__':
    main()

main() 函數(shù)方便用于測(cè)試當(dāng)前模塊功能。

import 導(dǎo)入

import 導(dǎo)入,避免使用 from ... import * ,因?yàn)檫@可能導(dǎo)致模塊、類、變量名重復(fù)而導(dǎo)致錯(cuò)誤。

我自己的 import 代碼風(fēng)格有兩種。

由短到長(zhǎng)

根據(jù)代碼的長(zhǎng)度由短到長(zhǎng)依次導(dǎo)入,import 過(guò)度到 from ... import ... ,換行分割可有可無(wú),我是根據(jù) from ... import ... 前面的 import 的數(shù)量和整體美觀來(lái)決定要不要換行。

import os
import sys
import time
import random
import config
import pygame
import requests
import numpy as np

from PIL import Image
from threading import Thread
from datetime import datetime

分類導(dǎo)入

分類導(dǎo)入,是分好類后在根據(jù)代碼的長(zhǎng)度由短到長(zhǎng)依次導(dǎo)入,主要有:

  • Python內(nèi)置模塊
  • Python自建模塊
  • Python第三方庫(kù)
# Python內(nèi)置模塊導(dǎo)入
import os
import sys
import time
import random
from threading import Thread
from datetime import datetime

# Python自建模塊、第三方庫(kù)導(dǎo)入
import config
import pygame
import requests
import numpy as np
from PIL import Image

導(dǎo)入順序依次為

Python內(nèi)置模塊  -->  Python自建模塊  -->  Python第三方庫(kù)

根據(jù)自己的風(fēng)格,導(dǎo)入的自建模塊、Python第三方庫(kù)少時(shí)可以在一起無(wú)需換行

導(dǎo)入的自建模塊少時(shí)可以跟Python內(nèi)置模塊在一起,就是轉(zhuǎn)換成 由短到長(zhǎng) 的風(fēng)格

建議

導(dǎo)入模塊代碼風(fēng)格無(wú)需照搬照抄地遵循,我們做任何的優(yōu)化就是為了讓代碼更好看,結(jié)構(gòu)清晰,無(wú)需刻意遵循死規(guī)則、爛規(guī)則,應(yīng)該活學(xué)活用,創(chuàng)新變化,學(xué)習(xí)別人優(yōu)秀的方案,總結(jié)出適合自己的。

例如:

假如import 導(dǎo)入語(yǔ)句比 from 導(dǎo)入語(yǔ)句更長(zhǎng),要遵循或者糾結(jié) import 是要在 from 導(dǎo)入語(yǔ)句前面還是由短到長(zhǎng)排放呢?

import numpy as np
import multiprocessing

from PIL import Image
import numpy as np
from PIL import Image
import multiprocessing

無(wú)需太過(guò)糾結(jié)、摳字眼,兩種導(dǎo)入風(fēng)格都可以。

Django代碼范例

封裝html的url網(wǎng)址

渲染 html 頁(yè)面,把 html 的存放路徑總體封裝到一個(gè)類里面。

class BookView(object):
    """圖書(shū)模塊視圖類"""
	
    # 圖書(shū)首頁(yè)
    INDEX_VIEW = 'book/index.html'
	
    # 圖書(shū)信息頁(yè)
    BOOK_INFO_VIEW = 'book/book_info.html'
	
    # 英雄信息頁(yè)
    HERO_INFO_VIEW = 'book/hero_info.html'



# 定義視圖函數(shù)
def index(request):
    """
    圖書(shū)首頁(yè)
    """
    data = {
        'content': 'hello world',
        'list': list(range(1, 10)),
    }
    return render(request, BookView.INDEX_VIEW, data)


def show_book(request):
    """
    展示圖書(shū)信息界面
    """
    book_list = BookInfo.objects.all()
    data = {
        'book': book_list
    }
    return render(request, BookView.BOOK_INFO_VIEW, data)

封裝注冊(cè)的提示錯(cuò)誤信息

返回頁(yè)面提示的錯(cuò)誤信息,統(tǒng)一封裝到字典中,提高代碼可讀性、擴(kuò)展性。

初始版本

class UserView(object):
    """用戶模塊視圖類"""
    
    LOGIN_VIEW = 'user/login.html'
	
    REGISTER_VIEW = 'user/register.html'
	
    USER_CENTER_VIEW = 'user/user_center.html'
    
    
def register(request):
    username = request.get('username')
    password = request.get('password')
    email = request.get('email')
    allow = request.get('allow')
    
    # 校驗(yàn)注冊(cè)項(xiàng)是否有空值 
    # all()中有一個(gè)為空返回False,都有值則True
    if not all([username, password, email]):
        return render(request, UserView.REGISTER_VIEW, {'error_msg': '數(shù)據(jù)不完整'})
    
    # 校驗(yàn)是否勾選(同意)用戶協(xié)議
    if allow != 'on':
        return render(request, UserView.REGISTER_VIEW, {'error_msg': '請(qǐng)勾選用戶協(xié)議'})
     
    # 校驗(yàn)用戶名是否重復(fù)
    try   
        user = User.object.get(username=username)
    except User.DoesNotExists:
        user = None
     
    if user:
        return render(request, UserView.REGISTER_VIEW, {'error_msg': '該用戶已存在'})

    return render(request, 'register.html')

可以看到在返回響應(yīng)數(shù)據(jù)時(shí)代碼大致一樣,只有提示信息不一樣

return render(request, UserView.REGISTER_VIEW, {'error_msg': '數(shù)據(jù)不完整'})

return render(request, UserView.REGISTER_VIEW, {'error_msg': '請(qǐng)勾選用戶協(xié)議'})

return render(request, UserView.REGISTER_VIEW, {'error_msg': '該用戶已存在'})

因此封裝后的版本

def register(request):
    username = request.get('username')
    password = request.get('password')
    email = request.get('email')
    allow = request.get('allow')
    
    error_msg = {
        'email_error': '郵箱格式不正確',
        'user_exists': '該用戶已存在',
        'data_error': '數(shù)據(jù)不完整',
        'user_protocol': '請(qǐng)勾選用戶協(xié)議',
    }
    
    # 返回頁(yè)面的數(shù)據(jù)
    data = dict()
    
    # 校驗(yàn)注冊(cè)項(xiàng)是否有空值 
    # all()中有一個(gè)為空返回False,都有值則True
    if not all([username, password, email]):
        data['error_msg'] = error_msg['data_error']
    
    # 校驗(yàn)是否勾選(同意)用戶協(xié)議
    elif allow != 'on':
        data['error_msg'] = error_msg['user_protocol']
    else:
        # 校驗(yàn)用戶名是否重復(fù)
        user = User.object.filter(username=username)
            
        if user:
            data['error_msg'] = error_msg['user_error']
        else:
            pass
        
    return render(request, UserView.REGISTER_VIEW, data)
# 校驗(yàn)用戶名是否重復(fù)
try   
	user = User.object.get(username=username)
except User.DoesNotExists:
    user = None

優(yōu)化后

User.object.filter(username=username)

get 獲取不到數(shù)據(jù)會(huì)報(bào)異常,filter則返回一個(gè)空的 query_set 查詢結(jié)果集,去除了 try ... except 異常捕獲。讓代碼結(jié)構(gòu)更清晰。

我們把 if、if.. 改成了 if elif else ,把 render(request, 'register.html', data) 抽到外面去了,并不需要在每一個(gè) if 里面 return 響應(yīng)。把錯(cuò)誤信息封裝在 error_msg 字典中,下次想再添加一些錯(cuò)誤提示信息或者想修改錯(cuò)誤提示信息可以在 error_msg 字典中添加、修改,這樣易維護(hù)、擴(kuò)展,也更加明確有哪些錯(cuò)誤信息。

到此這篇關(guān)于Python代碼風(fēng)格與編程習(xí)慣重要嗎?的文章就介紹到這了,更多相關(guān)Python編程規(guī)范內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 給大家整理了19個(gè)pythonic的編程習(xí)慣(小結(jié))
  • Python入門篇之編程習(xí)慣與特點(diǎn)
  • 符合語(yǔ)言習(xí)慣的 Python 優(yōu)雅編程技巧【推薦】
  • 只用20行Python代碼實(shí)現(xiàn)屏幕錄制功能
  • Python一行代碼實(shí)現(xiàn)自動(dòng)發(fā)郵件功能
  • 只需要100行Python代碼就可以實(shí)現(xiàn)的貪吃蛇小游戲
  • 利用Python計(jì)算圓周率π的實(shí)例代碼
  • 寫(xiě)好Python代碼的幾條重要技巧
  • Python 線程池模塊之多線程操作代碼
  • python使用tkinter實(shí)現(xiàn)透明窗體上繪制隨機(jī)出現(xiàn)的小球(實(shí)例代碼)
  • python3調(diào)用c語(yǔ)言代碼的全過(guò)程記錄

標(biāo)簽:定西 商丘 金融催收 龍巖 酒泉 云南 寧夏 江蘇

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python代碼風(fēng)格與編程習(xí)慣重要嗎?》,本文關(guān)鍵詞  Python,代碼,風(fēng)格,與,編程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python代碼風(fēng)格與編程習(xí)慣重要嗎?》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Python代碼風(fēng)格與編程習(xí)慣重要嗎?的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 闵行区| 阿瓦提县| 固镇县| 浮梁县| 休宁县| 阜阳市| 拜泉县| 延边| 喀喇| 叶城县| 酉阳| 枣强县| 广西| 荥经县| 新兴县| 乐都县| 奉节县| 乳山市| 高州市| 稻城县| 常山县| 什邡市| 磐安县| 易门县| 峡江县| 昌图县| 中宁县| 阿城市| 芮城县| 同仁县| 中牟县| 延庆县| 巴林左旗| 萍乡市| 鄢陵县| 施秉县| 自贡市| 安阳市| 秦皇岛市| 淳化县| 乃东县|