1.函数
def 函数名(形参1,形参2,...):
代码块
位置实参:按顺序进行关联到形参的方式。
关键字实参:将参数与形参名关联起来的方式。
def fun1(name,age):
print(name,age)
def fun2(food,size):
print(food,size)
fun1('wang',20)#位置实参
fun2(food='apple',size=100)#关键字实参,顺序可改变
默认值:每个形参都可以由默认值,若不给此形参传参,则使用默认值。在使用默认值时,必须在形参列表中先列出没有默认值的形参。
def fun3(name,age=18):
print(name,age)
fun3('zhao')
输出zhao 18
返回值:return返回,可返回任何类型的值
形参可以是列表等数据结构,在函数中可以做到对列表的修改,若不想被修改则可以将列表的副本传参([:])
传递任意数量的实参:只有一个形参*args
def fun4(*args):
for arg in args:
print(arg,end=" ")
fun4('a','rshg',1,4,66.7)
结合使用位置形参和任意数量的实参:python会先匹配位置实参和关键字实参,然后将多余的实参传给*args
def fun5(name,*args):
print(name,end=" ")
for arg in args:
print(arg,end=" ")
fun5('zhao',1,2,3,4)
使用任意数量的关键字实参:**kwargs,能够接收任意数量的键值对。**kwargs会创建一个字典
def fun6(name,age,**kwargs):
print(name,age)
for key,value in kwargs.items():
print(key,value)
fun6('wang',20,
school='qau',
home='earth'
)
#或者
dict={'name':'john','age':18)
fun6('wang',29,**dict)
将函数存储在模块中:import
模块的拓展名为.py
语法:import 模块名
不加.py
还可以导入特定的函数
from 模块名 import 函数名
只写函数名,不加括号
逗号分隔可导入多个函数
from 模块名 import 函数1,函数2
重命名
给函数重命名
from 模块名 import 函数1 as fun1
给模块重命名
import 模块名 as mk_name
导入模块中所有函数
from 模块名 import *
2.参数
对于不可类型,在函数中修改全局变量,全局变量并不会被改变,想要修改全局变量,则要使用关键字global来修饰变量,这样才可以在函数中修改全局变量。
Python中参数的传递是引用传递,不是值传递,每当为变量赋值时,会在内存中开辟新的内存地址给变量内容,而变量名相当于一个标签,它会贴在内存地址上,当为它重新赋值时,新的变量又会在内存中分配新的地址,变量名又会贴在新的变量地址上。(利用id()函数查看变量地址)
对于可变类型如列表等,对变量的修改,函数内函数外都会同步变化,地址不变。
3.匿名函数
Python中使用lambda关键字创建匿名函数。所谓匿名就是不用def创建没有函数名的函数。匿名函数自带return,返回值就是执行表达式的结果。
lambda 参赛1,参数2,参数3:执行表达式
test=lambda x,y:x+y
test(1,3)
test(4,5)
匿名函数是通过变量去调用的。
可以声明完直接调用
ans=(lambda x,y:x if x>y else y)(16,12)
print(ans)
4.常用的数学函数
abs() | 求绝对值函数 |
round() | 对浮点数近似取值,第一个参数为值,第二个为保留的位数(四舍五入) |
pow() | 求次方 |
divmod() | 求商和余数,返回包含商和余数的元组 |
max() | 求最大值 |
min() | 求最小值 |
sum() | 求和,参数可以是列表元组集合 |
eval() | 执行字符串表达式 |
a,b=1,2
c=eval('a+b')
print(c)
eval()也可以调用函数
def fun():
print(hello)
pass
eval('fun()')
5.可迭代对象
在python中,可迭代指可以被迭代器遍历的对象,可迭代对象可以是列表,元组,集合和字符串.当使用for来遍历这些对象时,python将自动创建一个迭代器.可迭代的对象不一定是迭代器,可迭代是一个容器,而迭代器是访问该元素的机制.
6.序列操作
all():用于判断给定的可迭代参数中的所有元素都为True,若都是True则返回True,否则返回False.(0,空,False为空)
>>>li=[1,2,3]
>>>print(all(li))
True
注意:空元组,空列表返回True.
any():判断给定的可迭代参数是否全为False,则返回False,若有一个为True,则返回True.
>>>li=[1,2,3,0]
>>>print(any(li))
True
sorted():对可迭代对象进行排序.sorted()会生成一个原对象的副本进行排序,而sort()是在原对象上进行排序.sort()只能用于列表,而sorted()可用于可迭代对象.
list.sort()
sorted(list)
>>>sorted([1,2,6,3,10,5])
[1,2,3,5,6,10]
>>>sorted([1,2,6,3,10,5],reserve=True)
[10,6,5,3,2,1]
reserve=True,降序,默认
reserve=False,升序
对元组排序会返回列表。
reserve():反向列表中的元素,无返回值
list.reverse()
>>>a=[1,2,3,4]
>>>a.reverse()
>>>print(a)
[4,3,2,1]
range():创建一个整数列表
range(start,stop,step)
start:默认为0,eg:range(5)=range(0,5)
stop:生成的数不包含stop
step:步长,默认为1
>>>for i in range(0,5)
... print(i)
输出0,1,2,3,4
zip():打包,将序列中对应的索引位置的元素打包成一个元组,若元素个数不一,那么按照最少的那个元素个数进行压缩。
enumerate():将一个可遍历的数据对象组合为一个索引序列,同时列出数据与数据下标(对字典也可用)
enumerate(sequence,(start))
sequence:序列
start:开始的起始位置,默认为0
返回enumerate对象