python基础代码技巧_python编码技巧-基础篇

1)注释写法:

错误写法:

##texttexttext

正确写法:

# texttexttext

扩展:

(1)注释有单行注释和多行注释。

(2)单行注释以#开头,空一格,然后输入注释内容。

(3)多行注释用三个单引号 '''或者三个双引号 """将注释内容括起来。

2)文档字符串写法:

错误写法:

def function():

"say something here!"

pass

def function():

'say something here!'

pass

正确写法:

def function():

"""say something here!

"""

pass

def function():

'''say something here!

'''

pass

扩展:

(1)在函数体的第一行使用一对三个单引号 ''' 或者一对三个双引号 """ 来定义文档字符串。

(2)用于解释文档程序,帮助你的代码更加简单易懂。

(3)可通过function.__doc__方法来获取文档字符串。

3)导入模块格式:

错误格式:

from random import randint

from lib.common.assertUtil import Assert

from lib.base.apiBase import BaseApi

import json

import os

正确格式:

import os

import json

from 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

4)function与funciton间的空行:

错误格式:

def function():

pass

def function():

pass

正确格式:

def function():

pass

def function():

pass

扩展:

(1)pycharm可按option+command+L来自动格式对齐。

5)__init__.py文件:

(1)那么如果目录中存在该文件,该目录就会被识别为 module package ,就可以直接进行导入操作,不然会抛出导入失败相关异常。

(2)当用 import 导入该目录时,会执行 __init__.py 里面的代码,所以可以将初始化代码放入该文件中。

2.提高效率的python编码技巧

1)判断方式:

一般方式:

if value=='123':

return True

else:

return False

快捷方式:

if value=='123':

return True

return False

return True if value=='123' else False

扩展:

(1)判断value是否为真或不为空时,可以直接用if value: 来判断;判断为空或为假时,可以直接用if !value:来判断。

value = []

#判断value为空(即长度为0)

if !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 json

dic = {'1': 1, '2': '2'}

dic_str = json.dumps(dic)

with open('test.json', 'w', encoding='utf-8') as f:

json.dump(dic, f)

反序列化:

import json

dic_str = "{'1': 1, '2': '2'}"

dic = json.loads(dic)

with open('test.json', 'r', encoding='utf-8') as f:

dic = json.load(f)

4)判断内容格式:

judge_str = '123'

judge_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(first='hello', second='world', third=1)

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")

扩展:

(1)with...as用法,当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法,所有要求所求值的对象必须有一个__enter__()方法和一个__exit__()方法。

(2)with...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(a=1, b=2, c=3, d=4)

params_args_kwargs(1, 2, 3, 4, a=1, b=2, c=3, d=4)

扩展:

(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()方法。

10)list排序:

正序:

obj_list = [1, 2, 3, 4, 4, 3]

obj_list.sort()

倒序:

obj_list = [1, 2, 3, 4, 4, 3]

obj_list.sort(reverse=True)

排序翻转:

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__)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值