目录
编程习惯
1. 添加主函数if __name__ == 'main':
2. 使用project_path = os.getcwd()自动获取文件路径,将代码和数据文件夹放在一个project下,可以更轻松的获取文件路径,不必担心代码移植出现的文件路径问题。
3. 设置pycharm 编程模版
4. 可以将自定义的python函数封装成一个类class Solution(object),通过创建对象o = class_name(),对象调用类内创建的函数获得运行结果o.longestPalindrome(s)
5. 轻量级循环
# 列表推导式
[x*x for x in range(10) if x % 3 ==0]
[(x,y) for x in range(3) for y in range(3)]
[b+'+'+g for b in boys for g in girls if b[0] == g[0]]
6. 字符串匹配,返回True or False
re.match(pattern,x) # 正确返回True,错误返回False
7. python利用正则表达式提取指定字符串内容
方法:re.findall,re.finditer
import re
result = re.findall(r'(\w+)=(\d+)', 'set width=20 and height=10')
print(result)
[('width', '20'), ('height', '10')]
代码规范
python中self的作用
- 在python的类中self代表实例本身,具体来说,是该实例的内存地址。
需要注意的是,self不是关键字,换言之,可以用其它的合法变量名替换self,但是,规范和标准建议我们一致使用self。
- 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数”(廖雪峰老师说的)。
- 实例变量有什么作用,或者说,什么时候应该使用self修饰变量比较好?我的总结如下:
当我们想将某个变量绑定给实例时,就在类中,使用self修饰该变量。一般来说,类实例化为不同实例后,为了不同实例的某一变量互不干扰,就将该变量绑定给实例。
具体的使用场景,
1)若需要在类的不同方法中调用同一变量,且属于同一个类的不同实例的该变量互不影响(即排除类属性),则在类中将该变量绑定给实例。
2)需要在类实例化得到实例后,修改、或引用实例的某变量,则在类中将该变量绑定给实例。
易混淆之处
1. list[a:b]分片取子列表和range(10)都取不到最后一个数的索引值
比如,list[3:6]取不到6这个索引值;range(10)取不到10这个索引值
--> python2 range()返回的是列表;python3 range()返回的是一个可迭代的对象。
==?为什么编程语言不能从1开始呢,为什么不能从头取到尾呢?
2. 换行符--'\n',TAB制表符--'\t',是用转义字符'\'(反斜杠)而不是'/'。