# 条件语句
# if
if condition: | |
statement |
# if - else
if condition: | |
statement1 | |
else: | |
statement2 |
# if - eles if - else
if condition1: | |
statement1 | |
elif condition2: | |
statement2 | |
else: | |
statement3 |
# 循环语句
# while
while condition: | |
statement |
# for
for 循环无法定义循环条件,只能从 序列 中取出数据处理
for i in sequence: | |
statement |
# range
range 语句:产生一个序列
range(num)
: 从 0 开始、到 num 结束(不包含 num 本身)range(num1, num2)
: 从 num1 开始、到 num2 结束(不包含 num2 本身)range(num1, num2, step)
: 从 num1 开始、到 num2 结束(不包含 num2 本身),步长为 step
# continue
continue: 中断本次循环,直接进入下一次循环
continue 可用于 while 和 for 循环
# break
break: 直接结束循环
break 可用于 while 和 for 循环
# 函数
函数的定义:
def func(parameters): | |
statement | |
return results |
函数必须先定义后使用
# 函数的返回值
如果函数没有 return 语句,将默认返回 None
None 可用于声明无初始内容的变量,并且,None 可用于 if 判断
如果函数有多个返回值,则将多个返回值(用逗号分隔)同时放在一个 return 语句中
例如:
def div(x, y): | |
quotient = x // y | |
remainder = x % y | |
return quotient, remainder |
# 传参方式
# 位置参数
调用函数时根据函数定义的参数位置来传递参数
注意:实参的顺序及个数必须与形参列表保持一致
# 关键字参数
函数调用时通过 “key=value” 形式传递参数
可以让函数更见清晰,同时也消除了参数的顺序需求(关键字参数之间不存在先后顺序)
注意:在调用函数时,如果混用位置参数与关键字参数,必须将位置参数放在关键字参数的前面
# 缺省参数(默认参数)
定义函数时,如果为参数提供默认值,则在调用函数时可以不传递该默认参数的值
在调用函数时,如果为缺省参数传递值则修改默认参数值,否则,使用默认值
注意:无论是定义函数或者调用函数,所有位置参数都必须出现在默认参数之前
# 不定长参数(可变参数)
不定长参数用于不确定实参数量(不传参也可以)的场景
不定长参数的类型:
- 位置传递
- 关键字传递
# 位置不定长
位置不定长传递以 * 号标记一个形式参数,以元组的形式接收传入的实参,形式参数一般命名为 args
例如:
def user_info(*args): | |
print(args) | |
# ('TOM',) | |
user_info('TOM') | |
# ('TOM', 18) | |
user_info('TOM', 18) |
# 关键字不定长
关键字不定长传递以 ** 号标记一个形式参数,以字典的形式接收传入的实参,形式参数一般命名为 kwargs
传递的所有实参均为 "key=value" 形式
例如:
def user_info(**kwargs): | |
print(kwargs) | |
# ('name': 'TOM', 'age': 18, 'id': 198) | |
user_info(name='TOM', age=18, id=198) |
# 函数作为参数传递
函数本身是可以作为参数传入到另一个函数中使用的
将函数作为参数的作用:传入的是计算逻辑,而不是计算数据
# lambda 匿名函数
函数的两种定义方式:
def
关键字可以定义带有名称的函数,该函数可以重复使用lambda
关键字可以定义匿名函数(无名称),该函数只可临时使用一次
匿名函数的定义:
lambda 传入参数: 函数体 |
其中:
lambda
是关键字,表示定义匿名函数- 传入参数表示匿名函数的形式参数(可以传入多个参数)
- 函数体只能写一行,无法写多行代码
例如:
# compute 函数作为参数传入 test_func 函数 | |
def test_func(compute): | |
result = compute(1, 2) | |
print(result) | |
def compute(x, y): | |
return x + y | |
# 通过 def 定义 compute 函数并传入 | |
test_func(compute) # 结果:3 | |
# 通过 lambda 关键字定义匿名函数并传入 | |
test_func(lambda x, y: x + y) # 结果:3 |
# 局部变量与全局变量
局部变量:定义在函数体内部的变量,只在函数体内部生效
全局变量:在函数体内、外都能生效的变量
在函数内无法修改全局变量
如果尝试在函数内部修改全局变量,实际上是定义了一个与全局变量同名的局部变量
使用 global 关键字,可以在函数内部声明变量为全局变量
参考: