Python3 简单语法
条件控制
-
If 语句:
if condition_1: statement1 elif condition_2: statement2 else: statement3
-
操作运算符:
< < = > > = = = ! = <\quad<=\quad>\quad>=\quad==\quad!= <<=>>===!=
循环语句
-
while 循环
while condition: statements
用
ctrl+c
退出无限循环 -
while-else 语句
while condition: statements1 else: statements2
-
for 语句
for <variable> in <sequence>: <statements> else: <statements>
这里, < s e q u e n c e > <sequence> <sequence> 可以是一个列表,也可以使用 r a n g e ( ) range() range() 函数。
rang(5) 访问 [ 0 , 5 ) [0,5) [0,5)
rang(a,b) 访问 [ a , b ) [a,b) [a,b)
也可以提供增量 c c c,变成 r a n g ( a , b , c ) rang(a,b,c) rang(a,b,c)
也可以用 r a n g e ( ) range() range() 函数创建一个列表
list(range(5))
-
break 和 continue 语句
break 执行后,不执行 for / while 的 else 语句
-
pass 语句
pass 是空语句,保持程序结构的完整性
迭代器与生成器
-
迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。
迭代器有两个基本的语法:iter() 和 next()
字符串,列表或元组对象都可用于创建迭代器
list = [1,2,3,4] it = iter(list) for x in it: # 法1 print(x) it = iter(list) while True: # 法2 try: print(next(it)) except StopIteration: sys.exit()
-
创建一个迭代器:
把一个类作为一个迭代器需要在类中实现两个方法
__iter__()
与__next__()
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x
-
StopIteration:
异常用于标识迭代的完成,防止出现无限循环的情况
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 if x >= 20: raise StopIteration return x
生成器
-
在 Python 中,使用了 yield 的函数被称为生成器
生成器是一个返回迭代器的函数,只能用于迭代操作,简单理解的话,生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前的运行信息,返回 yield 的值,并在下一次执行 next() 方法时从当前位置继续运行
函数
-
定义函数:
代码块用 d e f def def 关键词开头,后接函数标识符名称和圆括号
传入参数放在圆括号中间
函数内容以冒号起始,缩进
return[exp]
结束函数。不带表达式的return
相当于返回None
def function (args): statements
-
可更改类型(mutable)与不可更改(immutable)对象
strings,tuples,numbers 是不可更改的对象, list,dict 是可更改的对象
不可变类型:
a=5
后再a=10
,实际是新生成了一个 int 值对象 10,再让 a 指向它,5 被丢弃了可变类型:
list=[1,2,3,4]
,修改list[2]=5
,则是直接修改了第三个元素 -
函数的参数传递:
不可变类型:类似 C++ 的值传递,如整数、字符串、元组
可变类型:类似C++的引用传递,如列表、字典
-
可使用的正式参数类型:
必须参数:必须以正确顺序传入的参数,否则会出现语法错误
def func(str): print(str) func() # 不加参数会报错
关键字参数:关键字参数允许函数调用时参数的顺序与声明的不一致
def func(str): print(str) func(str = "hello")
默认参数:不传参数,会使用默认参数
def func(name, age=35): pass func("Alice")
不定长参数:使用
*
修饰,会以元组的形式导入def func(arg1, *vartuple): print(vartuple) func(10,20,30)
若使用
**
,则会以字典的形式导入def func(**vardict): print(vardict) func(a = 1,b = 2)
参数
*
可以单独出现,但星号后的参数必须用关键字传入 -
匿名函数:
使用 lambda 来创建匿名函数
匿名,即不再使用 def 语句这样标准的形式定义一个函数
lambda 只是一个表达式,函数体比 def 简单很多。
语法:
lambda[arg1[,arg2,...argn]]:expression
sum = lambda arg1,arg2: arg1 + arg2 print(sum(10,20))