背景
主要是用来记录我在学习python过程中学习到他人的一些建议和自己的经验,有些内容可能并不妥,如果有请及时通知我纠正,谢谢。qq:472668561
我使用的python版本是3.7.4
。
内容
-
if语句使用中,如果条件确定,最好使用条件确定的表达式elif而不是else。
-
多行字典使用时,建议最后再增加一个逗号。
-
字典值去重时,在循环中使用set()。
-
每个函数应只负责一项工作。
-
被函数操作过的列表都是永久改变,如果要避免可以使用复制函数。
-
导入函数与导入模块所有函数不需要使用句点式表示法,只有导入模块时才需要。
-
制定函数
描述性名称,使用小写和下划线。 简要阐述功能的注释,应紧跟在函数定义后面,并采用文档字符串格式(书上是这样写,但我想写在前面,这样不会因为删除整个函数而忘记这个要写的功能)。 给形参制定默认值时,等号两边不要有空格。 如果参数太多,在输入左括号后按回车键。 使用两个空格将相邻函数隔开。
-
类的首字母要大写。
-
函数在类中称为方法,方法中通过实例访问的变量称为属性。
-
类中的每个属性都要有初始值。
-
子类创建注意事项:
创建子类时,python首先要给父类所有属性赋值。 创建子类时,父类必须包含在当前文件中,且在子类前面。
-
方法名与属性名千万不可一致。
-
python2.7中,类都要继承object,且在子类的super()函数需要传入两个实参,子类名和对象self。
-
将实例用作属性时,用作属性的类要放在调用该类的上方,这是因为python由上而下执行,不然会报未定义错误
-
当要导入的类或模块文件与要使用它的模块重名时,使用它的模块的文件名应该更具体。
-
需要从一个模块导入很多类时,最好导入整个模块。
-
导入整个模块的好处时,类的使用不会跟本文件内类重名。
-
继承导入模块时,后面的括号要用句点式,将实例用作属性也一样。
-
python读取文件文件时,会将所有的文本都解读为字符串,包括数字。
-
用户输入的异常抛出应该写在处理输入的地方而不是用户输入的地方。
-
在写程序输出拼接时,可以用’,‘代替’+‘,这样的好处是避免类型不同的拼接报错,但是这样不再可以进行类型转换。
-
要判断一个变量里面的值是不是None的时候,可以使用“is”这个关键字,也可以使用“==”。一般建议使用“is”关键字,因为速度会比“==”稍微快一些。
-
对象有“属性”和“方法”。“属性”就是描述这个对象的各种标签,“方法”就是这个对象可以做的动作。例如,现在看这本书的你,你就是一个对象,你的名字、身高、体重、胸围……都是你的属性;你可以读书,可以做饭,可以上厕所,可以走路等,这里的“读书”“做饭”“上厕所”“走路”都是你的方法。对象可以只有属性没有方法,也可以只有方法没有属性。
-
一般来说,属性是名词,方法是动词。在类的外面,把类初始化为一个对象以后,可以使用“对象.属性”的格式来获得这个对象的属性;可以使用“对象.方法名(参数)”的格式来执行对象的方法,这很像是调用一个函数。其实可以理解为,方法就是类里面的函数。
-
点号表示任意非换行符的字符,星号表示匹配它前面的字符0次或者任意多次。所以“.*”表示匹配一串任意长度的字符串任意次。这个时候必须在“.*”的前后加其他的符号来限定范围,否则得到的结果就是原来的整个字符串。如果在“.*”的后面加一个问号,变成“.*? ”,那么可以得到什么样的结果呢?问号表示匹配它前面的符号0次或者1次。于是“.*?”的意思就是匹配一个能满足要求的最短字符串。
-
使用re.compile()的时候,程序内部调用的是_compile()方法;当使用re.finall()的时候,在模块内部自动先调用了_compile()方法,再调用findall()方法。re.findall()自带re.compile()的功能,所以没有必要使用re.compile()。
-
Linux和mac os不能直接使用“~”表示“home目录”,因为Python不认识“~”这个符号。如果非要使用这个符号,需要使用Python的“os”模块,代码如下:[插图]这样,Python就会将这种风格的路径转化为Python能认识的绝对路径。
-
with打开文件时,里面的参数
encoding
只有python3有,python2使用这个参数会报错。 -
文件是在Windows中创建的,并且使用UTF-8打开文件出现了乱码,可以把编码格式改为GBK。