# 条件语句

# 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 关键字,可以在函数内部声明变量为全局变量

参考: