美文网首页
代码规范

代码规范

作者: jiaxiaolei | 来源:发表于2022-05-16 10:46 被阅读0次

关于python代码规范,从网上可以找到很多,编辑器(vim,sublime text, pycharm等)也都有相应的代码规范插件,都会做相应的提醒。
自己编辑和提交之前检查一下。
https://www.python.org/dev/peps/pep-0008/
http://www.runoob.com/w3cnote/google-python-styleguide.html

理论:

python官方pep8:

https://peps.python.org/pep-0008/

Python 编码规范(Google)
https://google.github.io/styleguide/pyguide.html

Python 编码规范(Google)【中文翻译】
https://www.runoob.com/w3cnote/google-python-styleguide.html

实践:

IDE,编辑器(vim,sublime text, visual studio code, pycharm等)也都有相应的代码规范插件,都会做相应的提醒和修复建议。

# filename: uop/auth/handler.py

# -*- coding: utf-8 -*-
import json    #NOTE: 必要的空行做分割;
import sys
import ldap
import datetime  #NOTE: 导入了,但是并没有用到
import os        
import hashlib
from flask import request   #NOTE: 导入包的顺序依次为: 标准库—>第三方库—>自定义库。 并用空行做分割。
from flask import redirect
from flask import jsonify
from flask_restful import reqparse, abort, Api, Resource, fields, marshal_with
from mongoengine import NotUniqueError
from uop.auth import auth_blueprint
from uop.models import UserInfo, User
from uop.auth.errors import user_errors
from wtforms import ValidationError
reload(sys)
sys.setdefaultencoding('utf-8')
from flask.ext.httpauth import HTTPBasicAuth #NOTE: 过期的module, 用flask_httpauth 替换。

auth = HTTPBasicAuth()

base_dn = 'dc=syswin,dc=com'
scope = ldap.SCOPE_SUBTREE
ldap_server = 'ldap://172.28.4.103:389'  #NOTE: 硬编码,统一到配置文件中。
username = 'crm_test1'
passwd_admin = 'syswin#'

auth_api = Api(auth_blueprint, errors=user_errors)


class LdapConn(object):
    def __init__(self, server, admin_name, admin_pass, base_dn, scope, flag=None, cn=None):
        self.server = server,
        self.name = admin_name,
        self.passwd = admin_pass,
        self.base_dn = base_dn,
        self.scope = scope,
        self.flag = flag,

    def conn_ldap(self):
        ldap.set_option(ldap.OPT_REFERRALS, 0)
        conn = ldap.initialize(self.server[0])
        conn.simple_bind_s(self.name[0], self.passwd[0])
        return conn

    def verify_user(self, id, password):
        result = []
        con = self.conn_ldap()
        filter_field = "(&(|(cn=*%(input)s*)(sAMAccountName=*%(input)s*))(sAMAccountName=*))" % {'input': id}
        attrs = ['sAMAccountName', 'mail', 'givenName', 'sn', 'department', 'telephoneNumber', 'displayName']
        for i in con.search_s(base_dn, scope, filter_field, None):
            if i[0]:
                d = {}
                for k in i[1]:
                    d[k] = i[1][k][0]
                if 'telephoneNumber' not in d:
                    d['telephoneNumber'] = '(无电话)'
                if 'department' not in d:
                    d['department'] = '(无部门)'
                if 'sn' not in d and 'givenName' not in d:
                    d['givenName'] = d.get('displayName', '')
                if 'sn' not in d:
                    d['sn'] = ''
                if 'givenName' not in d:
                    d['givenName'] = ''
                result.append(d)
                self.cn = d.get('distinguishedName', '')
                print self.cn   #NOTE: 正式提交的代码不出现 print, 如果需要,可以用 logging.debug()
                id = d.get('sAMAccountName', '')
                mail = d.get('mail', '')
                name = d.get('cn', '')
                mobile = d.get('mobile', '')
                department = d.get('department', '')
                field_value = {
                        'id': id,
                        'mail': mail,
                        'name': name,
                        'mobile': mobile,
                        'department': department
                        }
                print d
        print '共找到结果 %s 条' % (len(result))
        for d in result:
            print '%(sAMAccountName)s\t%(mail)s\t%(sn)s%(givenName)s\t%(mobile)s %(department)s' % d
        try:
            if con.simple_bind_s(self.cn, password):
                print 'verify successfully'
                self.flag = 1
            else:
                print 'verify fail'
                self.flag = 0
        except ldap.INVALID_CREDENTIALS, e:
            print e
            self.flag = 0
        return self.flag, field_value

相关文章

  • Web 端代码规范

    目录 1、代码规范概述 2、代码规范流程搭建 3、代码规范细则 1、代码规范概述 良好的代码规范能够提供软件的可读...

  • 代码规范

    代码规范 1. 概述 欢迎使用前端代码规范, 这里借鉴、引用的是京东前端代码规范。 遵循代码规范的目的在于增强团队...

  • iOS 代码规范篇

    iOS 代码规范篇 iOS 代码规范篇

  • iOS(OC)开发之随感

    1.代码规范 规范很重要!规范很重要!规范很重要! 代码规范的重要性之-为什么谷歌要执行严格的代码编写规范http...

  • 前端学习的基本总结

    目录 1.为什要遵守代码规范 2.css代码规范 3.js代码规范与设计模式3.1 js代码规范3.2 设计模式 ...

  • 乐乎项目优化

    编程: 1、代码规范。架构规范、文件组织规范、命名规范、代码逻辑规范、资源存放。 一、使用cocoapod 二、代...

  • 小肤iOS开发代码规范_v1.0

    For Objective-C , 2018.8.2 Ⅰ.前言Ⅱ.命名规范Ⅲ.代码注释规范Ⅳ.代码格式化规范Ⅴ....

  • 代码规范

    代码规范 1. 概述 欢迎使用代码规范, 这个是我借鉴京东前端代码规范,组织的内部规范。旨在增强团队开发协作、提高...

  • PSR-2- Coding Style Guide 编码风格规范

    代码风格规范 本篇规范是 PSR-1 基本代码规范的继承与扩展。 本规范希望通过制定一系列规范化PHP代码的规则,...

  • PM篇

    PM 技术篇1.开发规范命名规范,异常处理规范,日志规范,统一框架,代码commit规范,代码评审规范,统一API...

网友评论

      本文标题:代码规范

      本文链接:https://www.haomeiwen.com/subject/ubgukxtx.html