argparse

总结 90 条写 Python 程序的建议 用“强迫症”维持代码质量

筅森魡賤 提交于 2020-08-15 17:39:39
阅读本文大概需要 3 分钟。 ” 本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我删除。 自己写 Python 也有四五年了,一直是用自己的“强迫症”在维持自己代码的质量。都有去看 Google 的 Python 代码规范,对这几年的工作经验,做个简单的笔记,如果你也在学 Python,准备要学习 Python,希望这篇文章对你有用。 1. 首先 建议1、理解 Pythonic 概念—-详见 Python 中的《Python之禅》 建议2、编写 Pythonic 代码 (1)避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过长变量名等。有时候长的变量名会使代码更加具有可读性。 (2)深入学习 Python 相关知识,比如语言特性、库特性等,比如Python演变过程等。深入学习一两个业内公认的 Pythonic 的代码库,比如Flask等。 建议3:理解 Python 与 C 的不同之处,比如缩进与 {},单引号双引号,三元操作符?, Switch-Case 语句等。 建议4:在代码中适当添加注释 建议5:适当添加空行使代码布局更加合理 建议6:编写函数的 4 个原则 (1)函数设计要尽量短小,嵌套层次不宜过深 (2)函数声明应该做到合理、简单、易用 (3)函数参数设计应该考虑向下兼容 (4)一个函数只做一件事,尽量保证函数粒度的一致性 建议7

编写高质量代码 改善 Python 程序的 91 个建议

雨燕双飞 提交于 2020-08-10 22:42:42
本文内容全部由 Python 编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化 8 个方面深入探讨了编写高质量 Python 代码的技巧与禁忌,一共总结出 91 条宝贵的建议。每条建议对应 Python 程序员可能会遇到的一个问题。 建议1:理解Pythonic概念 建议2:编写Pythonic代码 建议3:理解Python与C语言的不同之处 建议4:在代码中适当添加注释 建议5:通过适当添加空行使代码布局更为优雅、合理 建议6:编写函数的4个原则 建议7:将常量集中到一个文件 建议8:利用assert语句来发现问题 建议9:数据交换值的时候不推荐使用中间变量 建议10:充分利用Lazy evaluation的特性 建议11:理解枚举替代实现的缺陷 建议12:不推荐使用type来进行类型检查 建议13:尽量转换为浮点类型后再做除法 建议14:警惕eval()的安全漏洞 建议15:使用enumerate()获取序列迭代的索引和值 建议16:分清=与is的适用场景 建议17:考虑兼容性,尽可能使用Unicode 建议18:构建合理的包层次来管理module 建议19:有节制地使用from…import语句 建议20:优先使用absolute import来导入模块 建议21:i+=1 不等于 ++i 建议22:使用with自动关闭资源 建议23

Argparser returns “--mode=client --port=52085” and crashes

大憨熊 提交于 2020-08-10 19:16:27
问题 Whenever I use parser.parse_args() , the kernel crashes. For instance: import argparse import numpy as np parser = argparse.ArgumentParser() parser.add_argument("--return_counts", type=bool, default=True) opt = parser.parse_args() arr = np.random.randint(0, 10, 100) It gives this error: usage: pydevconsole.py [-h] [--return_counts RETURN_COUNTS] pydevconsole.py: error: unrecognized arguments: --mode=client --port=52085 But, if I use parser.parse_known_args() , it works. import argparse import

Python2调用Salt API

有些话、适合烂在心里 提交于 2020-08-10 06:46:13
# !/usr/bin/env python # coding=utf-8 # For Python2 import urllib,urllib2,json,sys,importlib,argparse reload(sys) sys.setdefaultencoding( ' utf-8 ' ) class saltAPI(): def __init__ (self): self.url = ' http://10.10.2.11:8000 ' self.data = { ' username ' : ' saltapi ' , ' password ' : ' saltapi ' , ' eauth ' : ' pam ' } self.headers = { ' User-Agent ' : ' Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 ' } self.token = self.get_token() self.headers[ ' X-Auth-Token ' ] = self.token # self.headers['Accept'] = 'application/x-yaml' #

使用zabbix监控oracle数据库

血红的双手。 提交于 2020-08-05 04:36:51
一、概述 zabbix是一款非常强大,同时也是应用最为广泛的开源监控软件,本文将给大家介绍如何利用zabbix+python监控oracle数据库。 二、环境介绍 以下是我安装的环境,实际部署时并不需要跟我的环境一样。 1. 监控机 Redhat Linux 6.5 + Zabbix server 3.4.10 + Python 2.6.6 (操作系统自带) + Oracle Client 11.2 (x86_64) 2. 被监控机 Oracle 11.2.0.4 三、选择监控方式 zabbix监控的方式主要有以下三种类型 Zabbix agent 在被监控机上面安装zabbix agent,zabbix agent将被监控机采集到的数据发送给zabbix server。这种方式最常用,一般用来采集服务器的cpu、内存等信息。 SNMP 一些网络设备如交换机,上面无法安装zabbix agent,所以只能通过snmp的方式收集监控数据如端口状态,流量等。 External check 在zabbix server上面运行查询脚本,直接查询被监控机上的数据。 此种方式在被监控机上面不需要做任何部署 ,所有查询全部从zabbix server上面发出,所以对zabbix server的性能要求较高,官方不推荐大量使用该方式。对于少量的oracle数据库服务器,可以采用该方式。

