Python代码规范

前些日子,在学习的时候,看到一份代码的时候,我有点懵,好像是懂一点,但实际完全想不通运行结果是咋来的。我就找我认识的 ‘伪大佬’ -陈老师帮我看看。对话我就不上图,结果是:我(居然)问了这个问题,感觉很羞耻。

个人博客:https://blog.csdn.net/zyooooxie

一次羞耻的请教

上代码:

def two_d_list_sort2(sort_index="0,1,2"): # 动态的根据传入的元素索引进行排序
    list=[ ["1","c++","zyooooxie"],
           ["1","c","test"],
           ["2","java","csdn"],
           ["8","JavaScript","Test"],
           ["4","python","ZYOOOOOXIE"],
           ["5","Perl","CSDN"]
           ]
    key_set=""
    for item in sort_index.split(","):
        key_set+="ele["+item+"]+"
        print(key_set)
    key_set = key_set.rstrip("+")
    print(key_set, type(key_set))

for循环中 key_set+=“ele[”+item+"]+"
我好奇,这是啥用法?双引号没有转义呀!难道是什么神秘用法吗?

实在看不透,我就模仿写,Pycharm并没有提示书写有误,还是想不通。

an = '2s2e2d'
for a in an:
    print('['+a+']')
    

叫陈老师过来说说 ,一个例子,我TM就懂了。

a ="x"
print("1"+a+"2")

不是什么神秘用法。。。
真操蛋,没有空格而已,我这样的菜鸡 想不到啊。
如果是我,我可能会写成下面:

an = '2s2e2d'
for a in an:
    print('[' + a + ']')

因为我平时会尽力书写得规范, 怎么也想不到 会有这样一出,关于这 总结下:

  1. 字符串拼接,我常用的join() Python笔记 【一】
  2. 我一般都会在 + 两边留一个空格的。

PEP 8

官方文档 这是找到的官方文档。

Package and Module Names
Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged.

模块应该是简短的, 都是小写的名称. 如果下划线可以提高可读性, 可以在模块名称中使用下划线。
尽管不鼓励使用下划线, python包应该也有简短的,都是小写的命名。

Class Names
Class names should normally use the CapWords convention.

类名通常应该使用首字母大写的约定
【类名使用驼峰命名风格,首字母大写;私有类加一个下划线开头】
(ps:内置的命名有一个单独的约定)

Global Variable Names
(Let’s hope that these variables are meant for use inside one module only.) The conventions are about the same as those for functions.
全局变量 (希望这些变量仅仅意味着在一个模块中使用.) 这些约定和对于函数的约定是大致相同的.

Function and Variable Names
Function names should be lowercase, with words separated by underscores as necessary to improve readability.
Variable names follow the same convention as function names.

函数名一律小写,多个单词使用下划线
变量名尽量小写,多个单词使用下划线

Function and Method Arguments
Always use self for the first argument to instance methods.
始终把 self 作为实例方法的第一个参数.

Always use cls for the first argument to class methods.
始终把 cls 作为类方法的第一个参数.

Constants
Constants are usually defined on a module level and written in all capital letters with underscores separating words. Examples include MAX_OVERFLOW and TOTAL.

常量通常在模块级定义, 使用一些下划线分隔的单词, 所有的大写字母书写. 例如 MAX_OVERFLOW and TOTAL.
【常量采用全大写,多个单词使用下划线】

某些tag

在这里插入图片描述

简单说:

命名通则:
package: lower_with_under (public)
modules: lower_with_under (public), _lower_with_under (internal)
classes: CapWords (public) _CapWords (internal)
exceptions: CapWords (public)
functions: lower_with_under() (public), _lower_with_under() (internal)
global/class constants: CAPS_WITH_UNDER (public), _CAPS_WITH_UNDER (private)
global/class variables: lower_with_under (public), _lower_with_under (private)
instance variables: lower_with_under (public), _lower_with_under (protected), __lower_with_under (private)
method names: lower_with_under() (public), _lower_with_under() (protected), __lower_with_under() (private)
function/method parameters: lower_with_under
local variables: lower_with_under (public)

某变量 重复使用命名

这一部分我想单独地、特别地说下;

大家都知道,Python 是动态类型语言,这意味着变量并没有固定的类型。

变量zy 可以先是str,过会重新赋值为list,再过会就成了dict;写的时候,顺手一写,感觉没啥不方便的;到了报错查原因的时候,稍微有些麻烦;过些日子,再看,卧槽,这他妈是啥,自己都弄不清咋变的。真糟心!

举个例子:
在这里插入图片描述

断言时,request_data 是字符串,change_p_value() 返回的也是 字符串【但值已改】,json.loads() 改了类型【变成dict】;我感觉不好。

建议:避免对不同类型的对象使用同一个变量名;相关的不同 类型的对象,更建议使用不同命名

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值