1.代码注释方式
注释代码有以下两种方法:
(1)在一行中,“#”后的语句不被执行,表示被注释。
(2)如果要进行大段的注释,可以使用一组3个单引号(''')或3个双引号(""")将注释内容包围。
单引号和双引号使用上没有本质差别,但使用时要注意区别。
2.用缩进来表示分层
Python语句块使用代码缩进4个空格或者一个Tab键表示分层,但在程序中不要同时使用Tab键和空格来缩进,这会使程序在跨平台时不能正常运行。
一般来说行尾遇到“:”就表示下一行开始缩进。
3.语句断行
一般来说,Python一条语句占一行,在每条语句的结尾处不需要使用“;”
但在Python中也可以使用“;”,表示将两条简单语句写在一行。
如果一条语句较长要分几行来写,可使用“\”来换行。
分号还有一个作用,用在一行语句的末尾,表示对本行语句的结果不打印输出。
4.print()的作用
print()会在输出窗口中显示一些文本或者结果,便于监控、验证和显示数据。
5.在一个字符串中嵌入一个单引号
有以下两种方法:
(1)字符串在单引号中,可以在单引号前加反斜杠(\)嵌入。如I\'m a boy.
(2)字符串在双引号中,可以直接加单引号嵌入。即 ' 和 " 在使用上没有本质差别,但同时使用时要注意区别。
1. 比较运算符
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
is | 地址(id)等于 |
is not | 地址(id)不等于 |
2. 数值运算符
= | 赋值 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
// | 除(整数) |
% | 除(余数) |
-x | 负x |
+x | 正x |
abs(x) | x的绝对值 |
int(x) | x的整数值 |
float(x) | x的浮点数 |
complex(re,im) | 定义复数 |
c.conjugate() | 复数的共轭复数 |
divmod(x,y) | 相当于(x//y,x%y) |
pow(x,y) | x的y次方 |
x ** y | 相当于pow(x,y) |
直接一行一行地执行代码直到程序结束。
判断结构增加了程序中的判断机制。
while 循环条件为真:
执行块
2. for循环
for element in A:
循环块
try:
Normal execution block
except A:
Exception A handle
except B:
Exception B handle
except:
Other exception handle
else: #可无,若有,则必有except x或except 块存在,仅在try后无异常时执行
if no exception,get here
finally:#此语句务必放在最后,并且也是必须执行的语句
print("finally")
正常执行的程序在try下的Normal execution block中执行;在执行过程中,如果发生了异常,则中断当前Normal execution block中执行,跳转到对应的异常处理块except x(A或B)中开始执行。
1. try-except结构
try:
处理代码
except Exception as e:
处理代码发生异常,在这里进行异常处理
2. try-except-finallly结构
finally块必须执行。
3. try-except-else结构
程序进入try语句部分,当try语句部分发生异常则进入except语句部分,若不发生异常则进入else语句部分。
4.try-except-else-finallly结构
def 函数名(参数):
函数体
return 返回值
1. 传统参数传递
(1)无参数传递
def func():
print("这是无参数传递")
调用func(),将打印输出"这是无参数传递"字符串。
(2)固定参数传递
def func(x):
print("传递的参数为: %s"%x)
2. 默认参数传递
给参数赋值时要注意参数的位置,除非标明是赋给哪个参数的。
3. 未知参数个数传递
只需要在参数面前加个*就可以了。
4. 带键参数传递
参数通过键值对的方式进行传递。例:x = 1
带键参数的传递只需要在参数前面加**就可以了。
将函数作为参数传递到另外的函数中执行。
1.函数的递归
函数在函数体中直接或者间接地调用自身的现象。递归要有停止条件。
2. 函数的嵌套
在函数中调用另外的函数。
回调函数:将函数作为系数传递。
闭包:将函数作为返回值返回。闭包可以延长变量的作用时间与作用域。
匿名函数:“一次性”函数,调用一次或几次就不再需要的函数。
yield关键字可以将函数执行的中间结果返回但不结束程序。能达到可迭代的效果。
yield关键字的作用把一个函数变成一个generator(生成器)。
每次循环迭代时,yield会生成一个值并暂停函数的执行,下次迭代时会从上次暂停的地方继续执行。这样就可以逐个打印函数中的数字。
def func(n):
i = 0
while i < n:
yield i
i += 1
for i in func(10):
print(i)
def func(n):
i = 0
while i < n:
print(i)
i += 1
for i in func(10):
print(i)
#报错
"""
TypeError Traceback (most recent call last)
Cell In[5], line 7
4 print(i)
5 i += 1
----> 7 for i in func(10):
8 print(i)
TypeError: 'NoneType' object is not iterable
"""
"""
错误原因:错误是因为函数func没有返回任何值。在Python中,如果一个函数没有明确指定返回值,默认返回None。所以当尝试使用for循环迭代函数func(10)时,会出现TypeError,因为NoneType对象(即None)不可迭代。
"""
1. 列表的定义
在中括号[]中添加列表的相(元素),以半角逗号隔开每个元素,即可定义列表
s = [1,2,3,4,5,6]
要获取列表中的元素,可采用list[index]的方式。
s = [1,2,3,4,5,6]
s[0] #1
s[1:3] #[2,3]
s[-2] #5
2.list的常用函数
函数名 | 作用 |
---|---|
list.append(x) | 将元素x追加到列表尾部 |
list.extend(L) | 将列表L中的所有元素追加到列表尾部形成新列表 |
list.insert(i,x) | 在列表中index为 i 的位置插入x元素 |
list.remove(x) | 将列表中第一个为x的元素移除,若不存在x元素将引发一个异常 |
list.pop(i) | 删除index为 i 的元素,并将删除的元素显示。若不指定 i ,则默认弹出最后一个元素 |
list.clear() | 清空列表 |
list.index(x) | 返回第一个x元素的位置,若不存在x,则报错 |
list.count(x) | 统计列表中x元素的个数 |
list.reverse() | 将列表反向排列 |
list.sort() | 将列表从小到大排序,若需要从大到小排序,则哟昂list.sort(reverse=True)表示 |
list.copy() | 返回列表的副本 |
用小括号()的形式,注意:tuple中的元素一旦确定就不可更改。
#定义一个tuple的两种不同方法
t = (1,2,3)
t #(1,2,3)
y = 1,2,3
y #(1,2,3)
在Python中,如果多个变量用半角逗号隔开,则默认将多个变量按tuple的形式组织起来。
#在Python中两个变量的互换
x,y=1,2
print(x)#1
print(y)#2
x,y=y,x
print(x)#2
print(y)#1
元组与列表的取值方式相同
元组常用函数:
tuple.count(x) #计算x在tuple中出现的次数
tuple.index(x) #计算第一个x元素的位置
大多数程序语言都会提供的数据结构。注意:它不能保存重复的数据,即具有过滤重复数据的功能。
对一个数组或者元组来说,可以使用set函数取出重复的数据。
L = [1,1,2,2,3,3]
SL = set(L)
print(SL)#这里由列表变为集合
注意:set中的元素位置是无序的,因此不能用set[i]这样的方式获取其元素。
s1 = set("abcdefg")
s2 = set("defghijkl")
print(s1)
print(s2)
print(s1-s2)#取出s1中不包含s2的部分
print(s2-s1)
print(s1|s2)#取出s1与s2的并集
print(s1&s2)#取出s1与s2的交集
print(s1^s2)#取出s1与s2的交集但不包括交集部分
print('a'in s1)#判断'a'是否在s1中
又称键值对。可以将二元列表作为元素的列表转换为字典。
d = dict([['a',12],[5,'a4'],['hel','rt']])
print(d)
字典中每一项以半角的逗号隔开,每一项包含key与value,key与value之间用半角的冒号隔开。字典中的每一个元素(键值对)也是无序的。使用index取值。
函数名 | 作用 |
---|---|
dict.copy() | 字典的复制 |
dict.clear() | 字典的清除 |
dict.items() | 获取字典的项列表 |
dict.keys() | 获取字典的key列表 |
dict.values() | 获取字典的value列表 |
dict.pop(x) | 弹出key = x的项 |
操作符或函数 | 意义 |
---|---|
x in S | 如果S中包含x元素,则返回True,否则返回False |
x not in S | 如果S中不包含x元素,则返回True,否则返回False |
S+T | 连接S与T,返回连接后的新集合类 |
S*n或n*S | 将S延长自身n次 |
len(S) | 返回S的长度 |
set或者dict不能直接同类型使用“+”相连,也不能使用“*”连接。
对于list、tuple、set三种数据结构来说,len():求长度;min():求最小值;max():求最大值;sum():求和以上的操作函数都可以使用。
tuple、set、dict都可以使用迭代器迭代iter()、next()
map和filter函数属于内置函数,reduce函数从pyhton3开始转移到了functools模块猴子那个,使用是需要从functools模块导入。
用于遍历序列。对系列中每个元素进行操作,最终获取新的序列。
用于对序列中的元素进行筛选,最终获取符合条件的序列。
用于对序列中所有元素进行累计操作。
一个Class既包含数据,又包含操作数据的方法。
class Student(object):
def __init__(self,name,tell):
self.name = name
self.tell = tell
类是抽象的模板。实例是根据类创建出来的一个个具体的“对象”,每个对象都有相同的方法,但各自数据可能不同。
在Python中,通过class关键字定义类。
创建实例通过类名和()实现的。
类可以自由地给一个实例变量绑定竖向。
class Student(object):
pass
#创建实例
big = Student()
#给实例变量绑定属性
big.name = 'Nice'
注意:特殊方法“__init__”前后分别是双下划线。
__init__方法的第一个参数永远是self,表示创建的实例本身。
__init__方法内部,可以把各种属性绑定到self,self可以指向创建的实例本身。
有了__init__方法,在创建实例是,就不能传入空的参数了,必须,传入与__init__方法匹配的参数,但self不需要传递。
和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例初始self,而且调用时不用传递该参数。
要访问的数据,直接在类内部,没必要通过外面的函数去访问,直接在类的内部定义访问数据的函数。这些封装数据的函数是和类本身关联起来的,称为类的方法。
类可以有公有变量和公有方法,也可有私有变量和私有方法。公有部分的对象可以从外部访问,而私有部分的对象只有在类的内部才可以访问。在普通变量名或者方法名(即公有变量名或者方法名)前加两个“_”,即可称为私有变量或者方法。