(文末送书)巨详细!使用OpenCV和OpenVINO轻松创建深度学习应用

安稳与你 提交于 2020-08-04 12:31:05
点击上方“ 计算机视觉cv ”即可“进入公众号” 重磅干货第一时间送达 本文来自6月份出版的新书 《 OpenCV深度学习应用与性能优化实践 》 ,作者团队也是OpenCV DNN 模块的主要贡献者,是国内唯一的系统介绍OpenCV DNN 推理模块原理和实践的书,文末有福利, 留言赠书 1 本 。 OpenCV 是业界使用最为广泛的计算机视觉库,随着深度学习在计算机视觉领域的广泛应用,OpenCV 自3.3开始加入对深度学习推理的支持,即OpenCV DNN模块。 它支持TensorFlow、Caffe、Torch、DarkNet、ONNX 和 OpenVINO 格式的网络模型,开发者无需考虑模型格式的差异,直接调用DNN模块相关接口即可快速创建深度学习应用。 OpenVINO是英特尔推出的视觉推理加速工具包。OpenCV 3.4.1版本加入了英特尔推理引擎后端(英特尔推理引擎是OpenVINO中的一个组件),为英特尔平台的模型推理进行加速。 本文将以MobileNet-SSD模型为例,展示如何使用OpenCV和OpenVINO快速创建深度学习应用。 在深入代码之前,让我们了解一下OpenVINO工具包以及OpenCV是如何跟OpenVINO交互的。 OpenVINO工具包 2018 年 5 月 Intel 发布了 OpenVINO(Open Visual Inferencing

第23天:Python 标准库概览1

为君一笑 提交于 2020-07-24 01:59:35
by 潮汐 Python 的标准库非常广泛,提供了各种各样的工具。该库包含内置模块(用C编写),可以访问系统功能,例如 Python 程序员无法访问的文件 I / O,以及用 Python 编写的模块,这些模块为许多问题提供标准化解决方案。其中一些模块明确地旨在通过将平台特定的内容抽象为平台中立的 API 来鼓励和增强 Python 程序的可移植性。 Python 的标准库(standard library) 是 Python 的一个组成部分,也是 Python 的利器,它可以让编程事半功倍。 本章节就 Python3 的标准库作一个轮廓概览,后续章节将对每个标准库模块进行详细 讲解 1、操作系统接口 1.1 os 模块简介 os 模块提供了很多与操作系统相关联的函数,这使得程序员们在编程的时候能利用函数便携操作,如果你希望你的程序能够与平台无关的话,运用这个模块中的功能就尤为重要。在使用 os 模块前,需要先 import os 引入模块。以下方法只做介绍,具体的应用可以使用 help(os) 查看帮助文档,最重要的是实际操作。 1.1.1 操作系统相关调用和操作 os.name 获取操作系统平台 os.environ 一个 dictionary 包含环境变量的映射关系 print(os.environ) 输出环境变量值 os.system() 用来运行shell命令 os

argparse: nargs with multiple flags in one dash?

孤者浪人 提交于 2020-07-10 10:25:43
问题 If I try running python test.py -bf with the below code, I get bar=f and foo=foo1 instead of the desired result ( bar=bar1 and foo=foo1 ). How would I achieve the desired result? import argparse ap = argparse.ArgumentParser(description='test') ap.add_argument('--bar', '-b', nargs='?', const='bar1') ap.add_argument('--foo', '-f', nargs='?', const='foo1') args = ap.parse_args() 来源: https://stackoverflow.com/questions/62747802/argparse-nargs-with-multiple-flags-in-one-dash

Using argparse for mandatory argument without prefix

心不动则不痛 提交于 2020-07-06 10:37:04
问题 I'm trying to use argparse module within my python application. My application should be run with single mandatory argument without any prefixes. I could not come up with a way to do it. 回答1: Here is a simple example using argparse to require exactly one integer argument: import argparse parser = argparse.ArgumentParser(description='process an integer') parser.add_argument('integer', metavar='N', type=int, nargs=1, help='an integer') args = parser.parse_args() print(args.integer) Saving this

Run python script with some of the argument that are optional

独自空忆成欢 提交于 2020-07-04 09:17:09
问题 I have gone through the sys documentation, however there is something that is still unclear to me. I have looked for some similar question on stackoverflow, but I haven't find anything useful (clearly any reference is appreciated!). I want to create a script - say foo.py - in which I want pass from 3 to 6 arguments: $ python foo.py arg1 arg2 arg3 The first 3 arguments must be given in any case; the last 3 arguments are used in a function that have default argument values if nothing is passed.