如何掌握Python编程中的基础长尾技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1597个文字,预计阅读时间需要7分钟。
备份一下别人总结的常用技巧如下:
1. 注释写法:注意格式规范,逻辑清晰,避免过多细节。
2.变量命名:遵循命名规范,提高代码可读性。
3.代码风格:保持代码简洁,避免冗余。
4.函数封装:将重复代码封装成函数,提高代码复用性。
5.异常处理:合理处理异常,提高代码健壮性。
6.模块化设计:将功能模块化,便于维护和扩展。
7.数据结构:合理选择数据结构,提高代码效率。
8.算法优化:根据需求选择合适的算法,提高代码性能。
9.测试用例:编写全面的测试用例,确保代码质量。
10.版本控制:使用版本控制工具,方便代码管理和协作。
备份一下别人总结的常用技巧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__)))
转:www.cnblogs.com/forfreewill/articles/11023385.html
本文共计1597个文字,预计阅读时间需要7分钟。
备份一下别人总结的常用技巧如下:
1. 注释写法:注意格式规范,逻辑清晰,避免过多细节。
2.变量命名:遵循命名规范,提高代码可读性。
3.代码风格:保持代码简洁,避免冗余。
4.函数封装:将重复代码封装成函数,提高代码复用性。
5.异常处理:合理处理异常,提高代码健壮性。
6.模块化设计:将功能模块化,便于维护和扩展。
7.数据结构:合理选择数据结构,提高代码效率。
8.算法优化:根据需求选择合适的算法,提高代码性能。
9.测试用例:编写全面的测试用例,确保代码质量。
10.版本控制:使用版本控制工具,方便代码管理和协作。
备份一下别人总结的常用技巧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__)))
转:www.cnblogs.com/forfreewill/articles/11023385.html

