# -------------------------------*day-011*----------------------------------
"""
函数 为减少重复而出现,简简单单的def
"""
# 通过help可以看到函数的文档信息
# def triangle ():
# help(triangle)
# 形参
# 默认参数 默认形参,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。
# 这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。
# 关键字参数
# def print_stu_info(name,age,height,weight,job):
#
# print("学员姓名:",name)
# print("学员年龄:",age)
# print("学员身高:",height)
# print("学员体重:",weight)
# print("学员工作:",job)
#
#
# print_stu_info("张三",23,"180cm","80kg","销售") # 位置参数
# print_stu_info(name="张三",height="180cm",weight="90kg",job="销售",age=23) # 关键字参数
# print_stu_info("张三",height="180cm",weight="90kg",job="销售",age=23) # 混合参数
# 使用位置参数和关键字参数混合传参的方式。但需要注意,混合传参时关键字参数必须位于所有的位置参数之后。
"""
不定长函数
"""
# 在函数定义中使用`*args`和`**kwargs`传递可变长参数。
# `*args`用作传递非命名键值可变长参数列表(位置参数);
# `**kwargs`用作传递键值可变长参数列表。
# `*args `的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
# `**kwargs`的参数会以字典的形式导入。
# **kwargs
# def print_stu_info(**kwargs):
# print(kwargs)
#
# print_stu_info(name="张三",height=190)
# 注意点:
# 1、参数`arg`、`*args`、`**kwargs`三个参数的位置必须是一定的。必须是`(arg,*args,**kwargs)`这个顺序,否则程序会报错。
# 2、不定长参数的长度可以为零。
# 3、`args` 和 `kwargs`其实只是编程人员约定的变量名字,`args `是 arguments 的缩写,表示位置参数;`kwargs` 是 keyword arguments 的缩写,表示关键字参数。
""" 形参的书写顺序:位置形参 > 默认形参 > 元组不定长形参 > 字典不定长形参
实参的书写顺序:位置实参 > 关键字实参 """
# 全局变量与局部变量
字母 | 英语 | 释义 | 简称 | 作用空间 |
---|
L | Local(function) | 当前函数内的作用域 | 局部作用域 | 局部 |
E | Enclosing Functions Locals | 外部嵌套函数的作用域 | 嵌套作用域 | 局部 |
G | Global(module) | 函数外部所在的命名空间 | 全局作用域 | 全局 |
B | Built In(python) | Python内置模块的命名空间 | 内建作用域 | 内置 |
"""匿名函数"""
# 变量名 = lambda [参数列表] : 表达式或返回值
#
# list = [1, "2", "C", "D", "A"]
# list.sort(key= lambda x: str(x))
# print(list)
#
# list = [1, "2", "C", "D", "A"]
# list.sort() # 会报错,因为列表中的成员类型不一样。