目录:
- python 介绍
- 制表符
- 面向对象
- ✍️规范
- 模块
- pass
- re模块中match和search的区别
- type/dir/help
- 异常处理
- range
- 矩阵
- 数据结构
- dict,{ }
- list,[ ]
- jupyter
- 函数式编程
- λ 表达式
- 函数理解,def()
- 可选参数
- 变量作用域
- 字符串操作
format { }
分割 split()
join 添加新字符
..
Python介绍
Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言
设计者开发时的总的指导思想是:对于一个特定的问题,只要有一种最好的方法来解决就该好了
Python 的设计哲学是优雅、明确、简单
Python 的执行:
制表符[1]
以乘法口诀为例:
for i in range(1,10):
for j in range(1,i+1):
print('{1}*{0}={2}'.format(i,j,i*j),end='t')
print()
for i in range(1,10):
for k in range(1,i):
print('.',end = 't')
for j in range(i,10):
print('{}*{}={}'.format(i,j,i*j),end = 't')
print()
参考:Python ——遍历列表(打印九九乘法表)
%:余数
// :得到商
面向对象
简单的说,类是对象的蓝图和模板,而对象是类的实例。这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的东西。在面向对象编程的世界中,一切皆为对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类(型)。
当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定义出一个叫做“类”的东西。
静态特征 + 动态特征 = 类
创建类和对象:
class Student(object):
def __init__(self, name, age):
self.name = name
self.age = age
def study(self, course_name):
print('{}正在学习{}....'.format(self.name, course_name))
def watch_movie(self):
if self.age < 18:
print('{}正在看《熊出没》'.format(self.name))
else:
print('{}正在看《泰坦尼克号》'.format(self.name))
def main():
stu1 = Student('小明', 23)
stu1.study('python课程')
stu1.watch_movie()
if __name__ == '__main__':
main()
小明正在学习python课程....
小明正在看《泰坦尼克号》
关于私有化参见:
咪咪怪:python小课堂21 - 面向对象(三)zhuanlan.zhihu.compython 里面的单下划线与双下划线的区别(私有和保护)https://blog.csdn.net/liangpz521/article/details/8089723
面向对象的三大支柱:封装、继承和多态
关于封装:
我自己对封装的理解是“隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口”。我们在类中定义的方法其实就是把数据和对数据的操作封装起来了,在我们创建了对象之后,只需要给对象发送一个消息(调用方法)就可以执行方法中的代码,也就是说我们只需要知道方法的名字和传入的参数(方法的外部视图),而不需要知道方法内部的实现细节(方法的内部视图)。
书写规范
文档字符串
为了阅读方便,方便函数调用者使用。
文档字符串用于解释函数的功能,记录所需的参数类型。
模块[2]
- pass的作用
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
- re模块中match和search的区别
match() 函数只在字符串的开始位置尝试匹配正则表达式,也就是只报告从位置 0 开始的匹配情况,而 search() 函数是扫描整个字符串来查找匹配。
如果想要搜索整个字符串来寻找匹配,应当用 search()。
- type得到调用对象的类型
dir 得到对象的所有属性和方法
help()则查看具体的方法说明,q键退出
help (np.BUFSIZE):
- 异常处理(exception handling)
使用 try...except...
如果你认为代码可能会报 告异常,可使用关键字 try 和 except 来捕获。
- range
range(101)
可以产生一个0到100的整数序列。range(1, 100)
可以产生一个1到99的整数序列。range(1, 100, 2)
可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量。
Python矩阵表示
- 一种是matrix类
- 二维array
主要区别在于默认乘法的不同,array是对应相乘,matrix则与矩阵乘法相同
在实际中,大多数情况下,使用array方法
-------------
sum(),axis解读
axis=1时,阵列内部相加
-------------
np reshape()解读:
在对数据集进行操作时,经常可看到np.array([....]).reshape(),什么意思呢?
看 :
可以看出,reshape(3,2)表示将数据改写为3行2列形式;reshape(-1,1)则表示改写为1列,-1可以不用管
python 基本数据结构(容器):
dict,{ }
list,列表,[ ],可以将任何元素放在list里
** pop 方法移除列表中的最后一个元素
** filter(function, iterable)
参数
function -- 判断函数。
iterable -- 可迭代对象。
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)
============================
[1, 3, 5, 7, 9]
**列表删除指定元素
a = [1, 2, 0, 3, 4, 0, 5, 0, 6]
for b in a:
if b == 0:
a.remove(b)
print(a)
[1, 2, 3, 4, 5, 6]
** append()添加元素:
array = [1,6,8,9]
array.append(4) #尾部插入
print(array)
# # 中间插入
# array.insert(2,0)
# print(array)
for i in range(3):
array.insert(2,0)
print(array)
ar = [2,400,'qew']
ar+array+ar
============================
[1, 6, 8, 9, 4]
[1, 6, 0, 0, 0, 8, 9, 4]
[2, 400, 'qew', 1, 6, 0, 0, 0, 8, 9, 4, 2, 400, 'qew']
tuple与list类似,( ),只是不能被修改
** enumerate() 函数,可以同时获取索引:
** 三种方法实现列表中元素大写
在方法1中,由于要遍历列表元素,同时要增大遍历的序号,故额外增加了i=0这一项
jupyter:
函数式编程:
- λ 表达式
函数理解
- 可选参数:
函数定义里面,必选参数必须位于可选参 数之前。
- 变量作用域
变量有一个很重要的属性,作用域(scope)。定义变量时,其作用域指的是哪部分 程序可以对其进行读写。读取一个变量意味着获取它的值,写变量意味着修改它的值。 变量的作用域由其定义在程序中所处的位置决定。
可以在程序的任何地方对全局变量进行写操作,但是在局部作用域中需稍加注意: 必须明确使用 global 关键字,并在其后写上希望修改的变量。Python 要求这样做,是 为了确保在函数内部定义变量 x 时,不会意外变更之前在函数外部定义的变量的值。在函数内部对全局变量进行写操作的示例如下:
字符串操作
- format
如果字符串跨越一行以上,可以使用三引号。如上
x = float(input('x = '))
if x>1:
y =3*x-5
elif x >= -1:
y = x+2
else:
y=5
print( 'f({:.3f}) = {:.0f} '.format(x, y)) #推荐这种
print('f(%.2f) = %.2f' % (x, y))
- 字符串分割:split()
输入‘http://www.baidu.com’,输出:'com.baidu.www'
address = 'www.baidu.com' # >>'com.baidu.www'
add_new = address.split('.')
add_new[-1]+'.'+add_new[1]+'.'+add_new[0]
- join()方法添加新字符
可使用 strip 方法去除字符串开头和末尾的空白字符:(注意,strip方法并不能修改原先的变量内容)
替换
参考
- ^Python转义字符 https://www.runoob.com/python/python-strings.html
- ^python模块详解 https://zhuanlan.zhihu.com/p/33913131