自定义函数
语法:
def 函数名(参数列表):
函数体(功能代码块)
函数名不能和关键字重名,函数名后的小括号内用于定义参数,不可省略
return [表达式] 用来结束函数,将表达式的值返回给调用者,也可省略。
# 当执行到return 语句时,程序返回到调用程序处,执行后面的代码
# 不会执行该函数中return 句后面的代码
不定长参数:
*args :1.可以给函数提供可变长度的参数
2.args 元组传值:多给的值,都会给到 *args 参数里,以元组形式
**kwargs: 将其存放在字典中,需要使用 **来实现(注意!**args时参数规范为粉色部分所示)
反之,* 和 ** 可以将元祖和字典中的元素传递给形参
间接调用函数
1、将函数名赋值给一个变量名,再通过变量名+形参列表的方式进行间接调用
2、 一个函数作为另一个函数的参数
3、函数名作为其它数据类型的元素
匿名函数--lambda
lambda函数:首要用途是指点短小的回调函数
1、可以有多个参数,但只能有一个表达式
2、lambda 表达式声明的匿名函数,也可以作为自己定义函数的实参
3、带判断的lambda
4、lambda 表达式声明的匿名函数,也可以作为内建函数的实参
5、lambda 表达式声明的匿名函数,也可以作为列表或字典的元素
内建函数
1、eval()函数:将 字符串 当成 有效的表达式 来求值,并返回计算结果
用于对动态表达式求值,语法格式如下:
eval(source,globals = None,locals = None)
source 是动态表达式的字符串
globals和locals是求值时使用的上下文环境的全局变量和局部变量
num = 2
str = input("请输入包含num=2的表达式:")
print(str,"结果为:",eval(str))
2、exec()函数:用于动态语句的执行,语法格式如下:
exec(source,globals = None,locals = None)
str1 = input("请输入你要执行的Python语句:")
exec()
3、compile()函数: 用于将一个 字符串 编译为 字节代码 ,语法格式如下:
compile(source,filename,mode,flags=0,dont_inherit=False,optimize=-1)
source为代码语句的字符串
filename为代码文件名称,若不是从文件读取代码,则传递一些可辨认的值
mode为指定编译代码的种类,其值可为'exec'、'eval'、'single'
其余参数使用默认值
str1 = input("请输入你要执行的Python语句:")
res = compile(str1,'','exec') # 将 字符串 转换为 字节代码对象
exec(res)
4、map()函数: 映射函数 语法:map(function,iterable)
可以对迭代对象中的每一个元素进行映射,分别去执行function
函数说明:对列表和其它序列中的每个元素进行同一个操作并将其结果集合起来
list1 = [1, 2, 3, 4]
func = lambda x: x + 10
list2 = list(map(func, list1))
print(list2)
5、filter()函数: 对指定序列进行过滤操作。函数语法格式:filter(function, sequence)
filter()函数返回值为迭代器对象
对列表list中的每个元素调用func函数
并返回使得func函数返回值为True的元素组成的可迭代对象
mess = ["信思智学", "chinazxjy.cn", "www."]
func = lambda x: x.isalnum()
list = list(filter(func,mess))
print(list)
6、zip()函数: 用于将一系列可迭代的对象作为参数
将对象中应该的元素打包成一个个元组,然后返回由这些元组组成的迭代对象
A:
list1, list2 = [1, 2, 3], ["信思智学", "人工智能", "用心做教育"]
list3 = list(zip(list1, list2))
print(list3)
B:传入参数的长度不同时,zip()函数以最短序列长度为准进行截取获得元组
list1, list2, list3 = [1, 2, 3, 4], ["信思智学", {"人工智能", "用心做"}], [3.4, 5]
list4 = list(zip(list1, list2, list3))
print(list4)
C:zip()函数使用 * 运算符:使用 * 运算符相当于执行相反的操作
list1, list2 = [1, 2, 3], ["信思智学", "人工智能", "用心做教育"]
zipped = zip(list1, list2)
list3 = zip(*zipped)
print(list(list3))