错误写法
##texttexttext
正确写法
# texttexttext
扩展
1注释有单行注释和多行注释。
2单行注释以#开头空一格然后输入注释内容。
3多行注释用三个单引号 或者三个双引号 """ 将注释内容括起来。
2文档字符串写法
错误写法
def function():"say something here"passdef function(): say something here pass
正确写法
def function():"""say something here """passdef function(): say something here pass
扩展
1在函数体的第一行使用一对三个单引号 或者一对三个双引号 """ 来定义文档字符串。
2用于解释文档程序帮助你的代码更加简单易懂。
3可通过function.__doc__方法来获取文档字符串。
3导入模块格式
错误格式
from random import randintfrom lib.common.assertUtil import Assert from lib.base.apiBase import BaseApi import json import os
正确格式
import osimport jsonfrom random import randint from lib.base.apiBase import BaseApi from lib.common.assertUtil import Assert
扩展
1直接import的模块写在上面通过from/import的模块写在下面中间空一行。
2假如import的模块名过长可以通过as来简化导入的模块名称如
from lib.common.assertUtil import Assert as ast
4function与funciton间的空行
错误格式
def function():passdef function():pass
正确格式
def function():passdef function():pass
扩展
1pycharm可按optioncommandL来自动格式对齐。
5__init__.py文件:
1那么如果目录中存在该文件该目录就会被识别为 module package 就可以直接进行导入操作不然会抛出导入失败相关异常。
2当用 import 导入该目录时会执行 __init__.py 里面的代码所以可以将初始化代码放入该文件中。
2.提高效率的python编码技巧
1判断方式
一般方式
if value123:return True else: return False
快捷方式
if value123:return True return False
return True if value123 else False
扩展
1判断value是否为真或不为空时可以直接用if value: 来判断判断为空或为假时可以直接用if !value:来判断。
value []#判断value为空即长度为0if !value: #判断value不为空即长度不为0 if value:
2遍历方式
一般方式
values [1, 2, 3]value_list [] for value in values: value_list.append(value 1)
快捷方式
values [1, 2, 3]value_list [value 1 for value in values]
扩展
1以上列子可用map()函数来实现map() 会根据提供的函数对指定序列做映射。
def add_one(value):return value 1 values [1, 2, 3] value_list map(add_one, values) 注意Python 2.x 返回列表。Python 3.x 返回迭代器。
3序列化与反序列化
序列化
import jsondic {1: 1, 2: 2} dic_str json.dumps(dic) with open(test.json, w, encodingutf-8) as f: json.dump(dic, f)
反序列化
import jsondic_str "{1: 1, 2: 2}"dic json.loads(dic) with open(test.json, r, encodingutf-8) as f: dic json.load(f)
4判断内容格式
judge_str 123judge_int 123 judge_list [1, 2] judge_dict {1: 1, 2: 2} isinstance(judge_str, str) isinstance(judge_int, int) isinstance(judge_list, list) isinstance(judge_dict, dict)
返回值是boolean型为真是返回True为假时返回False。
5字符串拼接
obj_str hello world str(1) obj_str {0} {1}{2}.format(hello, world, 1) obj_str {first} {second}{third}.format(firsthello, secondworld, third1) obj_str %s %s%s % (hello, world, 1)
6获取文件内容或修改文件内容
一般方式
f open(test.txt, r)print(f.read()) f.close() f open(test.txt, w) f.write("hello") f.close()
快捷方式
with open(test.txt, r) as f: print(f.read()) with open(test.txt, w) as f: f.write("hello")
扩展
1with...as用法当with后面的代码块全部被执行完之后将调用前面返回对象的__exit__()方法所有要求所求值的对象必须有一个__enter__()方法和一个__exit__()方法。
2with...as不仅可用在文件读取也可用在创建进程/线程等等更多场景。
7方法入参过多或不确定时
def params(a,b,c,d) sum a b c d def params_args(*args) sum 0 for value in args: sum value def params_kwargs(**kwargs): sum kwargs.get(a) kwargs.get(b) kwargs.get(c) kwargs.get(d) def params_args_kwargs(*args, **kwargs): sum 0 for value in args: sum value sum kwargs.get(a) kwargs.get(b) kwargs.get(c) kwargs.get(d) if __name__ __main__: params(1, 2, 3, 4) params_args(1, 2, 3, 4) params_kwargs(a1, b2, c3, d4) params_args_kwargs(1, 2, 3, 4, a1, b2, c3, d4)
扩展
1*args可以传入列表元组**kwargs可以传入字典作为参数。
8字典操作
一般方式
obj_dict {a: 1, b: 2} #查询 a obj_dict[a] a obj_dict.get(a) #当执行obj_dict[c]时查询的key不存在时程序会抛异常并且终止程序。 #执行obj_dict.get(c)时查询的key不存在时会返回None程序不会抛异常。 #修改 obj_dict[a] 2 obj_dict.update({a: 2}) #添加 obj_dict[c] 3 obj_dict.update({c: 3}) #删除 obj_dict.pop(a) #返回删除key对应的value obj_dict.popitem() #删除排序最后一条数据返回该条数据的key-value元组形式 #获取所有的key obj_dict.keys() #获取所有的value obj_dict.values() #字典转为列表 list(obj_dict.items() #遍历字典中的key和value for key, value in obj_dict.items(): print(key, value) #合并两个字典 obj_dict_b {c: 3} obj_dict.update(obj_dict_b) obj_dict_copy obj_dict.copy()
9过滤list中的重复值
一般方式
obj_list [1, 2, 3, 4, 4, 3] obj_list_B [] for i in obj_list: if i not in obj_list_B: obj_list_B.append(i)
快捷方式
obj_list [1, 2, 3, 4, 4, 3] obj_list_B list(set(obj_list))
扩展
1当obj_list中元素为str或int时才可以使用set()方法。
10list排序
正序
obj_list [1, 2, 3, 4, 4, 3] obj_list.sort()
倒序
obj_list [1, 2, 3, 4, 4, 3] obj_list.sort(reverseTrue)
排序翻转
obj_list [1, 2, 3, 4, 4, 3] obj_list.reverse()
扩展
1上面的方法都会直接修改obj_list的值返回值是None假如不想修改obj_list的值建议以下方式
obj_list [1, 2, 3, 4, 4, 3] obj_list_B obj_list.copy() obj_list_B.sort()
11路径相关操作
import os#当前文件绝对路径path os.path.abspath(__file__) #当前文件所处文件夹目录路径 path os.path.dirname(os.path.abspath(__file__)) #同级目录下获取别的文件路径 path os.path.join(os.path.dirname(os.path.abspath(__file__)), test.txt) #判断该路径是否存在 os.path.exists(os.path.join(os.path.dirname(os.path.abspath(__file__)), test.txt)) #判断该路径是否是目录 os.path.isdir(os.path.dirname(os.path.abspath(__file__)))
转:https://www.cnblogs.com/forfreewill/articles/11023385.html