(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
目录
一、函数
1.函数的定义
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def printf(): print("hello world") printf() printf()
hello world
hello world
2.函数的参数
• 正常情况下定义的参数需要按顺序传对应的参数;
• 参数可以设置默认值,调用时不用传这些参数的值
• 关键字参数,可以用 name=value 的形式调用函数,并且顺序可以换;
• 传不可变对象 string 、 tuple , 数据不能被改变;传可变对象 list 、 dict 、 set , 数据可以被改变
def introduct(name): print(f"大家好,我是{name}") introduct("xiaoming")
大家好,我是xiaoming
3.函数的返回值
• 可以用return返回函数的计算结果
• 可以用逗号分隔返回多个值,调用时拆包获取各值
#函数的返回 def add(x,y): x = int(x) y = int(y) return x+y result = add(3,5) print(result) print((add("3","5")))
8
8
函数可以具有一个或者一组值,将逻辑“封装”在函数中,会简化整个程序
#函数返回一个字典 students={ "xiaozhang":{"id":101,"grade":88}, "xiaowang":{"id":102,"grade":77} } def get_student(name): if name in students: return students[name] else: return None print(get_student("xiaozhang")) print(get_student("xiaoxiao"))
{'id': 101, 'grade': 88}
None
4.将函数储存在模块
在实际开发中,代码都会放在不同的文件中
模块module是文件,以.py为后缀名,包含类、函数、语句
举例:
新建一个computer.py文件,在里面编写add、sub、mul、div四个函数,那么computer就是一个模块,里面的四个函数都会被其他文件使用
新建另一个main.py,用如下方法可以引用computer.py代码
1.import computer:然后用computer.add等调用函数
2.import computer as cp:给模块起别名,然后用cp.add调用函数
3.from computer import add,sub:然后用add、sub函数直接使用
4.from computer import *:可以直接使用add、sub等所有函数
# @File : computer.py def add(x,y): return x+y def sub(x,y): return x-y def mul(x,y): return x*y def div(x,y): return x/y
#调用模块 import computer print(computer.add(3,5)) from computer import add,sub,mul,div print(add(3,5))
8
8
二、lambda函数和列表的排序
1.lambda函数
lambda函数:
• 称为匿名函数,函数的定义直接使用,不用起名字
• 又称为一句话函数、逻辑简单到一行代码就能表达逻辑
• 用于一些简单的、不会重复多次调用的情景
定义形式:
1.lambda 参数:操作(参数)
2.定义举例:sum = lambda x,y: x+y
3.调用举例:sum(1,2)
使用场景:
• 既然逻辑能够在一行完成,那直接写逻辑即可,为什么要写成一个函数?
• 因为有些 python 的有些高级函数,比如 list.sort 、 sorted 、 map 、 reduce 等,它们的调用需要传一个函数作为参数传入
2.列表的排序
• 列表排序方法 1 :
list.sort(key=None, reverse=False)
• 列表排序方法 2 :
new_list = sorted(iterable, key=None, reverse=False)
• 其中的 key 参数,可以传入一个函数,指定排序的元素,对于这个函数,用 lambda 可以简化代码
举例:对学生数据按成绩排序
sgrades=[(1001,89),(1002,77),(1003,99)]
• 不可行的方法: sgrades.sort () ,只会按照第一项排序
• 方法 1 : sgrade s .sort( ke y =lambda x:x [1])
方法2 : new_list = sorted( sgrades , key=lambda x:x [1], reverse=True
#按照成绩排序 sgrades=[(1001,89),(1002,77),(1003,99)] sgrades.sort(key=lambda m:m[1])#sort将每个元素传给lambda print(sgrades)
[(1002, 77), (1001, 89), (1003, 99)]