当前位置 : 主页 > 网络编程 > 其它编程 >

python编码技巧基础篇

来源:互联网 收集:自由互联 发布时间:2023-07-02
备份一下别人总结的常用技巧1注释写法错误写法##texttexttext正确写法#texttexttext扩展注释写法 错误写法 ##texttexttext 正确写法 # texttexttext 扩展 1注释有单行注释和多行注释。 2单行注释以
备份一下别人总结的常用技巧1注释写法错误写法##texttexttext正确写法#texttexttext扩展注释写法

错误写法

##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

上一篇:好玩的Python项目,简单的机器学习换脸术
下一篇:没有了
网友评论