与其他语言不同,Python是利用缩进来组织代码的,而不是使用大括号;Python可以不使用分号结尾,也可以使用分号,在一行内将多条语句之间进行分割,如:a = 5; b = 6; c = 7;
1.字符串
在Pyhton中,用引号括起来的都是字符串,其中引号可是单引号,也可以是双引号。对于含有换行的多行字符串,可以使用三个单引号'''my_string'''或者三个双引号"""my_string"""
Python字符串是不可变的,无法修改一个字符串;
1.1使用方法修改字符串的大小写
将每个单词的首字母都改为大写:my_string.title()
将字符串全部改为大写或小写可以分别用:my_string.upper(),my_string.lower()
Python使用 + 来合并字符串
1.2使用制表符或换行符来添加空白
反斜杠\是一种转义符号,要在字符串中写反斜杠需要将其转义:s = '12\\34';print(s); #输出为:12\34
在字符串中添加制表符,可以使用 \t
在字符串中添加换行符,可以使用 \n
1.3删除空白
删除字符串开头的空白:new_string = my_string.lstrip()
删除字符串末尾的空白:new_string = my_string.rstrip()
删除字符串两端的空白:new_string = my_string.strip()
注意:进行删除空白操作后一定要将处理后的字符串赋值给新变量保存,因为删除空白不会保存在原字符串上操作。
1.4使用函数str()避免类型错误
age = 23
在使用 + 进行字符串拼接时会报错,此时应该讲age转换为字符串变量,str(age)。
1.5字符串格式化
字符串拥有一个format方法,可以用来代替字符串中的格式化参数,并产生一个新的字符串:
format方法与%占位符的对比:
2.列表
列表是由一系列元素按照特定顺序排列的数组(其中元素可以是同种类型的也可以是不同类型的)。
元组是不可改变的列表。虽然不能修改元组的元素,但可以个存储元组的变量重新赋值。
2.1在列表中添加元素
在列表末尾添加元素:my_list.append(element)
在列表中插入元素:my_list.insert(index,element) 这种操作将列表中既有的每个元素都右移一个位置
list.append(object) 向列表中添加一个对象object(可以是字符串,列表,元组,字典或者是单个元素)
list.extend(sequence) 把一个序列seq的内容添加到列表中
1 2 3 4 5 |
|
使用append的时候,是将new_list看作一个对象,整体打包添加到my_list
对象中。
1 2 3 4 5 |
|
使用extend的时候,是将new_list看作一个序列,将这个序列和my_list
序列合并,并放在其后面。
2.2在列表中删除元素
直接删除列表中指定位置的元素:del my_list[index]
方法pop()可删除列表指定位置元素,并可以直接使用它:my_element = my_list.pop(index),未指定index时,删除的是列表末尾元素。
根据值删除元素:my_list.remove(element),但方法remove()只能删除第一个指定的值,如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
2.3组织列表
对列表进行永久性排序:my_list().sort(),此时my_list()已经改变,如果想要逆序排列的话可以传递参数reverse=True。
对列表进行临时排序:new_list = my_list.sorted(),此时my_list()并未改变,新列表new_list为排序后的列表,如果想要逆序排列的话可以传递参数reverse=True。
反转列表元素的排列顺序:my_list.reverse(),此方法可以永久性修改列表元素的排列顺序,若想恢复的原来顺序,可再次调用该方法。
反转列表和元组还可以使用:将切片的步长设置为-1。如:my_list[::-1],即可实现反转。
确认列表长度:len(my_list)
2.4创建数值列表
range函数返回一个迭代器,该迭代器生成一个等差整数序列,其可以传入三个参数:起始,终止(不包括),步长(可以为负)
range()可以生成一系列的数字,只传入一个参数N时,默认产生的数字从0到N-1;传入两个参数N,M时,产生从N到M的数,包括N,但不包括M(步长为1,前闭后开);传入三个参数时,第三个参数为步长,可以指定步长的方向,N,M,-,2,即产生从N到M的步长为-2的数(8,6,4,2)。
2.5对数字列表执行简单的统计计算
找出列表中的最小值:min(my_list)
找出列表中的最大值:max(my_list)
求出列表数字总和:sum(my_list)
2.6复制列表
- new_list = my_list[ : ]
注意:在Python中对一个变量赋值时,你就创建了一个指向等号右边对象的引用。new_list = my_list这种方法并不能复制列表,因为这只是相当于给my_list起了个新名字叫new_list,两个变量其实指的是同一列表,并没有创建新的列表。
- list()
3.控制流
使用continue关键字可以跳过continue后面的代码进入下一次循环
终止循环用break,多个循环嵌套时,break关键字只结束最内层的循环,外层的循环会继续运行;
pass是Python中“什么都不做”的语句,或者是作为还没有实现的代码占位符;
3.1 for循环一般用作循环次数已知的任务
for 变量 in range(begin, end) : 前闭后开
for 变量 in my_list:
3.2 while循环一般用作不可预知循环次数的任务
while 条件:
3.3 if、elif和else
一个if语句可以接多个elif代码块和一个else代码块,如果if与所有的elif条件均为False,则执行else代码块,如果某个条件为True,则后面的elif和else代码块则不会执行。
4.类、对象和面向对象编程
类是用来描述具有相同属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法。对象是类的实例,类是可实例化出对象的模具。
面向对象:程序员反复修改优化类,类实例化出对象,对象调用类里的函数执行具体的操作。
使用isinstance函数来检查一个对象是否是特定类型的实例:a = 5; isinstance(a, int); # 返回 True
isinstance接受一个包含类型的元组,可以检查对象的类型是否在元组中的类型中:a = 5;isinstance(a, (int, float)); # 返回 True
4.1类的定义
5.文件操作
5.1文件写操作
import pickle
开:文件变量 = open('文件路径文件名', 'wb')
存:pickle.dump(待写入的变量, 文件变量)
关:文件变量.close()
5.2文件读操作
import pickle
开:文件变量 = open('文件路径文件名', 'rb')
存:pickle.load(待写入的变量, 文件变量)
关:文件变量.close()
53.异常
结束操作或者文件打开异常时需要将文件资源释放回操作系统:
一种简单的操作是使用with语句,使用with语句,文件会在with代码块结束后自动关闭:
6.其他
6.1二元运算符合比较运算
所有可用的二元运算符:
检查两个引用是否指向同一个对象可以使用is/is not关键字
6.2日起和时间
请参考《利用Python进行数据分析》第2.3.2.7小节
6.3三元表达式
value = a if condition else b 如果满足condition条件则将a赋值给value,否则将b赋值给value
7.访问控制
注意:Python中虽然没有访问控制的关键字,例如private、protected等等。但是,在Python编码中,有一些约定来进行访问控制
单下划线、双下划线、头尾双下划线说明:
_foo:单下划线开头表示的是protected类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
__foo:双下划线表示的是私有类型(private)的变量,只能是允许这个类本身进行访问了
__foo__:头尾双下划线定义的是特列方法,类似_init_()之类的
.1、简单地理解Python中的if __name__ == '__main__'
通俗的理解__name__ == '__main__'
:假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明')
;在你自己眼中,你是你自己(__name__ == '__main__')
。
if __name__ == '__main__':
的意思是:当.py文件被直接运行时,if __name__ == '__main__'
之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'
之下的代码块不被运行。
7.2、Python中__new__和__init__区别
- __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,无返回值。
- __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法,有返回值。
即,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。